summaryrefslogtreecommitdiffhomepage
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/cbi.js20
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/ui.js6
-rw-r--r--modules/luci-base/po/bg/base.po94
-rw-r--r--modules/luci-base/po/ca/base.po97
-rw-r--r--modules/luci-base/po/cs/base.po97
-rw-r--r--modules/luci-base/po/de/base.po105
-rw-r--r--modules/luci-base/po/el/base.po97
-rw-r--r--modules/luci-base/po/en/base.po97
-rw-r--r--modules/luci-base/po/es/base.po147
-rw-r--r--modules/luci-base/po/fr/base.po97
-rw-r--r--modules/luci-base/po/he/base.po97
-rw-r--r--modules/luci-base/po/hi/base.po94
-rw-r--r--modules/luci-base/po/hu/base.po97
-rw-r--r--modules/luci-base/po/it/base.po97
-rw-r--r--modules/luci-base/po/ja/base.po97
-rw-r--r--modules/luci-base/po/ko/base.po94
-rw-r--r--modules/luci-base/po/mr/base.po94
-rw-r--r--modules/luci-base/po/ms/base.po94
-rw-r--r--modules/luci-base/po/no/base.po97
-rw-r--r--modules/luci-base/po/pl/base.po101
-rw-r--r--modules/luci-base/po/pt-br/base.po97
-rw-r--r--modules/luci-base/po/pt/base.po97
-rw-r--r--modules/luci-base/po/ro/base.po97
-rw-r--r--modules/luci-base/po/ru/base.po99
-rw-r--r--modules/luci-base/po/sk/base.po94
-rw-r--r--modules/luci-base/po/sv/base.po97
-rw-r--r--modules/luci-base/po/templates/base.pot94
-rw-r--r--modules/luci-base/po/tr/base.po97
-rw-r--r--modules/luci-base/po/uk/base.po97
-rw-r--r--modules/luci-base/po/vi/base.po97
-rw-r--r--modules/luci-base/po/zh-cn/base.po97
-rw-r--r--modules/luci-base/po/zh-tw/base.po97
-rw-r--r--modules/luci-base/root/usr/share/luci/menu.d/luci-base.json4
-rw-r--r--modules/luci-base/src/Makefile16
-rw-r--r--modules/luci-base/src/contrib/lemon.c5040
-rw-r--r--modules/luci-base/src/contrib/lempar.c851
-rw-r--r--modules/luci-base/src/plural_formula.y43
-rw-r--r--modules/luci-base/src/po2lmo.c215
-rw-r--r--modules/luci-base/src/template_lmo.c307
-rw-r--r--modules/luci-base/src/template_lmo.h12
-rw-r--r--modules/luci-base/src/template_lualib.c30
-rw-r--r--modules/luci-base/src/template_utils.c20
-rw-r--r--modules/luci-compat/luasrc/view/cbi/upload.htm3
-rw-r--r--modules/luci-mod-status/src/Makefile2
-rw-r--r--modules/luci-mod-status/src/luci-bwc.c80
-rw-r--r--modules/luci-mod-system/luasrc/controller/admin/system.lua2
46 files changed, 7992 insertions, 1612 deletions
diff --git a/modules/luci-base/htdocs/luci-static/resources/cbi.js b/modules/luci-base/htdocs/luci-static/resources/cbi.js
index ff198027e3..d962a1d1af 100644
--- a/modules/luci-base/htdocs/luci-static/resources/cbi.js
+++ b/modules/luci-base/htdocs/luci-static/resources/cbi.js
@@ -94,8 +94,24 @@ function sfh(s) {
return (0x100000000 + hash).toString(16).substr(1);
}
-function _(s) {
- return (window.TR && TR[sfh(String(s).trim().replace(/[ \t\n]+/g, ' '))]) || s;
+var plural_function = null;
+
+function trimws(s) {
+ return String(s).trim().replace(/[ \t\n]+/g, ' ');
+}
+
+function _(s, c) {
+ return (window.TR && TR[sfh(trimws(s))]) || s;
+}
+
+function N_(n, s, p, c) {
+ if (plural_function == null && window.TR)
+ plural_function = new Function('n', (TR['00000000'] || 'plural=(n != 1);') + 'return +plural');
+
+ var i = plural_function ? plural_function(n) : (n != 1),
+ k = (c != null ? trimws(c) + '\u0001' : '') + trimws(s) + '\u0002' + i.toString();
+
+ return (window.TR && TR[sfh(k)]) || (i ? p : s);
}
diff --git a/modules/luci-base/htdocs/luci-static/resources/ui.js b/modules/luci-base/htdocs/luci-static/resources/ui.js
index 08edaa1475..7cf4f4102f 100644
--- a/modules/luci-base/htdocs/luci-static/resources/ui.js
+++ b/modules/luci-base/htdocs/luci-static/resources/ui.js
@@ -1919,6 +1919,8 @@ var UIFileUpload = UIElement.extend({
button.style.display = '';
this.node.dispatchEvent(new CustomEvent('cbi-fileupload-cancel', {}));
+
+ ev.preventDefault();
},
handleReset: function(ev) {
@@ -1962,9 +1964,9 @@ var UIFileUpload = UIElement.extend({
handleFileBrowser: function(ev) {
var button = ev.target,
browser = button.nextElementSibling,
- path = this.stat ? this.stat.path.replace(/\/[^\/]+$/, '') : this.options.root_directory;
+ path = this.stat ? this.stat.path.replace(/\/[^\/]+$/, '') : (this.options.initial_directory || this.options.root_directory);
- if (this.options.root_directory.indexOf(path) != 0)
+ if (path.indexOf(this.options.root_directory) != 0)
path = this.options.root_directory;
ev.preventDefault();
diff --git a/modules/luci-base/po/bg/base.po b/modules/luci-base/po/bg/base.po
index 7d96fbc6eb..90162e99de 100644
--- a/modules/luci-base/po/bg/base.po
+++ b/modules/luci-base/po/bg/base.po
@@ -19,7 +19,7 @@ msgstr ""
msgid "%d Bit"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr ""
@@ -54,7 +54,7 @@ msgstr ""
msgid "-- Additional Field --"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -65,7 +65,7 @@ msgstr ""
msgid "-- Please choose --"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -191,7 +191,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr ""
@@ -632,16 +631,16 @@ msgstr ""
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -862,7 +861,7 @@ msgid "Bring up on boot"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr ""
@@ -894,7 +893,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -960,11 +959,11 @@ msgstr ""
msgid "Chain"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr ""
@@ -1102,16 +1101,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr ""
@@ -1158,7 +1157,7 @@ msgstr ""
msgid "Continue"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1355,10 +1354,6 @@ msgstr ""
msgid "Default state"
msgstr ""
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr ""
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1444,7 +1439,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr ""
@@ -1527,9 +1522,9 @@ msgid "Disconnection attempt failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1928,7 +1923,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2822,6 +2817,10 @@ msgstr ""
msgid "LCP echo interval"
msgstr ""
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr ""
@@ -2876,7 +2875,7 @@ msgstr ""
msgid "Leave empty to use the current WAN address"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr ""
@@ -2973,7 +2972,7 @@ msgstr ""
msgid "Load Average"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3387,9 +3386,8 @@ msgid "NTP server candidates"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3657,11 +3655,11 @@ msgstr ""
msgid "Operating frequency"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr ""
@@ -4043,7 +4041,7 @@ msgstr ""
msgid "Please enter your username and password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4476,19 +4474,19 @@ msgstr ""
msgid "Reveal/hide password"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr ""
@@ -4601,7 +4599,7 @@ msgid "Save"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr ""
@@ -4623,11 +4621,11 @@ msgstr ""
msgid "Scheduled Tasks"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr ""
@@ -4644,7 +4642,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4758,7 +4756,7 @@ msgstr ""
msgid "Signal:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr ""
@@ -4871,7 +4869,7 @@ msgstr ""
msgid "Start priority"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5097,7 +5095,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5257,7 +5255,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5571,7 +5569,7 @@ msgstr ""
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr ""
@@ -5597,7 +5595,7 @@ msgstr ""
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5621,12 +5619,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
diff --git a/modules/luci-base/po/ca/base.po b/modules/luci-base/po/ca/base.po
index 2721228c1f..7fe1f9b088 100644
--- a/modules/luci-base/po/ca/base.po
+++ b/modules/luci-base/po/ca/base.po
@@ -23,7 +23,7 @@ msgstr "%.1f dB"
msgid "%d Bit"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr ""
@@ -58,7 +58,7 @@ msgstr "(sense interfícies adjuntes)"
msgid "-- Additional Field --"
msgstr "-- Camp addicional --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -69,7 +69,7 @@ msgstr "-- Camp addicional --"
msgid "-- Please choose --"
msgstr "-- Escolliu, si us plau --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -199,7 +199,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "Configuració dels <abbr title=\"Light Emitting Diode\">LED</abbr>s"
@@ -654,16 +653,16 @@ msgstr "Qualsevol zona"
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -887,7 +886,7 @@ msgid "Bring up on boot"
msgstr "Aixecar a l'engegada"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr ""
@@ -919,7 +918,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -985,11 +984,11 @@ msgstr ""
msgid "Chain"
msgstr "Cadena"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Canvis"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr ""
@@ -1135,16 +1134,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Configuració"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr ""
@@ -1191,7 +1190,7 @@ msgstr ""
msgid "Continue"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1390,10 +1389,6 @@ msgstr ""
msgid "Default state"
msgstr "Estat per defecte"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Definiu el nom d'aquesta xarxa"
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1479,7 +1474,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr ""
@@ -1564,9 +1559,9 @@ msgid "Disconnection attempt failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1974,7 +1969,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2882,6 +2877,10 @@ msgstr "Llindar de fracàs d'eco LCP"
msgid "LCP echo interval"
msgstr "Interval d'eco LCP"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -2936,7 +2935,7 @@ msgstr "Deixeu-ho en blanc per autodetectar"
msgid "Leave empty to use the current WAN address"
msgstr "Deixeu-ho en blanc per utilitzar l'adreça WAN actual"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "Llegenda:"
@@ -3035,7 +3034,7 @@ msgstr "Càrrega"
msgid "Load Average"
msgstr "Càrrega mitjana"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3451,9 +3450,8 @@ msgid "NTP server candidates"
msgstr "Candidats de servidor NTP"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3721,11 +3719,11 @@ msgstr ""
msgid "Operating frequency"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Opció canviada"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Opció treta"
@@ -4107,7 +4105,7 @@ msgstr "Paquets"
msgid "Please enter your username and password."
msgstr "Si us plau entra el teu nom d'usuari i contrasenya."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4542,19 +4540,19 @@ msgstr "Restaura còpia de seguretat"
msgid "Reveal/hide password"
msgstr "Mostra/amaga la contrasenya"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Reverteix"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr ""
@@ -4669,7 +4667,7 @@ msgid "Save"
msgstr "Desa"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Desa i aplica"
@@ -4691,11 +4689,11 @@ msgstr "Escaneja"
msgid "Scheduled Tasks"
msgstr "Tasques programades"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Secció afegida"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Secció treta"
@@ -4712,7 +4710,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4826,7 +4824,7 @@ msgstr ""
msgid "Signal:"
msgstr "Senyal:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Mida"
@@ -4939,7 +4937,7 @@ msgstr "Inici"
msgid "Start priority"
msgstr "Prioritat d'inici"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5167,7 +5165,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5340,7 +5338,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5669,7 +5667,7 @@ msgstr ""
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Canvis sense desar"
@@ -5695,7 +5693,7 @@ msgstr "Tipus de protocol no suportat."
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5719,12 +5717,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
@@ -6618,6 +6616,9 @@ msgstr "sí"
msgid "« Back"
msgstr "« Enrere"
+#~ msgid "Define a name for this network."
+#~ msgstr "Definiu el nom d'aquesta xarxa"
+
#~ msgid "Bad address specified!"
#~ msgstr "Adreça mal especificada!"
diff --git a/modules/luci-base/po/cs/base.po b/modules/luci-base/po/cs/base.po
index 716b49c6ec..5c6c772cd1 100644
--- a/modules/luci-base/po/cs/base.po
+++ b/modules/luci-base/po/cs/base.po
@@ -20,7 +20,7 @@ msgstr "%.1f dB"
msgid "%d Bit"
msgstr "%d bitů"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "%d neplatné/á pole"
@@ -55,7 +55,7 @@ msgstr "(bez rozhraní připojení)"
msgid "-- Additional Field --"
msgstr "-- Doplňující pole --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -66,7 +66,7 @@ msgstr "-- Doplňující pole --"
msgid "-- Please choose --"
msgstr "-- Prosím vyberte --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -197,7 +197,6 @@ msgstr ""
"(šestnáctkový)"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Konfigurace"
@@ -659,16 +658,16 @@ msgstr "Libovolná zóna"
msgid "Apply backup?"
msgstr "Aplikovat zálohu?"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr "Provádění požadavku selhalo se stavem <code>%h</code>"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr "Přesto aplikovat"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr "Aplikuji změny nastavení… %ds"
@@ -900,7 +899,7 @@ msgid "Bring up on boot"
msgstr "Zapnout po startu"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr "Procházet…"
@@ -933,7 +932,7 @@ msgid "Call failed"
msgstr "Volání selhalo"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -999,11 +998,11 @@ msgstr ""
msgid "Chain"
msgstr "Řetěz"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Změny"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr "Změny byly vráceny zpět."
@@ -1159,16 +1158,16 @@ msgstr ""
"robustnosti při vyjednávání klíče, obzvláště v prostředích s velkým síťovým "
"provozem."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Nastavení"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr "Změny nastavení byly provedeny."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr "Změny nastavení byly vráceny zpět!"
@@ -1215,7 +1214,7 @@ msgstr "Obsah byl uložen."
msgid "Continue"
msgstr "Pokračovat"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1419,10 +1418,6 @@ msgstr "Výchozí hodnota je bezstavový + stavový"
msgid "Default state"
msgstr "Výchozí stav"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Jméno sítě."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1510,7 +1505,7 @@ msgstr "Zařízení není aktivní"
msgid "Device is restarting…"
msgstr "Zařízení se restartuje…"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr "Zařízení není dostupné!"
@@ -1595,9 +1590,9 @@ msgid "Disconnection attempt failed"
msgstr "Odpojení selhalo"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -2017,7 +2012,7 @@ msgstr "Fast Transition protokol"
msgid "Failed to change the system password."
msgstr "Nepodařilo se změnit systémové heslo."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
#, fuzzy
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2934,6 +2929,10 @@ msgstr "LCP echo prahová hodnota selhání"
msgid "LCP echo interval"
msgstr "LCP interval upozornění"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -2988,7 +2987,7 @@ msgstr "Ponechte prázdné pro automatickou detekci"
msgid "Leave empty to use the current WAN address"
msgstr "Ponecháte-li prázdné, použije stávající WAN adresu"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "Legenda:"
@@ -3104,7 +3103,7 @@ msgstr "Zátěž"
msgid "Load Average"
msgstr "Průměrná zátěž"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr "Načítání obsahu adresáře…"
@@ -3530,9 +3529,8 @@ msgid "NTP server candidates"
msgstr "Kandidáti NTP serveru"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3801,11 +3799,11 @@ msgstr "OpenConnect (CISCO AnyConnect)"
msgid "Operating frequency"
msgstr "Provozní frekvence"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Volba změněna"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Volba odstraněna"
@@ -4203,7 +4201,7 @@ msgstr "paketů"
msgid "Please enter your username and password."
msgstr "Prosím vložte vaše uživatelské jméno a heslo."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr "Vyberte soubor, který chcete nahrát."
@@ -4657,19 +4655,19 @@ msgstr "Obnovit ze zálohy"
msgid "Reveal/hide password"
msgstr "Odhalit/skrýt heslo"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Vrátit zpět"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr "Vrátit změny"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr "Požadavek na vrácení se nezdařil se stavem <code>%h</code>"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr "Vracení konfigurace…"
@@ -4783,7 +4781,7 @@ msgid "Save"
msgstr "Uložit"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Uložit & použít"
@@ -4805,11 +4803,11 @@ msgstr "Skenovat"
msgid "Scheduled Tasks"
msgstr "Naplánované úlohy"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Přidána sekce"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Sekce odebrána"
@@ -4829,7 +4827,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr "Vybrat soubor…"
@@ -4947,7 +4945,7 @@ msgstr "Útlum signálu (SATN)"
msgid "Signal:"
msgstr "Signál:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Velikost"
@@ -5072,7 +5070,7 @@ msgstr "Start"
msgid "Start priority"
msgstr "Priorita spouštění"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr "Provádění konfiguračních změn…"
@@ -5308,7 +5306,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr "Konfigurační soubor nelze načíst z důvodu následující chyby:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5503,7 +5501,7 @@ msgstr ""
msgid "There are no active leases"
msgstr "Žádné aktivní zápůjčky"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr "Žádné změny k provedení"
@@ -5846,7 +5844,7 @@ msgstr "Odpojit"
msgid "Unnamed key"
msgstr "Nepojmenovaný klíč"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Neuložené změny"
@@ -5872,7 +5870,7 @@ msgstr "Nepodporovaný typ protokolu."
msgid "Up"
msgstr "Nahoru"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr "Nahrát"
@@ -5898,12 +5896,12 @@ msgid "Upload file…"
msgstr "Nahrát soubor…"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr "Požadavek na nahrání selhal: %s"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr "Nahrávání souboru…"
@@ -6810,6 +6808,9 @@ msgstr "ano"
msgid "« Back"
msgstr "« Zpět"
+#~ msgid "Define a name for this network."
+#~ msgstr "Jméno sítě."
+
#~ msgid "Bad address specified!"
#~ msgstr "Zadána neplatná adresa!"
diff --git a/modules/luci-base/po/de/base.po b/modules/luci-base/po/de/base.po
index 08e7b4981f..ff6f7bd4dd 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-01-19 16:25+0000\n"
-"Last-Translator: Jo <jo@mein.io>\n"
+"PO-Revision-Date: 2020-01-25 05:04+0000\n"
+"Last-Translator: frauhottelmann <frauhottelmann@gmail.com>\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 3.10.2\n"
+"X-Generator: Weblate 3.11-dev\n"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:910
msgid "%.1f dB"
@@ -23,7 +23,7 @@ msgstr "%.1f dB"
msgid "%d Bit"
msgstr "%d Bit"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "%d ungültige Felder"
@@ -58,7 +58,7 @@ msgstr "(keine Schnittstellen)"
msgid "-- Additional Field --"
msgstr "-- Zusätzliches Feld --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -69,7 +69,7 @@ msgstr "-- Zusätzliches Feld --"
msgid "-- Please choose --"
msgstr "-- Bitte auswählen --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -201,7 +201,6 @@ msgstr ""
"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hexadezimal)"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Konfiguration"
@@ -668,18 +667,18 @@ msgstr "Beliebige Zone"
msgid "Apply backup?"
msgstr "Backup anwenden?"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
"Anforderung zur Anwendung der Änderungen mit Status <code>%h</code> "
"fehlgeschlagen"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr "Ungeprüft übernehmen"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr "Warte auf das Anwenden der Konfiguration… %ds"
@@ -911,7 +910,7 @@ msgid "Bring up on boot"
msgstr "Während des Bootvorgangs starten"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr "Durchsuchen…"
@@ -945,7 +944,7 @@ msgid "Call failed"
msgstr "Anruf fehlgeschlagen"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -1011,11 +1010,11 @@ msgstr ""
msgid "Chain"
msgstr "Kette (Chain)"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Änderungen"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr "Änderungen wurden verworfen."
@@ -1171,16 +1170,16 @@ msgstr ""
"Kompatibilitätsprobleme verursachen und die Zuverlässigkeit von "
"Schlüsselerneuerungen in ausgelasteten Umgebungen verringern."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Konfiguration"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr "Die Konfiguration wurde angewendet."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr "Die Konfiguration wurde zurückgerollt!"
@@ -1227,7 +1226,7 @@ msgstr "Inhalte wurden gespeichert."
msgid "Continue"
msgstr "Fortfahren"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1433,10 +1432,6 @@ msgstr "Der Standardwert ist zustandslos und zustandsorientiert"
msgid "Default state"
msgstr "Ausgangszustand"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Definiert einen Namen für dieses Netzwerk."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1524,7 +1519,7 @@ msgstr "Netzwerkadapter ist nicht aktiv"
msgid "Device is restarting…"
msgstr "Netzwerkadapter startet neu…"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr "Das Gerät ist nicht erreichbar!"
@@ -1609,9 +1604,9 @@ msgid "Disconnection attempt failed"
msgstr "Verbindungstrennung fehlgeschlagen"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -2036,7 +2031,7 @@ msgstr "FT Protokoll"
msgid "Failed to change the system password."
msgstr "Das Systempasswort konnte nicht geändert werden."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
"Konnte nicht innerhalb von %d Sekunden bestätigen, warte auf Zurückrollen "
@@ -2958,6 +2953,10 @@ msgstr "LCP Echo Fehler Schwellenwert"
msgid "LCP echo interval"
msgstr "LCP Echo Intervall"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -3012,7 +3011,7 @@ msgstr "Zur automatischen Erkennung leer lassen"
msgid "Leave empty to use the current WAN address"
msgstr "Leer lassen um die aktuelle WAN-Adresse zu verwenden"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "Legende:"
@@ -3127,7 +3126,7 @@ msgstr "Last"
msgid "Load Average"
msgstr "Durchschnittslast"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr "Lade Verzeichniseinträge…"
@@ -3550,9 +3549,8 @@ msgid "NTP server candidates"
msgstr "NTP Server Kandidaten"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3822,11 +3820,11 @@ msgstr "OpenConnect (CISCO AnyConnect)"
msgid "Operating frequency"
msgstr "Betriebsfrequenz"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Option geändert"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Option entfernt"
@@ -4224,7 +4222,7 @@ msgstr "Pkte."
msgid "Please enter your username and password."
msgstr "Bitte Benutzernamen und Passwort eingeben."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr "Bitte wählen Sie die hochzuladende Datei aus."
@@ -4462,7 +4460,7 @@ msgstr "DNS-Rebind-Schutz"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:13
#: modules/luci-mod-system/luasrc/controller/admin/system.lua:30
msgid "Reboot"
-msgstr "Neu Starten"
+msgstr "Neu starten"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:149
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:158
@@ -4683,19 +4681,19 @@ msgstr "Sicherung wiederherstellen"
msgid "Reveal/hide password"
msgstr "Passwort zeigen/verstecken"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Verwerfen"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr "Änderungen verwerfen"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr "Anforderung zum Verwerfen mit Status <code>%h</code> fehlgeschlagen"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr "Verwerfe Konfigurationsänderungen…"
@@ -4810,7 +4808,7 @@ msgid "Save"
msgstr "Speichern"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Speichern & Anwenden"
@@ -4832,11 +4830,11 @@ msgstr "Suche"
msgid "Scheduled Tasks"
msgstr "Geplante Aufgaben"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Sektion hinzugefügt"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Sektion entfernt"
@@ -4856,7 +4854,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr "Datei auswählen…"
@@ -4975,7 +4973,7 @@ msgstr "Signaldämpfung (SATN)"
msgid "Signal:"
msgstr "Signal:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Größe"
@@ -5103,7 +5101,7 @@ msgstr "Start"
msgid "Start priority"
msgstr "Startpriorität"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr "Starte Anwendung der Konfigurationsänderungen…"
@@ -5346,7 +5344,7 @@ msgstr ""
"Die Konfigurationsdatei konnte aufgrund der folgenden Fehler nicht geladen "
"werden:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5553,7 +5551,7 @@ msgstr ""
msgid "There are no active leases"
msgstr "Es gibt keine aktiven Leases"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr "Es gibt keine anzuwendenden Änderungen"
@@ -5899,7 +5897,7 @@ msgstr "Aushängen"
msgid "Unnamed key"
msgstr "Unbenannter Schlüssel"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Ungespeicherte Änderungen"
@@ -5925,7 +5923,7 @@ msgstr "Nicht unterstützter Protokolltyp."
msgid "Up"
msgstr "Hoch"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr "Hochladen"
@@ -5951,12 +5949,12 @@ msgid "Upload file…"
msgstr "Datei hochladen…"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr "Upload-Anfrage fehlgeschlagen: %s"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr "Datei wird hochgeladen…"
@@ -6867,6 +6865,9 @@ msgstr "ja"
msgid "« Back"
msgstr "« Zurück"
+#~ msgid "Define a name for this network."
+#~ msgstr "Definiert einen Namen für dieses Netzwerk."
+
#~ msgid "Bad address specified!"
#~ msgstr "Ungültige Adresse angegeben!"
diff --git a/modules/luci-base/po/el/base.po b/modules/luci-base/po/el/base.po
index fa3524655d..ee4f8e3818 100644
--- a/modules/luci-base/po/el/base.po
+++ b/modules/luci-base/po/el/base.po
@@ -22,7 +22,7 @@ msgstr "%.1f dB"
msgid "%d Bit"
msgstr "%d Bit"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "%d μη έγκυρο/α πεδίο/α"
@@ -57,7 +57,7 @@ msgstr "(χωρίς προσαρτημένες διεπαφές)"
msgid "-- Additional Field --"
msgstr "-- Επιπλέον Πεδίο --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -68,7 +68,7 @@ msgstr "-- Επιπλέον Πεδίο --"
msgid "-- Please choose --"
msgstr "-- Παρακαλώ επιλέξτε --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -198,7 +198,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "Παραμετροποίηση <abbr title=\"Light Emitting Diode\">LED</abbr>"
@@ -656,16 +655,16 @@ msgstr "Οιαδήποτε ζώνη"
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -890,7 +889,7 @@ msgid "Bring up on boot"
msgstr "Ανέβασμα κατά την εκκίνηση"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr ""
@@ -922,7 +921,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -988,11 +987,11 @@ msgstr ""
msgid "Chain"
msgstr "Αλυσίδα"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Αλλαγές"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr ""
@@ -1139,16 +1138,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Διαμόρφωση"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr ""
@@ -1195,7 +1194,7 @@ msgstr ""
msgid "Continue"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1394,10 +1393,6 @@ msgstr ""
msgid "Default state"
msgstr "Προεπιλεγμένη κατάσταση"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Ορίστε ένα όνομα για αυτό το δίκτυο."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1485,7 +1480,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr ""
@@ -1570,9 +1565,9 @@ msgid "Disconnection attempt failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1990,7 +1985,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2902,6 +2897,10 @@ msgstr ""
msgid "LCP echo interval"
msgstr ""
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -2956,7 +2955,7 @@ msgstr "Αφήστε το κενό για να γίνει αυτόματη αν
msgid "Leave empty to use the current WAN address"
msgstr "Αφήστε το κενό για να γίνει χρήση της τρέχουσας διεύθυνσης WAN"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "Υπόμνημα:"
@@ -3053,7 +3052,7 @@ msgstr "Φόρτος"
msgid "Load Average"
msgstr "Μέσος όρος φόρτου"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3470,9 +3469,8 @@ msgid "NTP server candidates"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3740,11 +3738,11 @@ msgstr ""
msgid "Operating frequency"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Η επιλογή άλλαξε"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Η επιλογή αφαιρέθηκε"
@@ -4126,7 +4124,7 @@ msgstr "Πκτ."
msgid "Please enter your username and password."
msgstr "Παρακαλώ εισάγετε όνομα χρήστη και κωδικό πρόσβασης."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4562,19 +4560,19 @@ msgstr "Επαναφορά αντιγράφου ασφαλείας"
msgid "Reveal/hide password"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Αναίρεση"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr ""
@@ -4690,7 +4688,7 @@ msgid "Save"
msgstr "Αποθήκευση"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Αποθήκευση & Εφαρμογή"
@@ -4712,11 +4710,11 @@ msgstr "Σάρωση"
msgid "Scheduled Tasks"
msgstr "Προγραμματισμένες Εργασίες"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr ""
@@ -4733,7 +4731,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4847,7 +4845,7 @@ msgstr ""
msgid "Signal:"
msgstr "Σήμα:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Μέγεθος"
@@ -4960,7 +4958,7 @@ msgstr "Αρχή"
msgid "Start priority"
msgstr "Προτεραιότητα εκκίνησης"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5188,7 +5186,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5357,7 +5355,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5681,7 +5679,7 @@ msgstr ""
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Μη-αποθηκευμένες Αλλαγές"
@@ -5707,7 +5705,7 @@ msgstr ""
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5731,12 +5729,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
@@ -6627,6 +6625,9 @@ msgstr "ναι"
msgid "« Back"
msgstr "« Πίσω"
+#~ msgid "Define a name for this network."
+#~ msgstr "Ορίστε ένα όνομα για αυτό το δίκτυο."
+
#, fuzzy
#~ msgid "Bad address specified!"
#~ msgstr "Μη έγκυρη διεύθυνση!"
diff --git a/modules/luci-base/po/en/base.po b/modules/luci-base/po/en/base.po
index 5a8b0fb076..22bbff6c44 100644
--- a/modules/luci-base/po/en/base.po
+++ b/modules/luci-base/po/en/base.po
@@ -22,7 +22,7 @@ msgstr ""
msgid "%d Bit"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr ""
@@ -57,7 +57,7 @@ msgstr "(no interfaces attached)"
msgid "-- Additional Field --"
msgstr "-- Additional Field --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -68,7 +68,7 @@ msgstr "-- Additional Field --"
msgid "-- Please choose --"
msgstr "-- Please choose --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -198,7 +198,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
@@ -647,16 +646,16 @@ msgstr "Any zone"
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -880,7 +879,7 @@ msgid "Bring up on boot"
msgstr "Bring up on boot"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr ""
@@ -912,7 +911,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -978,11 +977,11 @@ msgstr ""
msgid "Chain"
msgstr "Chain"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Changes"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr ""
@@ -1128,16 +1127,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Configuration"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr ""
@@ -1184,7 +1183,7 @@ msgstr ""
msgid "Continue"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1383,10 +1382,6 @@ msgstr ""
msgid "Default state"
msgstr "Default state"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Define a name for this network."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1475,7 +1470,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr ""
@@ -1558,9 +1553,9 @@ msgid "Disconnection attempt failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1968,7 +1963,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2872,6 +2867,10 @@ msgstr ""
msgid "LCP echo interval"
msgstr ""
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr ""
@@ -2926,7 +2925,7 @@ msgstr ""
msgid "Leave empty to use the current WAN address"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr ""
@@ -3023,7 +3022,7 @@ msgstr "Load"
msgid "Load Average"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3439,9 +3438,8 @@ msgid "NTP server candidates"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3709,11 +3707,11 @@ msgstr ""
msgid "Operating frequency"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr ""
@@ -4095,7 +4093,7 @@ msgstr "Pkts."
msgid "Please enter your username and password."
msgstr "Please enter your username and password."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4530,19 +4528,19 @@ msgstr "Restore backup"
msgid "Reveal/hide password"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Revert"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr ""
@@ -4657,7 +4655,7 @@ msgid "Save"
msgstr "Save"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Save & Apply"
@@ -4679,11 +4677,11 @@ msgstr "Scan"
msgid "Scheduled Tasks"
msgstr "Scheduled Tasks"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr ""
@@ -4700,7 +4698,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4814,7 +4812,7 @@ msgstr ""
msgid "Signal:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Size"
@@ -4927,7 +4925,7 @@ msgstr "Start"
msgid "Start priority"
msgstr "Start priority"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5153,7 +5151,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5322,7 +5320,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5643,7 +5641,7 @@ msgstr ""
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Unsaved Changes"
@@ -5669,7 +5667,7 @@ msgstr ""
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5693,12 +5691,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
@@ -6588,6 +6586,9 @@ msgstr ""
msgid "« Back"
msgstr "« Back"
+#~ msgid "Define a name for this network."
+#~ msgstr "Define a name for this network."
+
#~ msgid "Bad address specified!"
#~ msgstr "Bad address specified!"
diff --git a/modules/luci-base/po/es/base.po b/modules/luci-base/po/es/base.po
index 03d791c5d4..965f2c3d24 100644
--- a/modules/luci-base/po/es/base.po
+++ b/modules/luci-base/po/es/base.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2020-01-17 07:26+0000\n"
+"PO-Revision-Date: 2020-01-26 12:41+0000\n"
"Last-Translator: Franco Castillo <castillofrancodamian@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/openwrt/luci/es/>"
"\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 3.10.2-dev\n"
+"X-Generator: Weblate 3.11-dev\n"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:910
msgid "%.1f dB"
@@ -23,7 +23,7 @@ msgstr "%.1f dB"
msgid "%d Bit"
msgstr "%d Bit"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "%d campo(s) inválido(s)"
@@ -58,7 +58,7 @@ msgstr "(Sin interfaces conectadas)"
msgid "-- Additional Field --"
msgstr "-- Campo adicional --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -69,7 +69,7 @@ msgstr "-- Campo adicional --"
msgid "-- Please choose --"
msgstr "-- Por favor elija --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -202,7 +202,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr "Sufijo (hex)<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "Configuración de <abbr title=\"Light Emitting Diode\">LEDs</abbr>"
@@ -668,16 +667,16 @@ msgstr "Cualquier zona"
msgid "Apply backup?"
msgstr "¿Aplicar respaldo?"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr "Solicitud de aplicar fallida con estado <code>%h</code>"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr "Aplicar sin restricción"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr "Esperando a que se aplique la configuración… %ds"
@@ -912,7 +911,7 @@ msgid "Bring up on boot"
msgstr "Iniciar en el arranque"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr "Explorar…"
@@ -945,7 +944,7 @@ msgid "Call failed"
msgstr "Llamada fallida"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -1021,11 +1020,11 @@ msgstr ""
msgid "Chain"
msgstr "Cadena"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Cambios"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr "Se revirtieron los cambios."
@@ -1081,7 +1080,7 @@ msgid ""
"Choose the network(s) you want to attach to this wireless interface or fill "
"out the <em>create</em> field to define a new network."
msgstr ""
-"Elija la red o redes a las que quiere unir esta interfaz WiFi o rellene el "
+"Elija la red o redes a las que quiere unir esta interfaz Wi-Fi o rellene el "
"campo <em>crear</em> para definir una red nueva."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1058
@@ -1180,16 +1179,16 @@ msgstr ""
"interoperabilidad y reducir la robustez de la negociación de claves, "
"especialmente en entornos con una gran carga de tráfico."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Configuración"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr "Se ha aplicado la configuración."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr "¡La configuración ha sido revertida!"
@@ -1236,7 +1235,7 @@ msgstr "Los contenidos han sido guardados."
msgid "Continue"
msgstr "Continuar"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1245,7 +1244,7 @@ msgstr ""
"No se pudo recuperar el acceso al dispositivo después de aplicar los cambios "
"de configuración. Es posible que deba volver a conectarse si modificó la "
"configuración relacionada con la red, como la dirección IP o las "
-"credenciales de seguridad WiFi."
+"credenciales de seguridad Wi-Fi."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:138
msgid "Country"
@@ -1441,10 +1440,6 @@ msgstr "El valor predeterminado es Sin estado + Con estado"
msgid "Default state"
msgstr "Estado predeterminado"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Definir un nombre para esta red."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1533,7 +1528,7 @@ msgstr "El dispositivo no está activo"
msgid "Device is restarting…"
msgstr "El dispositivo se está reiniciando…"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr "Dispositivo inalcanzable!"
@@ -1618,9 +1613,9 @@ msgid "Disconnection attempt failed"
msgstr "Intento de desconexión fallido"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1782,7 +1777,7 @@ msgstr "Editar esta red"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:703
msgid "Edit wireless network"
-msgstr "Editar red WiFi"
+msgstr "Editar red Wi-Fi"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:168
msgid "Emergency"
@@ -2041,7 +2036,7 @@ msgstr "Protocolo FT"
msgid "Failed to change the system password."
msgstr "Error al cambiar la contraseña del sistema."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
"Error al confirmar aplicar dentro de %ds. Esperando a que se reviertan los "
@@ -2659,7 +2654,7 @@ msgstr ""
#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:74
#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:97
msgid "If unchecked, no default route is configured"
-msgstr "Si está desmarcado no se configurará una ruta por defecto"
+msgstr "Si no está marcado, no se configurará ninguna ruta predeterminada"
#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:37
#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:124
@@ -2673,7 +2668,7 @@ msgstr "Si está desmarcado no se configurará una ruta por defecto"
#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:100
msgid "If unchecked, the advertised DNS server addresses are ignored"
msgstr ""
-"Si está desmarcado, se usarán las direcciones de servidores DNS ingresadas"
+"Si no está marcado, las direcciones anunciadas del servidor DNS se ignoran"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:337
msgid ""
@@ -2900,7 +2895,7 @@ msgstr "Conectar"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1743
msgid "Join Network: Wireless Scan"
-msgstr "Conectarse a una red: Búsqueda de redes WiFi"
+msgstr "Conectarse a una red: Búsqueda de redes Wi-Fi"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1961
msgid "Joining Network: %q"
@@ -2962,6 +2957,10 @@ msgstr "Umbral de fracaso en eco LCP"
msgid "LCP echo interval"
msgstr "Intervalo de eco LCP"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr "Configuración de LEDs"
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -3016,7 +3015,7 @@ msgstr "Deje vacío para autodetectar"
msgid "Leave empty to use the current WAN address"
msgstr "Deje vacío para usar la dirección WAN actual"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "Registro de cambios:"
@@ -3122,13 +3121,13 @@ msgstr "Puerto de escucha para consultas DNS entrantes"
#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:66
#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:203
msgid "Load"
-msgstr "Cargar"
+msgstr "Carga"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:60
msgid "Load Average"
msgstr "Carga media"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr "Cargando el contenido del directorio…"
@@ -3552,9 +3551,8 @@ msgid "NTP server candidates"
msgstr "Servidores NTP a consultar"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3824,11 +3822,11 @@ msgstr "OpenConnect (CISCO AnyConnect)"
msgid "Operating frequency"
msgstr "Frecuencia de operación"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Opción cambiada"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Opción removida"
@@ -4225,7 +4223,7 @@ msgstr "Paq."
msgid "Please enter your username and password."
msgstr "Por favor, introduzca su nombre de usuario y contraseña."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr "Por favor, seleccione el archivo que desea cargar."
@@ -4524,7 +4522,7 @@ msgstr "Eliminar"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1934
msgid "Replace wireless configuration"
-msgstr "Cambiar la configuración WiFi"
+msgstr "Cambiar la configuración Wi-Fi"
#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:17
msgid "Request IPv6-address"
@@ -4589,8 +4587,8 @@ msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)"
msgstr ""
-"Requiere la versión completa de wpad/hostapd y soporte del controlador de "
-"wifi <br />(a partir de enero de 2019: ath9k, ath10k, mwlwifi y mt76)"
+"Requiere la versión completa de wpad/hostapd y soporte del controlador de Wi-"
+"Fi <br />(a partir de enero de 2019: ath9k, ath10k, mwlwifi y mt76)"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:217
msgid ""
@@ -4680,19 +4678,19 @@ msgstr "Restaurar copia de seguridad"
msgid "Reveal/hide password"
msgstr "Mostrar/ocultar contraseña"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Revertir"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr "Revertir cambios"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr "Error al revertir la solicitud con el estado <code>%h</code>"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr "Revirtiendo configuración…"
@@ -4807,7 +4805,7 @@ msgid "Save"
msgstr "Guardar"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Guardar y aplicar"
@@ -4829,11 +4827,11 @@ msgstr "Escanear"
msgid "Scheduled Tasks"
msgstr "Tareas programadas"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Sección añadida"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Sección removida"
@@ -4853,7 +4851,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr "Seleccionar archivo…"
@@ -4972,7 +4970,7 @@ msgstr "Atenuación de señal (SATN)"
msgid "Signal:"
msgstr "Señal:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Tamaño"
@@ -5099,13 +5097,13 @@ msgstr "Iniciar"
msgid "Start priority"
msgstr "Prioridad de inicio"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr "Iniciando aplicar configuración…"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1741
msgid "Starting wireless scan..."
-msgstr "Iniciando escaneo de WiFi..."
+msgstr "Iniciando escaneo de Wi-Fi..."
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:106
#: modules/luci-mod-system/luasrc/controller/admin/system.lua:19
@@ -5340,7 +5338,7 @@ msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
"El archivo de configuración no se pudo cargar debido al siguiente error:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5538,7 +5536,7 @@ msgstr ""
msgid "There are no active leases"
msgstr "No hay direcciones activas"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr "No hay cambios para aplicar"
@@ -5878,7 +5876,7 @@ msgstr "Desmontar"
msgid "Unnamed key"
msgstr "Clave sin nombre"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Cambios sin aplicar"
@@ -5904,9 +5902,9 @@ msgstr "Tipo de protocolo no soportado."
msgid "Up"
msgstr "Arriba"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
-msgstr "Subida"
+msgstr "Subir"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:403
msgid ""
@@ -5930,12 +5928,12 @@ msgid "Upload file…"
msgstr "Subir archivo…"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr "Error al cargar la solicitud: %s"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr "Cargando archivo…"
@@ -6258,51 +6256,51 @@ msgstr "WireGuard VPN"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:77
#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:84
msgid "Wireless"
-msgstr "WiFi"
+msgstr "Wi-Fi"
#: modules/luci-base/htdocs/luci-static/resources/network.js:2811
#: modules/luci-compat/luasrc/model/network.lua:1419
msgid "Wireless Adapter"
-msgstr "Adaptador WiFi"
+msgstr "Adaptador Wi-Fi"
#: modules/luci-base/htdocs/luci-static/resources/network.js:2790
#: modules/luci-base/htdocs/luci-static/resources/network.js:3994
#: modules/luci-compat/luasrc/model/network.lua:1405
#: modules/luci-compat/luasrc/model/network.lua:1868
msgid "Wireless Network"
-msgstr "Red WiFi"
+msgstr "Red Wi-Fi"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:663
msgid "Wireless Overview"
-msgstr "Visión general de WiFi"
+msgstr "Visión general de Wi-Fi"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:832
msgid "Wireless Security"
-msgstr "Seguridad WiFi"
+msgstr "Seguridad Wi-Fi"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:645
msgid "Wireless configuration migration"
-msgstr "Migración de configuración WiFi"
+msgstr "Migración de configuración Wi-Fi"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:104
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:142
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:37
msgid "Wireless is disabled"
-msgstr "Red WiFi desactivada"
+msgstr "Red Wi-Fi desactivada"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:104
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:142
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:37
msgid "Wireless is not associated"
-msgstr "Red WiFi no asociada"
+msgstr "Red Wi-Fi no asociada"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:787
msgid "Wireless network is disabled"
-msgstr "Red WiFi desactivada"
+msgstr "Red Wi-Fi desactivada"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:787
msgid "Wireless network is enabled"
-msgstr "Red WiFi activada"
+msgstr "Red Wi-Fi activada"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:259
msgid "Write received DNS requests to syslog"
@@ -6654,7 +6652,7 @@ msgstr "ilimitado"
#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:53
#: modules/luci-compat/luasrc/view/cbi/network_netlist.htm:38
msgid "unspecified"
-msgstr "sin especificar"
+msgstr "Sin especificar"
#: modules/luci-compat/luasrc/view/cbi/network_netlist.htm:71
msgid "unspecified -or- create:"
@@ -6843,6 +6841,9 @@ msgstr "Si"
msgid "« Back"
msgstr "« Volver"
+#~ msgid "Define a name for this network."
+#~ msgstr "Definir un nombre para esta red."
+
#~ msgid "Leasetime remaining"
#~ msgstr "TIempo de conexión restante"
diff --git a/modules/luci-base/po/fr/base.po b/modules/luci-base/po/fr/base.po
index b3b1c09403..6ed73e7433 100644
--- a/modules/luci-base/po/fr/base.po
+++ b/modules/luci-base/po/fr/base.po
@@ -23,7 +23,7 @@ msgstr "%.1f dB"
msgid "%d Bit"
msgstr "%d Bit"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "%d champs invalides"
@@ -58,7 +58,7 @@ msgstr "(pas d'interface connectée)"
msgid "-- Additional Field --"
msgstr "-- Champ Supplémentaire --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -69,7 +69,7 @@ msgstr "-- Champ Supplémentaire --"
msgid "-- Please choose --"
msgstr "-- Choisir --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -208,7 +208,6 @@ msgstr ""
"hexadécimal)"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr ""
"Configuration des <abbr title=\"Diode Électro-Luminescente\">DEL</abbr>s"
@@ -672,16 +671,16 @@ msgstr "N'importe quelle zone"
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr "Appliquer sans vérification"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -905,7 +904,7 @@ msgid "Bring up on boot"
msgstr "L'activer au démarrage"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr "Feuilleter…"
@@ -937,7 +936,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -1003,11 +1002,11 @@ msgstr ""
msgid "Chain"
msgstr "Chaîne"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Changements"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr "Les modifications ont été annulées."
@@ -1156,16 +1155,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Configuration"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr ""
@@ -1212,7 +1211,7 @@ msgstr "Le contenu a été enregistré."
msgid "Continue"
msgstr "Continuer"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1411,10 +1410,6 @@ msgstr ""
msgid "Default state"
msgstr "État par défaut"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Donne un nom à ce réseau."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1503,7 +1498,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr ""
@@ -1588,9 +1583,9 @@ msgid "Disconnection attempt failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -2011,7 +2006,7 @@ msgstr "Protocole FT"
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2922,6 +2917,10 @@ msgstr "Seuil d'erreur des échos LCP"
msgid "LCP echo interval"
msgstr "Intervalle entre échos LCP"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -2976,7 +2975,7 @@ msgstr "Laisser vide pour l'auto-détection"
msgid "Leave empty to use the current WAN address"
msgstr "Laisser vide pour utiliser l'adresse WAN actuelle"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "Légende :"
@@ -3076,7 +3075,7 @@ msgstr "Charge"
msgid "Load Average"
msgstr "Charge moyenne"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3500,9 +3499,8 @@ msgid "NTP server candidates"
msgstr "Serveurs NTP candidats"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3770,11 +3768,11 @@ msgstr ""
msgid "Operating frequency"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Option modifiée"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Option retirée"
@@ -4158,7 +4156,7 @@ msgstr "Pqts."
msgid "Please enter your username and password."
msgstr "Saisissez votre nom d'utilisateur et mot de passe."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4593,19 +4591,19 @@ msgstr "Restaurer une sauvegarde"
msgid "Reveal/hide password"
msgstr "Montrer/cacher le mot de passe"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Annuler les modifications"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr "Annuler les modifications"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr "La demande d'annulation a échoué, statut <code>%h</code>"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr "Annulation de la configuration…"
@@ -4721,7 +4719,7 @@ msgid "Save"
msgstr "Enregistrer"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Sauvegarder et Appliquer"
@@ -4743,11 +4741,11 @@ msgstr "Scan"
msgid "Scheduled Tasks"
msgstr "Tâches Régulières"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Section ajoutée"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Section retirée"
@@ -4764,7 +4762,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4880,7 +4878,7 @@ msgstr ""
msgid "Signal:"
msgstr "Signal :"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Taille"
@@ -4999,7 +4997,7 @@ msgstr "Démarrer"
msgid "Start priority"
msgstr "Priorité de démarrage"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5234,7 +5232,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5424,7 +5422,7 @@ msgstr ""
msgid "There are no active leases"
msgstr "Aucun bail actif"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr "Il n'y a aucun changement à appliquer"
@@ -5762,7 +5760,7 @@ msgstr ""
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Changements non appliqués"
@@ -5788,7 +5786,7 @@ msgstr "Type de protocole non pris en charge."
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5812,12 +5810,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
@@ -6718,6 +6716,9 @@ msgstr "Oui"
msgid "« Back"
msgstr "« Retour"
+#~ msgid "Define a name for this network."
+#~ msgstr "Donne un nom à ce réseau."
+
#~ msgid "Bad address specified!"
#~ msgstr "Adresse spécifiée incorrecte !"
diff --git a/modules/luci-base/po/he/base.po b/modules/luci-base/po/he/base.po
index 8add8636f0..8912198d9d 100644
--- a/modules/luci-base/po/he/base.po
+++ b/modules/luci-base/po/he/base.po
@@ -21,7 +21,7 @@ msgstr ""
msgid "%d Bit"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr ""
@@ -56,7 +56,7 @@ msgstr "(אין ממשק מצורף)"
msgid "-- Additional Field --"
msgstr "-- שדה נוסף --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -67,7 +67,7 @@ msgstr "-- שדה נוסף --"
msgid "-- Please choose --"
msgstr "-- נא לבחור --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -194,7 +194,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "הגדרות <abbr title=\"Light Emitting Diode\">LED</abbr>"
@@ -649,16 +648,16 @@ msgstr "כל תחום"
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -883,7 +882,7 @@ msgid "Bring up on boot"
msgstr "הבא באיתחול"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr ""
@@ -915,7 +914,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -981,11 +980,11 @@ msgstr ""
msgid "Chain"
msgstr "שרשרת"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "שינויים"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr ""
@@ -1123,16 +1122,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "הגדרות"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr ""
@@ -1179,7 +1178,7 @@ msgstr ""
msgid "Continue"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1378,10 +1377,6 @@ msgstr ""
msgid "Default state"
msgstr ""
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "הגדר שם לרשת זו"
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1469,7 +1464,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr ""
@@ -1552,9 +1547,9 @@ msgid "Disconnection attempt failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1955,7 +1950,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2849,6 +2844,10 @@ msgstr ""
msgid "LCP echo interval"
msgstr ""
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr ""
@@ -2903,7 +2902,7 @@ msgstr ""
msgid "Leave empty to use the current WAN address"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr ""
@@ -3000,7 +2999,7 @@ msgstr "עומס"
msgid "Load Average"
msgstr "עומס ממוצע"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3414,9 +3413,8 @@ msgid "NTP server candidates"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3684,11 +3682,11 @@ msgstr ""
msgid "Operating frequency"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr ""
@@ -4070,7 +4068,7 @@ msgstr ""
msgid "Please enter your username and password."
msgstr "אנא הזן את שם המשתמש והסיסמה שלך:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4503,19 +4501,19 @@ msgstr ""
msgid "Reveal/hide password"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr ""
@@ -4628,7 +4626,7 @@ msgid "Save"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr ""
@@ -4650,11 +4648,11 @@ msgstr ""
msgid "Scheduled Tasks"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr ""
@@ -4671,7 +4669,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4785,7 +4783,7 @@ msgstr ""
msgid "Signal:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr ""
@@ -4900,7 +4898,7 @@ msgstr ""
msgid "Start priority"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5129,7 +5127,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5289,7 +5287,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5604,7 +5602,7 @@ msgstr ""
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr ""
@@ -5630,7 +5628,7 @@ msgstr ""
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5654,12 +5652,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
@@ -6542,6 +6540,9 @@ msgstr "כן"
msgid "« Back"
msgstr "<< אחורה"
+#~ msgid "Define a name for this network."
+#~ msgstr "הגדר שם לרשת זו"
+
#~ msgid "Bad address specified!"
#~ msgstr "פורטה כתובת לא תקינה"
diff --git a/modules/luci-base/po/hi/base.po b/modules/luci-base/po/hi/base.po
index 8bdd65d7c8..07c755ed33 100644
--- a/modules/luci-base/po/hi/base.po
+++ b/modules/luci-base/po/hi/base.po
@@ -18,7 +18,7 @@ msgstr ""
msgid "%d Bit"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "%d अमान्य क्षेत्र"
@@ -53,7 +53,7 @@ msgstr "(कोई इंटरफ़ेस संलग्न नहीं ह
msgid "-- Additional Field --"
msgstr "अतिरिक्त अनुभाग"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -64,7 +64,7 @@ msgstr "अतिरिक्त अनुभाग"
msgid "-- Please choose --"
msgstr "कृपया चुने"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -190,7 +190,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr ""
@@ -634,16 +633,16 @@ msgstr ""
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -864,7 +863,7 @@ msgid "Bring up on boot"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr ""
@@ -896,7 +895,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -962,11 +961,11 @@ msgstr ""
msgid "Chain"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr ""
@@ -1104,16 +1103,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr ""
@@ -1160,7 +1159,7 @@ msgstr ""
msgid "Continue"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1357,10 +1356,6 @@ msgstr ""
msgid "Default state"
msgstr ""
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr ""
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1446,7 +1441,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr ""
@@ -1529,9 +1524,9 @@ msgid "Disconnection attempt failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1930,7 +1925,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2824,6 +2819,10 @@ msgstr ""
msgid "LCP echo interval"
msgstr ""
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr ""
@@ -2878,7 +2877,7 @@ msgstr ""
msgid "Leave empty to use the current WAN address"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr ""
@@ -2975,7 +2974,7 @@ msgstr ""
msgid "Load Average"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3389,9 +3388,8 @@ msgid "NTP server candidates"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3659,11 +3657,11 @@ msgstr ""
msgid "Operating frequency"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr ""
@@ -4045,7 +4043,7 @@ msgstr ""
msgid "Please enter your username and password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4478,19 +4476,19 @@ msgstr ""
msgid "Reveal/hide password"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr ""
@@ -4603,7 +4601,7 @@ msgid "Save"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr ""
@@ -4625,11 +4623,11 @@ msgstr ""
msgid "Scheduled Tasks"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr ""
@@ -4646,7 +4644,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4760,7 +4758,7 @@ msgstr ""
msgid "Signal:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr ""
@@ -4873,7 +4871,7 @@ msgstr ""
msgid "Start priority"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5099,7 +5097,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5259,7 +5257,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5573,7 +5571,7 @@ msgstr ""
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr ""
@@ -5599,7 +5597,7 @@ msgstr ""
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5623,12 +5621,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
diff --git a/modules/luci-base/po/hu/base.po b/modules/luci-base/po/hu/base.po
index 247a27f7d0..2e149151ff 100644
--- a/modules/luci-base/po/hu/base.po
+++ b/modules/luci-base/po/hu/base.po
@@ -21,7 +21,7 @@ msgstr "%.1f dB"
msgid "%d Bit"
msgstr "%d bit"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "%d érvénytelen mező"
@@ -56,7 +56,7 @@ msgstr "(nincs csatalkoztatott interfész)"
msgid "-- Additional Field --"
msgstr "-- További mező --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -67,7 +67,7 @@ msgstr "-- További mező --"
msgid "-- Please choose --"
msgstr "-- Kérem válasszon --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -200,7 +200,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-utótag (hex)"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> beállítása"
@@ -665,16 +664,16 @@ msgstr "Bármely zóna"
msgid "Apply backup?"
msgstr "Alkalmazza a biztonsági mentést?"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr "A kérés alkalmazása meghiúsult <code>%h</code> állapotkóddal"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr "Kijelöletlenek alkalmazása"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr "A beállítások változtatásainak alkalmazása… %d mp"
@@ -907,7 +906,7 @@ msgid "Bring up on boot"
msgstr "Felhozás rendszerindításkor"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr "Tallózás…"
@@ -941,7 +940,7 @@ msgid "Call failed"
msgstr "Hívás sikertelen"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -1007,11 +1006,11 @@ msgstr ""
msgid "Chain"
msgstr "Lánc"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Változtatások"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr "A változtatások visszavonva."
@@ -1169,16 +1168,16 @@ msgstr ""
"a kulcsegyeztetés robusztusságának csökkentését okozhatja, különösen az erős "
"forgalomterheléssel rendelkező környezetekben."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Beállítás"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr "A beállítás változtatásai alkalmazva."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr "A beállítás változtatásai vissza lettek állítva!"
@@ -1225,7 +1224,7 @@ msgstr "A tartalom mentésre került."
msgid "Continue"
msgstr "Folytatás"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1430,10 +1429,6 @@ msgstr "Az alapértelmezett állapotmentes + állapottartó"
msgid "Default state"
msgstr "Alapértelmezett állapot"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Határozzon meg egy nevet ehhez a hálózathoz."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1522,7 +1517,7 @@ msgstr "Az eszköz nem aktív"
msgid "Device is restarting…"
msgstr "Az eszköz újraindul…"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr "Az eszköz elérhetetlen!"
@@ -1607,9 +1602,9 @@ msgid "Disconnection attempt failed"
msgstr "Leválasztási kísérlet sikertelen"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -2029,7 +2024,7 @@ msgstr "FT protokoll"
msgid "Failed to change the system password."
msgstr "Nem sikerült megváltoztatni a rendszer jelszavát."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
"Nem sikerült megerősíteni az alkalmazást %d másodpercen belül, várakozás a "
@@ -2956,6 +2951,10 @@ msgstr "LCP-visszhang hibaküszöbszintje"
msgid "LCP echo interval"
msgstr "LCP visszhang időtartama"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -3010,7 +3009,7 @@ msgstr "Automatikus felismeréshez hagyja üresen"
msgid "Leave empty to use the current WAN address"
msgstr "Hagyja üresen a jelenlegi WAN-cím használatához"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "Jelmagyarázat:"
@@ -3122,7 +3121,7 @@ msgstr "Terhelés"
msgid "Load Average"
msgstr "Átlagos terhelés"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr "Könyvtártartalmak betöltése…"
@@ -3546,9 +3545,8 @@ msgid "NTP server candidates"
msgstr "NTP-kiszolgáló jelöltek"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3818,11 +3816,11 @@ msgstr "OpenConnect (CISCO AnyConnect)"
msgid "Operating frequency"
msgstr "Működési gyakoriság"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Beállítás megváltoztatva"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Beállítás eltávolítva"
@@ -4220,7 +4218,7 @@ msgstr "csom."
msgid "Please enter your username and password."
msgstr "Adja meg a felhasználónevét és a jelszavát."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr "Válassza ki a feltöltendő fájlt."
@@ -4677,19 +4675,19 @@ msgstr "Biztonsági mentés visszaállítása"
msgid "Reveal/hide password"
msgstr "Jelszó felfedése/elrejtése"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Visszavonás"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr "Változtatások visszavonása"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr "A kérés visszavonása meghiúsult <code>%h</code> állapotkóddal"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr "Beállítás visszaállítása…"
@@ -4804,7 +4802,7 @@ msgid "Save"
msgstr "Mentés"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Mentés és alkalmazás"
@@ -4826,11 +4824,11 @@ msgstr "Keresés"
msgid "Scheduled Tasks"
msgstr "Ütemezett feladatok"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Szakasz hozzáadva"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Szakasz eltávolítva"
@@ -4850,7 +4848,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr "Fájl kiválasztása…"
@@ -4969,7 +4967,7 @@ msgstr "Jel csillapítása (SATN)"
msgid "Signal:"
msgstr "Jel:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Méret"
@@ -5097,7 +5095,7 @@ msgstr "Indítás"
msgid "Start priority"
msgstr "Indítási prioritás"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr "Beállítások alkalmazásának indítása…"
@@ -5335,7 +5333,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr "A beállítófájlt nem sikerült betölteni a következő hiba miatt:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5536,7 +5534,7 @@ msgstr ""
msgid "There are no active leases"
msgstr "Nincsenek aktív bérletek"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr "Nincsenek alkalmazandó változtatások"
@@ -5878,7 +5876,7 @@ msgstr "Leválasztás"
msgid "Unnamed key"
msgstr "Névtelen kulcs"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Mentetlen változtatások"
@@ -5904,7 +5902,7 @@ msgstr "Nem támogatott protokolltípus."
msgid "Up"
msgstr "Fel"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr "Feltöltés"
@@ -5930,12 +5928,12 @@ msgid "Upload file…"
msgstr "Fájl feltöltése…"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr "Feltöltési kérés sikertelen: %s"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr "Fájl feltöltése…"
@@ -6847,6 +6845,9 @@ msgstr "igen"
msgid "« Back"
msgstr "« Vissza"
+#~ msgid "Define a name for this network."
+#~ msgstr "Határozzon meg egy nevet ehhez a hálózathoz."
+
#~ msgid "Install iputils-traceroute6 for IPv6 traceroute"
#~ msgstr "Az iputils-traceroute6 telepítése az IPv6 útvonalkövetéshez"
diff --git a/modules/luci-base/po/it/base.po b/modules/luci-base/po/it/base.po
index 43170e4993..58adb5c807 100644
--- a/modules/luci-base/po/it/base.po
+++ b/modules/luci-base/po/it/base.po
@@ -23,7 +23,7 @@ msgstr ""
msgid "%d Bit"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr ""
@@ -58,7 +58,7 @@ msgstr "(nessuna interfaccia collegata)"
msgid "-- Additional Field --"
msgstr "-- Campo aggiuntivo --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -69,7 +69,7 @@ msgstr "-- Campo aggiuntivo --"
msgid "-- Please choose --"
msgstr "-- Per favore scegli --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -202,7 +202,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "Configurazione <abbr title=\"Diodo ad Emissione di Luce\">LED</abbr>"
@@ -662,16 +661,16 @@ msgstr "Qualsiasi Zona"
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -895,7 +894,7 @@ msgid "Bring up on boot"
msgstr "Attivare all'avvio"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr ""
@@ -927,7 +926,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -993,11 +992,11 @@ msgstr ""
msgid "Chain"
msgstr "Catena"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Modifiche"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr ""
@@ -1145,16 +1144,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Configurazione"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr ""
@@ -1201,7 +1200,7 @@ msgstr ""
msgid "Continue"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1400,10 +1399,6 @@ msgstr ""
msgid "Default state"
msgstr "Stato Predefinito"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Definisci un nome per questa rete."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1492,7 +1487,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr "Dispositivo irraggiungibile"
@@ -1577,9 +1572,9 @@ msgid "Disconnection attempt failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1992,7 +1987,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2905,6 +2900,10 @@ msgstr "Fallimento soglia echo LCP"
msgid "LCP echo interval"
msgstr "Intervallo echo LCP"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -2959,7 +2958,7 @@ msgstr "Lasciare vuoto per l'autorilevamento"
msgid "Leave empty to use the current WAN address"
msgstr "Lasciare vuoto per usare l'indirizzo WAN attuale"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "Legenda:"
@@ -3058,7 +3057,7 @@ msgstr "Carico"
msgid "Load Average"
msgstr "Carico Medio"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3480,9 +3479,8 @@ msgid "NTP server candidates"
msgstr "Candidati server NTP"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3750,11 +3748,11 @@ msgstr ""
msgid "Operating frequency"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Opzione cambiata"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Opzione cancellata"
@@ -4138,7 +4136,7 @@ msgstr ""
msgid "Please enter your username and password."
msgstr "Per favore inserisci il tuo username e la password."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4573,19 +4571,19 @@ msgstr "Ripristina backup"
msgid "Reveal/hide password"
msgstr "Rivela/nascondi password"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Ripristina"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr ""
@@ -4700,7 +4698,7 @@ msgid "Save"
msgstr "Salva"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Salva & applica"
@@ -4722,11 +4720,11 @@ msgstr "Scan"
msgid "Scheduled Tasks"
msgstr "Operazioni programmate"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Sezione aggiunta"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Sezione rimossa"
@@ -4743,7 +4741,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4857,7 +4855,7 @@ msgstr ""
msgid "Signal:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Dimensione"
@@ -4978,7 +4976,7 @@ msgstr "Inizio"
msgid "Start priority"
msgstr "Priorità di avvio"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5210,7 +5208,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5379,7 +5377,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5702,7 +5700,7 @@ msgstr "Smonta"
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Modifiche non salvate"
@@ -5728,7 +5726,7 @@ msgstr "Tipo protocollo non supportato."
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5752,12 +5750,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
@@ -6657,6 +6655,9 @@ msgstr "Sì"
msgid "« Back"
msgstr "« Indietro"
+#~ msgid "Define a name for this network."
+#~ msgstr "Definisci un nome per questa rete."
+
#~ msgid "Bad address specified!"
#~ msgstr "E' stato specificato un indirizzo errato!"
diff --git a/modules/luci-base/po/ja/base.po b/modules/luci-base/po/ja/base.po
index d87d9ab1ab..a8d4a51c53 100644
--- a/modules/luci-base/po/ja/base.po
+++ b/modules/luci-base/po/ja/base.po
@@ -23,7 +23,7 @@ msgstr "%.1f dB"
msgid "%d Bit"
msgstr "%d ビット"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "無効な入力欄: %d 個"
@@ -58,7 +58,7 @@ msgstr "(インターフェースが接続されていません)"
msgid "-- Additional Field --"
msgstr "-- 追加項目 --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -69,7 +69,7 @@ msgstr "-- 追加項目 --"
msgid "-- Please choose --"
msgstr "-- 選択してください --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -200,7 +200,6 @@ msgstr ""
"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-サフィックス (16進数)"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 設定"
@@ -659,16 +658,16 @@ msgstr "全てのゾーン"
msgid "Apply backup?"
msgstr "バックアップの適用"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr "適用リクエストはステータス <code>%h</code> で失敗しました"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr "チェック無しの適用"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr "設定を適用中です… %d 秒"
@@ -899,7 +898,7 @@ msgid "Bring up on boot"
msgstr "デフォルトで起動する"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr "参照..."
@@ -931,7 +930,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -997,11 +996,11 @@ msgstr ""
msgid "Chain"
msgstr "チェイン"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "変更"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr "変更は取り消されました。"
@@ -1156,16 +1155,16 @@ msgstr ""
"この回避策は、相互運用性の問題や、特に高負荷のトラフィック環境下におけるキー "
"ネゴシエーションの信頼性低下の原因となることがあります。"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "設定"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr "設定が適用されました。"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr "設定はロールバックされました!"
@@ -1212,7 +1211,7 @@ msgstr "内容が保存されました。"
msgid "Continue"
msgstr "続行"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1416,10 +1415,6 @@ msgstr "デフォルトは ステートレス + ステートフル です。"
msgid "Default state"
msgstr "標準状態"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "ネットワーク名を設定してください。"
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1507,7 +1502,7 @@ msgstr "デバイスがアクティブではありません"
msgid "Device is restarting…"
msgstr "デバイスを再起動中..."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr "デバイスに到達できません"
@@ -1592,9 +1587,9 @@ msgid "Disconnection attempt failed"
msgstr "切断の試行が失敗しました"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -2013,7 +2008,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr "システム パスワードの変更に失敗しました。"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr "%d 秒以内の適用を確認できませんでした。ロールバック中です..."
@@ -2928,6 +2923,10 @@ msgstr "LCP echo 失敗数しきい値"
msgid "LCP echo interval"
msgstr "LCP echo 送信間隔"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -2982,7 +2981,7 @@ msgstr "空欄の場合、自動検知を行います"
msgid "Leave empty to use the current WAN address"
msgstr "空欄の場合、現在のWANアドレスを使用します"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "凡例:"
@@ -3085,7 +3084,7 @@ msgstr "負荷"
msgid "Load Average"
msgstr "システム平均負荷"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr "ディレクトリ内を読み込み中..."
@@ -3509,9 +3508,8 @@ msgid "NTP server candidates"
msgstr "NTPサーバー候補"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3781,11 +3779,11 @@ msgstr "OpenConnect (CISCO AnyConnect)"
msgid "Operating frequency"
msgstr "動作周波数"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "変更されるオプション"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "削除されるオプション"
@@ -4177,7 +4175,7 @@ msgstr "パケット"
msgid "Please enter your username and password."
msgstr "ユーザー名とパスワードを入力してください。"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr "アップロードするファイルを選択してください。"
@@ -4626,19 +4624,19 @@ msgstr "バックアップから復元する"
msgid "Reveal/hide password"
msgstr "パスワードを表示する/隠す"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "元に戻す"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr "変更の取り消し"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr "取り消しのリクエストはステータス <code>%h</code> で失敗しました"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr "設定を元に戻しています..."
@@ -4753,7 +4751,7 @@ msgid "Save"
msgstr "保存"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "保存 & 適用"
@@ -4775,11 +4773,11 @@ msgstr "スキャン"
msgid "Scheduled Tasks"
msgstr "スケジュールタスク"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "追加されるセクション"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "削除されるセクション"
@@ -4799,7 +4797,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr "ファイルを選択..."
@@ -4916,7 +4914,7 @@ msgstr ""
msgid "Signal:"
msgstr "信号:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "サイズ"
@@ -5039,7 +5037,7 @@ msgstr "開始"
msgid "Start priority"
msgstr "優先順位"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr "設定の適用を開始しています..."
@@ -5274,7 +5272,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr "設定ファイルは以下のエラーにより読み込めませんでした:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5466,7 +5464,7 @@ msgstr ""
msgid "There are no active leases"
msgstr "アクティブなリースはありません"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr "適用する変更はありません"
@@ -5801,7 +5799,7 @@ msgstr "アンマウント"
msgid "Unnamed key"
msgstr "名称未設定の公開鍵"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "保存されていない変更"
@@ -5827,7 +5825,7 @@ msgstr "サポートされていないプロトコルタイプ"
msgid "Up"
msgstr "上へ"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr "アップロード"
@@ -5853,12 +5851,12 @@ msgid "Upload file…"
msgstr "ファイルをアップロード…"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr "アップロード リクエスト失敗: %s"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr "ファイルのアップロード..."
@@ -6761,6 +6759,9 @@ msgstr "はい"
msgid "« Back"
msgstr "« 戻る"
+#~ msgid "Define a name for this network."
+#~ msgstr "ネットワーク名を設定してください。"
+
#~ msgid "Bad address specified!"
#~ msgstr "無効なアドレスです!"
diff --git a/modules/luci-base/po/ko/base.po b/modules/luci-base/po/ko/base.po
index 1328c8a609..b4eed05a1f 100644
--- a/modules/luci-base/po/ko/base.po
+++ b/modules/luci-base/po/ko/base.po
@@ -23,7 +23,7 @@ msgstr ""
msgid "%d Bit"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr ""
@@ -58,7 +58,7 @@ msgstr ""
msgid "-- Additional Field --"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -69,7 +69,7 @@ msgstr ""
msgid "-- Please choose --"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -195,7 +195,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 설정"
@@ -642,16 +641,16 @@ msgstr ""
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -875,7 +874,7 @@ msgid "Bring up on boot"
msgstr "부팅시 활성화"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr ""
@@ -907,7 +906,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -973,11 +972,11 @@ msgstr ""
msgid "Chain"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "변경 사항"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr ""
@@ -1123,16 +1122,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "설정"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr ""
@@ -1179,7 +1178,7 @@ msgstr ""
msgid "Continue"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1378,10 +1377,6 @@ msgstr ""
msgid "Default state"
msgstr "기본 상태"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr ""
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1470,7 +1465,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr ""
@@ -1555,9 +1550,9 @@ msgid "Disconnection attempt failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1963,7 +1958,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2858,6 +2853,10 @@ msgstr ""
msgid "LCP echo interval"
msgstr ""
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr ""
@@ -2912,7 +2911,7 @@ msgstr ""
msgid "Leave empty to use the current WAN address"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr ""
@@ -3011,7 +3010,7 @@ msgstr "부하"
msgid "Load Average"
msgstr "부하 평균"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3425,9 +3424,8 @@ msgid "NTP server candidates"
msgstr "NTP 서버 목록"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3695,11 +3693,11 @@ msgstr ""
msgid "Operating frequency"
msgstr "동작 주파수"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "변경된 option"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "삭제된 option"
@@ -4083,7 +4081,7 @@ msgstr "Pkts."
msgid "Please enter your username and password."
msgstr "사용자이름과 암호를 입력해 주세요."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4518,19 +4516,19 @@ msgstr "백업 복구"
msgid "Reveal/hide password"
msgstr "암호 보이기/숨기기"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "변경 취소"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr ""
@@ -4645,7 +4643,7 @@ msgid "Save"
msgstr "저장"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "저장 & 적용"
@@ -4667,11 +4665,11 @@ msgstr "Scan 하기"
msgid "Scheduled Tasks"
msgstr "작업 관리"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "추가된 section"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "삭제된 section"
@@ -4688,7 +4686,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4802,7 +4800,7 @@ msgstr ""
msgid "Signal:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Size"
@@ -4915,7 +4913,7 @@ msgstr "시작"
msgid "Start priority"
msgstr "시작 우선순위"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5144,7 +5142,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5309,7 +5307,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5634,7 +5632,7 @@ msgstr ""
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "적용 안된 변경 사항"
@@ -5660,7 +5658,7 @@ msgstr ""
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5684,12 +5682,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
diff --git a/modules/luci-base/po/mr/base.po b/modules/luci-base/po/mr/base.po
index cb821c9641..b1049a6cbf 100644
--- a/modules/luci-base/po/mr/base.po
+++ b/modules/luci-base/po/mr/base.po
@@ -19,7 +19,7 @@ msgstr ""
msgid "%d Bit"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr ""
@@ -54,7 +54,7 @@ msgstr ""
msgid "-- Additional Field --"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -65,7 +65,7 @@ msgstr ""
msgid "-- Please choose --"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -191,7 +191,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr ""
@@ -632,16 +631,16 @@ msgstr ""
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -862,7 +861,7 @@ msgid "Bring up on boot"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr ""
@@ -894,7 +893,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -960,11 +959,11 @@ msgstr ""
msgid "Chain"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr ""
@@ -1102,16 +1101,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "कॉन्फिगरेशन"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr ""
@@ -1158,7 +1157,7 @@ msgstr ""
msgid "Continue"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1355,10 +1354,6 @@ msgstr ""
msgid "Default state"
msgstr ""
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr ""
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1444,7 +1439,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr ""
@@ -1527,9 +1522,9 @@ msgid "Disconnection attempt failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1928,7 +1923,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2822,6 +2817,10 @@ msgstr ""
msgid "LCP echo interval"
msgstr ""
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr ""
@@ -2876,7 +2875,7 @@ msgstr ""
msgid "Leave empty to use the current WAN address"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr ""
@@ -2973,7 +2972,7 @@ msgstr ""
msgid "Load Average"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3387,9 +3386,8 @@ msgid "NTP server candidates"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3657,11 +3655,11 @@ msgstr ""
msgid "Operating frequency"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr ""
@@ -4043,7 +4041,7 @@ msgstr ""
msgid "Please enter your username and password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4476,19 +4474,19 @@ msgstr ""
msgid "Reveal/hide password"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr ""
@@ -4601,7 +4599,7 @@ msgid "Save"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr ""
@@ -4623,11 +4621,11 @@ msgstr ""
msgid "Scheduled Tasks"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr ""
@@ -4644,7 +4642,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4758,7 +4756,7 @@ msgstr ""
msgid "Signal:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr ""
@@ -4871,7 +4869,7 @@ msgstr ""
msgid "Start priority"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5097,7 +5095,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5257,7 +5255,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5571,7 +5569,7 @@ msgstr ""
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr ""
@@ -5597,7 +5595,7 @@ msgstr ""
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5621,12 +5619,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
diff --git a/modules/luci-base/po/ms/base.po b/modules/luci-base/po/ms/base.po
index 0fc6278dde..8a1feca5aa 100644
--- a/modules/luci-base/po/ms/base.po
+++ b/modules/luci-base/po/ms/base.po
@@ -22,7 +22,7 @@ msgstr ""
msgid "%d Bit"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr ""
@@ -57,7 +57,7 @@ msgstr "(tiada interface dipasang)"
msgid "-- Additional Field --"
msgstr "-- Gelanggang Tambahan --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -68,7 +68,7 @@ msgstr "-- Gelanggang Tambahan --"
msgid "-- Please choose --"
msgstr "-- Sila pilih --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -195,7 +195,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "Konfigurasi lampu LED"
@@ -636,16 +635,16 @@ msgstr ""
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -866,7 +865,7 @@ msgid "Bring up on boot"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr ""
@@ -898,7 +897,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -964,11 +963,11 @@ msgstr ""
msgid "Chain"
msgstr "Rantai"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Laman"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr ""
@@ -1106,16 +1105,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Konfigurasi"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr ""
@@ -1162,7 +1161,7 @@ msgstr ""
msgid "Continue"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1359,10 +1358,6 @@ msgstr ""
msgid "Default state"
msgstr ""
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr ""
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1448,7 +1443,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr ""
@@ -1531,9 +1526,9 @@ msgid "Disconnection attempt failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1938,7 +1933,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2843,6 +2838,10 @@ msgstr ""
msgid "LCP echo interval"
msgstr ""
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr ""
@@ -2897,7 +2896,7 @@ msgstr ""
msgid "Leave empty to use the current WAN address"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr ""
@@ -2994,7 +2993,7 @@ msgstr "Load"
msgid "Load Average"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3410,9 +3409,8 @@ msgid "NTP server candidates"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3680,11 +3678,11 @@ msgstr ""
msgid "Operating frequency"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr ""
@@ -4066,7 +4064,7 @@ msgstr "Pkts."
msgid "Please enter your username and password."
msgstr "Sila masukkan username dan kata laluan anda."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4500,19 +4498,19 @@ msgstr "Kembalikan sandaran"
msgid "Reveal/hide password"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Kembali"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr ""
@@ -4627,7 +4625,7 @@ msgid "Save"
msgstr "Simpan"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Simpan & Melaksanakan"
@@ -4649,11 +4647,11 @@ msgstr "Scan"
msgid "Scheduled Tasks"
msgstr "Tugas Jadual"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr ""
@@ -4670,7 +4668,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4784,7 +4782,7 @@ msgstr ""
msgid "Signal:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Saiz"
@@ -4897,7 +4895,7 @@ msgstr "Mula"
msgid "Start priority"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5126,7 +5124,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5293,7 +5291,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5611,7 +5609,7 @@ msgstr ""
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Perubahan yang belum disimpan"
@@ -5637,7 +5635,7 @@ msgstr ""
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5661,12 +5659,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
diff --git a/modules/luci-base/po/no/base.po b/modules/luci-base/po/no/base.po
index 13f801300d..d7c1b31ac9 100644
--- a/modules/luci-base/po/no/base.po
+++ b/modules/luci-base/po/no/base.po
@@ -19,7 +19,7 @@ msgstr ""
msgid "%d Bit"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr ""
@@ -54,7 +54,7 @@ msgstr "(ingen grensesnitt tilknyttet)"
msgid "-- Additional Field --"
msgstr "-- Tilleggs Felt --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -65,7 +65,7 @@ msgstr "-- Tilleggs Felt --"
msgid "-- Please choose --"
msgstr "-- Vennligst velg --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -195,7 +195,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Konfigurasjon"
@@ -647,16 +646,16 @@ msgstr "Alle soner"
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -880,7 +879,7 @@ msgid "Bring up on boot"
msgstr "Slå på ved oppstart"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr ""
@@ -912,7 +911,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -978,11 +977,11 @@ msgstr ""
msgid "Chain"
msgstr "Lenke"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Endringer"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr ""
@@ -1130,16 +1129,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Konfigurasjon"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr ""
@@ -1186,7 +1185,7 @@ msgstr ""
msgid "Continue"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1385,10 +1384,6 @@ msgstr ""
msgid "Default state"
msgstr "Standard tilstand"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Definer et navn for dette nettverket."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1476,7 +1471,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr ""
@@ -1561,9 +1556,9 @@ msgid "Disconnection attempt failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1976,7 +1971,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2881,6 +2876,10 @@ msgstr "LCP ekko feil terskel"
msgid "LCP echo interval"
msgstr "LCP ekko intervall"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -2935,7 +2934,7 @@ msgstr "La stå tomt for automatisk oppdagelse"
msgid "Leave empty to use the current WAN address"
msgstr "La stå tomt for å bruke gjeldene WAN adresse"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "Forklaring:"
@@ -3035,7 +3034,7 @@ msgstr "Belastning"
msgid "Load Average"
msgstr "Belastning Gjennomsnitt"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3456,9 +3455,8 @@ msgid "NTP server candidates"
msgstr "NTP server kandidater"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3726,11 +3724,11 @@ msgstr ""
msgid "Operating frequency"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Innstilling endret"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Innstilling fjernet"
@@ -4114,7 +4112,7 @@ msgstr "Pakker."
msgid "Please enter your username and password."
msgstr "Skriv inn ditt brukernavn og passord."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4551,19 +4549,19 @@ msgstr "Gjenopprett sikkerhetskopi"
msgid "Reveal/hide password"
msgstr "Vis/Skjul passord"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Tilbakestill"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr ""
@@ -4678,7 +4676,7 @@ msgid "Save"
msgstr "Lagre"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Lagre & Aktiver"
@@ -4700,11 +4698,11 @@ msgstr "Skann"
msgid "Scheduled Tasks"
msgstr "Planlagte Oppgaver"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Seksjon lagt til"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Seksjon fjernet"
@@ -4721,7 +4719,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4837,7 +4835,7 @@ msgstr ""
msgid "Signal:"
msgstr "Signal:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Størrelse"
@@ -4954,7 +4952,7 @@ msgstr "Start"
msgid "Start priority"
msgstr "Start prioritet"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5186,7 +5184,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5362,7 +5360,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5692,7 +5690,7 @@ msgstr ""
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Ulagrede Endringer"
@@ -5718,7 +5716,7 @@ msgstr "Protokoll type er ikke støttet."
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5742,12 +5740,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
@@ -6647,6 +6645,9 @@ msgstr "ja"
msgid "« Back"
msgstr "« Tilbake"
+#~ msgid "Define a name for this network."
+#~ msgstr "Definer et navn for dette nettverket."
+
#~ msgid "Leasetime remaining"
#~ msgstr "Gjenværende leietid"
diff --git a/modules/luci-base/po/pl/base.po b/modules/luci-base/po/pl/base.po
index 4194c62b23..13b4ad60fe 100644
--- a/modules/luci-base/po/pl/base.po
+++ b/modules/luci-base/po/pl/base.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: LuCI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-20 09:40+0200\n"
-"PO-Revision-Date: 2020-01-19 06:04+0000\n"
+"PO-Revision-Date: 2020-01-24 16:09+0000\n"
"Last-Translator: Marcin Net <marcin.net@linux.pl>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/openwrt/luci/pl/>"
"\n"
@@ -13,7 +13,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 3.10.2\n"
+"X-Generator: Weblate 3.11-dev\n"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:910
msgid "%.1f dB"
@@ -24,7 +24,7 @@ msgstr "%.1f dB"
msgid "%d Bit"
msgstr "%d Bit"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "%d nieprawidłowe pole(pola)"
@@ -59,7 +59,7 @@ msgstr "(brak podłączonych interfejsów)"
msgid "-- Additional Field --"
msgstr "-- Dodatkowe pole --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -70,7 +70,7 @@ msgstr "-- Dodatkowe pole --"
msgid "-- Please choose --"
msgstr "-- Proszę wybrać --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -199,7 +199,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr "Sufiks <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>(hex)"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "Konfiguracja diod <abbr title=\"Light Emitting Diode\">LED</abbr>"
@@ -666,16 +665,16 @@ msgstr "Dowolna strefa"
msgid "Apply backup?"
msgstr "Czy zastosować kopię zapasową?"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr "Żądanie zatwierdzenia nie powiodło się ze statusem <code>%h</code>"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr "Zastosuj Zmiany"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr "Wprowadzanie zmian w konfiguracji… %ds"
@@ -907,7 +906,7 @@ msgid "Bring up on boot"
msgstr "Podnieś przy stracie"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr "Przeglądaj…"
@@ -940,7 +939,7 @@ msgid "Call failed"
msgstr "Połączenie nieudane"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -1014,11 +1013,11 @@ msgstr ""
msgid "Chain"
msgstr "Łańcuch"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Zmiany"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr "Zmiany zostały cofnięte."
@@ -1173,16 +1172,16 @@ msgstr ""
"odporność kluczowych negocjacji, szczególnie w środowiskach o dużym "
"natężeniu ruchu."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Konfiguracja"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr "Konfiguracja została zastosowana."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr "Konfiguracja została wycofana!"
@@ -1229,7 +1228,7 @@ msgstr "Zawartość została zapisana."
msgid "Continue"
msgstr "Kontynuuj"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1434,10 +1433,6 @@ msgstr "Domyślnie jest to stateless + stateful"
msgid "Default state"
msgstr "Stan domyślny"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Określ nazwę dla tej sieci."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1525,7 +1520,7 @@ msgstr "Urządzenie nieaktywne"
msgid "Device is restarting…"
msgstr "Urządzenie jest restartowane…"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr "Urządzenie nieosiągalne!"
@@ -1610,9 +1605,9 @@ msgid "Disconnection attempt failed"
msgstr "Próba rozłączenia nie powiodła się"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -2036,7 +2031,7 @@ msgstr "Protokół FT"
msgid "Failed to change the system password."
msgstr "Zmiana hasła systemowego nieudana."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr "Nie udało się zatwierdzić w ciągu %ds, czekam na wycofanie…"
@@ -2954,6 +2949,10 @@ msgstr "Próg błędu echa LCP"
msgid "LCP echo interval"
msgstr "Interwał echa LCP"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr "Konfiguracja LED"
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -3008,7 +3007,7 @@ msgstr "Pozostaw puste, aby automatycznie wykryć"
msgid "Leave empty to use the current WAN address"
msgstr "Pozostaw puste, aby użyć bieżącego adresu WAN"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "Legenda:"
@@ -3119,7 +3118,7 @@ msgstr "Obciążenie"
msgid "Load Average"
msgstr "Średnie obciążenie"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr "Ładowanie zawartości katalogu.…"
@@ -3542,9 +3541,8 @@ msgid "NTP server candidates"
msgstr "Lista serwerów NTP"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3814,11 +3812,11 @@ msgstr "OpenConnect (CISCO AnyConnect)"
msgid "Operating frequency"
msgstr "Częstotliwość"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Wartość zmieniona"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Usunięto wartość"
@@ -4214,7 +4212,7 @@ msgstr "Pktw."
msgid "Please enter your username and password."
msgstr "Proszę wprowadź swój login i hasło."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr "Wybierz plik do przesłania."
@@ -4667,19 +4665,19 @@ msgstr "Przywróć kopię zapasową"
msgid "Reveal/hide password"
msgstr "Pokaż/Ukryj hasło"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Przywróć"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr "Przywróć zmiany"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr "Żądanie powrotu nie powiodło się ze statusem <code>%h</code>"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr "Przywracanie konfiguracji…"
@@ -4795,7 +4793,7 @@ msgid "Save"
msgstr "Zapisz"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Zapisz i Zastosuj"
@@ -4817,11 +4815,11 @@ msgstr "Skanuj"
msgid "Scheduled Tasks"
msgstr "Zaplanowane zadania"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Dodano sekcję"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Usunięto sekcję"
@@ -4841,7 +4839,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr "Wybierz plik…"
@@ -4959,7 +4957,7 @@ msgstr "Tłumienie sygnału (SATN)"
msgid "Signal:"
msgstr "Sygnał:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Rozmiar"
@@ -5085,7 +5083,7 @@ msgstr "Uruchom"
msgid "Start priority"
msgstr "Priorytet uruchamiania"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr "Zatwierdzanie konfiguracji…"
@@ -5324,7 +5322,7 @@ msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
"Plik konfiguracyjny nie mógł zostać załadowany z powodu następującego błędu:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5519,7 +5517,7 @@ msgstr ""
msgid "There are no active leases"
msgstr "Nie ma aktywnych dzierżaw"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr "Nie ma żadnych zmian do zastosowania"
@@ -5861,7 +5859,7 @@ msgstr "Odmontuj"
msgid "Unnamed key"
msgstr "Klucz beznazwy"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Niezapisane zmiany"
@@ -5887,7 +5885,7 @@ msgstr "Nieobsługiwany typ protokołu."
msgid "Up"
msgstr "Góra"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr "Wyślij"
@@ -5911,12 +5909,12 @@ msgid "Upload file…"
msgstr "Prześlij plik…"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr "Przesyłanie nie powiodło się: %s"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr "Przesyłanie pliku…"
@@ -6831,6 +6829,9 @@ msgstr "tak"
msgid "« Back"
msgstr "« Wróć"
+#~ msgid "Define a name for this network."
+#~ msgstr "Określ nazwę dla tej sieci."
+
#~ msgid "Bad address specified!"
#~ msgstr "Wprowadzono zły adres!"
diff --git a/modules/luci-base/po/pt-br/base.po b/modules/luci-base/po/pt-br/base.po
index 3570c3df9d..5830676ad0 100644
--- a/modules/luci-base/po/pt-br/base.po
+++ b/modules/luci-base/po/pt-br/base.po
@@ -23,7 +23,7 @@ msgstr "%.1f dB"
msgid "%d Bit"
msgstr "%d Bit"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "%d campo(s) inválido(s)"
@@ -58,7 +58,7 @@ msgstr "(nenhuma interface conectada)"
msgid "-- Additional Field --"
msgstr "-- Campo Adicional --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -69,7 +69,7 @@ msgstr "-- Campo Adicional --"
msgid "-- Please choose --"
msgstr "-- Por favor, escolha --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -210,7 +210,6 @@ msgstr ""
"6\">IPv6</abbr>-Suffix (hex)"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "Configuração do <abbr title=\"Diodo Emissor de Luz\">LED</abbr>"
@@ -684,16 +683,16 @@ msgstr "Qualquer zona"
msgid "Apply backup?"
msgstr "Aplicar cópia de segurança?"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr "Pedido para aplicar falhou com o estado <code>%h</code>"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr "Aplicar sem verificação"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr "Aplicando as mudanças de configuração... %ds"
@@ -928,7 +927,7 @@ msgid "Bring up on boot"
msgstr "Levantar na iniciação"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr "Explorar…"
@@ -961,7 +960,7 @@ msgid "Call failed"
msgstr "A chamada falhou"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -1027,11 +1026,11 @@ msgstr ""
msgid "Chain"
msgstr "Corrente"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Alterações"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr "As mudanças foram revertidas."
@@ -1188,16 +1187,16 @@ msgstr ""
"compatibilidade e reduzir a robustez da negociação de chaves, especialmente "
"em ambientes com muito tráfego."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Configuração"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr "A configuração foi aplicada."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr "A configuração foi revertida!"
@@ -1244,7 +1243,7 @@ msgstr "O conteúdo foi salvo."
msgid "Continue"
msgstr "Continuar"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1451,10 +1450,6 @@ msgstr "O padrão é sem estado + com estado"
msgid "Default state"
msgstr "Estado padrão"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Define um nome para esta rede."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1543,7 +1538,7 @@ msgstr "O dispositivo não está ativo"
msgid "Device is restarting…"
msgstr "O dispositivo está reiniciando…"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr "Dispositivo não alcançável!"
@@ -1630,9 +1625,9 @@ msgid "Disconnection attempt failed"
msgstr "A tentativa de desconexão falhou"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -2067,7 +2062,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr "Falha ao alterar a senha do sistema."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
"A confirmação das mudanças na configuração não foram confirmadas em %d "
@@ -3004,6 +2999,10 @@ msgstr "Limite de falha no eco do LCP"
msgid "LCP echo interval"
msgstr "Intervalo do eco do LCP"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -3058,7 +3057,7 @@ msgstr "Deixe vazio para detectar automaticamente"
msgid "Leave empty to use the current WAN address"
msgstr "Deixe vazio para usar o endereço WAN atual"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "Legenda:"
@@ -3174,7 +3173,7 @@ msgstr "Carga"
msgid "Load Average"
msgstr "Carga Média"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr "Carregando conteúdo do diretório…"
@@ -3603,9 +3602,8 @@ msgid "NTP server candidates"
msgstr "Candidatos a servidor NTP"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3878,11 +3876,11 @@ msgstr "OpenConnect (CISCO AnyConnect)"
msgid "Operating frequency"
msgstr "Frequência de Operação"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Opção alterada"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Opção removida"
@@ -4282,7 +4280,7 @@ msgstr "Pcts."
msgid "Please enter your username and password."
msgstr "Entre com o seu usuário e senha."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr "Por favor, selecione o arquivo para enviar."
@@ -4738,20 +4736,20 @@ msgstr "Restaurar cópia de segurança"
msgid "Reveal/hide password"
msgstr "Relevar/esconder senha"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Reverter"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr "Reverter as mudanças"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
"O pedido para reverter as configurações falhou com o estado <code>%h</code>"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr "Revertendo configurações…"
@@ -4867,7 +4865,7 @@ msgid "Save"
msgstr "Salvar"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Salvar & Aplicar"
@@ -4889,11 +4887,11 @@ msgstr "Procurar"
msgid "Scheduled Tasks"
msgstr "Tarefas Agendadas"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Seção adicionada"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Seção removida"
@@ -4913,7 +4911,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr "Selecione o arquivo…"
@@ -5036,7 +5034,7 @@ msgstr "Atenuação do Sinal (<abbr title=\"Signal Attenuation\">SATN</abbr>)"
msgid "Signal:"
msgstr "Sinal:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Tamanho"
@@ -5163,7 +5161,7 @@ msgstr "Iniciar"
msgid "Start priority"
msgstr "Prioridade de iniciação"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr "Iniciando a aplicação da configuração…"
@@ -5401,7 +5399,7 @@ msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
"O arquivo de configuração não pode ser carregado devido ao seguinte erro:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5599,7 +5597,7 @@ msgstr ""
msgid "There are no active leases"
msgstr "Não há concessões de IP ativas no momento"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr "Não há alterações a serem aplicadas"
@@ -5942,7 +5940,7 @@ msgstr "Desmontar"
msgid "Unnamed key"
msgstr "Chave sem nome"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Alterações Não Salvas"
@@ -5970,7 +5968,7 @@ msgstr "Tipo de protocolo não suportado."
msgid "Up"
msgstr "Acima"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr "Envio"
@@ -5996,12 +5994,12 @@ msgid "Upload file…"
msgstr "Enviar arquivo…"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr "A Solicitação de envio falhou: %s"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr "Enviando o arquivo…"
@@ -6915,6 +6913,9 @@ msgstr "sim"
msgid "« Back"
msgstr "« Voltar"
+#~ msgid "Define a name for this network."
+#~ msgstr "Define um nome para esta rede."
+
#~ msgid "Bad address specified!"
#~ msgstr "Endereço especificado está incorreto!"
diff --git a/modules/luci-base/po/pt/base.po b/modules/luci-base/po/pt/base.po
index 9d9ad0ad31..b60d0da5ec 100644
--- a/modules/luci-base/po/pt/base.po
+++ b/modules/luci-base/po/pt/base.po
@@ -23,7 +23,7 @@ msgstr "%.1f dB"
msgid "%d Bit"
msgstr "%d Bit"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "%d campo(s) inválido(s)"
@@ -58,7 +58,7 @@ msgstr "(sem interfaces ligadas)"
msgid "-- Additional Field --"
msgstr "-- Campo Adicional --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -69,7 +69,7 @@ msgstr "-- Campo Adicional --"
msgid "-- Please choose --"
msgstr "-- Por favor escolha --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -207,7 +207,6 @@ msgstr ""
"Sufixo (hex) <abbr title=\"Protocolo de Internet Versão 6\">IPv6</abbr>"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "Configuração do <abbr title=\"Diodo Emissor de Luz\">LED</abbr>"
@@ -672,16 +671,16 @@ msgstr "Qualquer zona"
msgid "Apply backup?"
msgstr "Aplicar backup?"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr "Pedido para aplicar falhou com o estado <code>%h</code>"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr "Aplicar desmarcado"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr "Aplicando alterações de configuração... %ds"
@@ -915,7 +914,7 @@ msgid "Bring up on boot"
msgstr "Ativar com o arranque"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr "Navegar…"
@@ -948,7 +947,7 @@ msgid "Call failed"
msgstr "A chamada falhou"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -1023,11 +1022,11 @@ msgstr ""
msgid "Chain"
msgstr "Cadeia"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Alterações"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr "As alterações foram revertidas."
@@ -1182,16 +1181,16 @@ msgstr ""
"a robustez da negociação de chaves, especialmente em ambientes com muito "
"tráfego."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Configuração"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr "A configuração foi aplicada."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr "A configuração foi revertida!"
@@ -1238,7 +1237,7 @@ msgstr "Os conteúdos foram gravados."
msgid "Continue"
msgstr "Continuar"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1443,10 +1442,6 @@ msgstr "O padrão é sem estado + com estado"
msgid "Default state"
msgstr "Estado predefinido"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Defina um nome para esta rede."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1535,7 +1530,7 @@ msgstr "O aparelho não está ativo"
msgid "Device is restarting…"
msgstr "O aparelho está a reiniciar…"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr "Aparelho não alcançável!"
@@ -1620,9 +1615,9 @@ msgid "Disconnection attempt failed"
msgstr "A tentativa de desconexão falhou"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -2045,7 +2040,7 @@ msgstr "Protocolo FT"
msgid "Failed to change the system password."
msgstr "Falha ao alterar a palavra-passe do sistema."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
"Não foi possível confirmar a aplicação das configurações dentro de %ds, "
@@ -2969,6 +2964,10 @@ msgstr "Limiar de falha no eco do LCP"
msgid "LCP echo interval"
msgstr "Intervalo de echo LCP"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -3023,7 +3022,7 @@ msgstr "Deixar em branco para auto-detecção"
msgid "Leave empty to use the current WAN address"
msgstr "Deixar em branco para usar o endereço WAN actual"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "Legenda:"
@@ -3137,7 +3136,7 @@ msgstr "Carregar"
msgid "Load Average"
msgstr "Carga Média"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr "Carregando o conteúdo do diretório…"
@@ -3567,9 +3566,8 @@ msgid "NTP server candidates"
msgstr "Candidatos a servidor NTP"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3842,11 +3840,11 @@ msgstr "OpenConnect (CISCO AnyConnect)"
msgid "Operating frequency"
msgstr "Frequência de Operação"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Opção alterada"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Opção removida"
@@ -4246,7 +4244,7 @@ msgstr "Pcts."
msgid "Please enter your username and password."
msgstr "Insira o seu username e password."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr "Por favor selecione o ficheiro para upload."
@@ -4700,20 +4698,20 @@ msgstr "Restaurar backup"
msgid "Reveal/hide password"
msgstr "Revelar/esconder password"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Reverter"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr "Reverter as mudanças"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
"O pedido para reverter as configurações falhou com o estado <code>%h</code>"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr "Revertendo configurações…"
@@ -4829,7 +4827,7 @@ msgid "Save"
msgstr "Guardar"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Gravar & Aplicar"
@@ -4851,11 +4849,11 @@ msgstr "Procurar"
msgid "Scheduled Tasks"
msgstr "Tarefas Agendadas"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Secção adicionada"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Secção removida"
@@ -4875,7 +4873,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr "Selecione o ficheiro.…"
@@ -4998,7 +4996,7 @@ msgstr "Atenuação do Sinal (<abbr title=\"Signal Attenuation\">SATN</abbr>)"
msgid "Signal:"
msgstr "Sinal:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Tamanho"
@@ -5125,7 +5123,7 @@ msgstr "Iniciar"
msgid "Start priority"
msgstr "Prioridade de inicialização"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr "Iniciando a aplicação da configuração…"
@@ -5364,7 +5362,7 @@ msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
"O ficheiros de configuração não pode ser carregado devido ao seguinte erro:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5561,7 +5559,7 @@ msgstr ""
msgid "There are no active leases"
msgstr "Não há arrendamentos ativos"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr "Não há alterações a serem aplicadas"
@@ -5903,7 +5901,7 @@ msgstr "Desmontar"
msgid "Unnamed key"
msgstr "Chave sem nome"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Alterações não Guardadas"
@@ -5931,7 +5929,7 @@ msgstr "Tipo de protocolo não suportado."
msgid "Up"
msgstr "Acima"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr "Enviar"
@@ -5957,12 +5955,12 @@ msgid "Upload file…"
msgstr "Enviar ficheiro…"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr "Pedido de envio falhou: %s"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr "Enviando o ficheiro…"
@@ -6878,6 +6876,9 @@ msgstr "sim"
msgid "« Back"
msgstr "« Voltar"
+#~ msgid "Define a name for this network."
+#~ msgstr "Defina um nome para esta rede."
+
#~ msgid "Bad address specified!"
#~ msgstr "Endereço incorreto especificado!"
diff --git a/modules/luci-base/po/ro/base.po b/modules/luci-base/po/ro/base.po
index ea3c7597c5..f2232d77ba 100644
--- a/modules/luci-base/po/ro/base.po
+++ b/modules/luci-base/po/ro/base.po
@@ -22,7 +22,7 @@ msgstr ""
msgid "%d Bit"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr ""
@@ -57,7 +57,7 @@ msgstr "(nici o interfata atasata)"
msgid "-- Additional Field --"
msgstr "-- Camp suplimentar --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -68,7 +68,7 @@ msgstr "-- Camp suplimentar --"
msgid "-- Please choose --"
msgstr "-- Te rog sa alegi --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -197,7 +197,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Configurare"
@@ -646,16 +645,16 @@ msgstr "Orice Zona"
msgid "Apply backup?"
msgstr "Aplică backup-ul?"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr "Se aplică schimbările configurării… %ds"
@@ -876,7 +875,7 @@ msgid "Bring up on boot"
msgstr "Activeaza la pornire"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr ""
@@ -908,7 +907,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -974,11 +973,11 @@ msgstr ""
msgid "Chain"
msgstr "Lant"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Modificari"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr ""
@@ -1125,16 +1124,16 @@ msgstr ""
"autentificare mai puțin robuste, în special în mediile cu încărcare a "
"traficului mare."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Configurație"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr "Noua configurație aplicată."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr "Schimbările asupra configurării au fost anulate!"
@@ -1181,7 +1180,7 @@ msgstr "Conţinutul a fost salvat."
msgid "Continue"
msgstr "Continuă"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1381,10 +1380,6 @@ msgstr ""
msgid "Default state"
msgstr "Stare implicita"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Definiti un nume pentru aceasta retea."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1470,7 +1465,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr "Dispozitivul repornește…"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr ""
@@ -1555,9 +1550,9 @@ msgid "Disconnection attempt failed"
msgstr "Încercarea deconectării a eșuat"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1956,7 +1951,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2856,6 +2851,10 @@ msgstr ""
msgid "LCP echo interval"
msgstr ""
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr ""
@@ -2910,7 +2909,7 @@ msgstr ""
msgid "Leave empty to use the current WAN address"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "Legenda:"
@@ -3007,7 +3006,7 @@ msgstr "Incărcare"
msgid "Load Average"
msgstr "Incărcarea medie"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3421,9 +3420,8 @@ msgid "NTP server candidates"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3691,11 +3689,11 @@ msgstr ""
msgid "Operating frequency"
msgstr "Frecvență de operare"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Optiunea schimbata"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Optiunea eliminata"
@@ -4077,7 +4075,7 @@ msgstr "Packete."
msgid "Please enter your username and password."
msgstr "Introdu utilizatorul si parola."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4512,19 +4510,19 @@ msgstr "Reface backup-ul"
msgid "Reveal/hide password"
msgstr "Arata / ascunde parola"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr "Restabileste schimbările anterioare"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr ""
@@ -4637,7 +4635,7 @@ msgid "Save"
msgstr "Salvează"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Salveaza si aplica"
@@ -4659,11 +4657,11 @@ msgstr "Scanează"
msgid "Scheduled Tasks"
msgstr "Operatiuni programate"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Sectiune adaugata"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Sectiune eliminata"
@@ -4680,7 +4678,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr "Selectează fișier…"
@@ -4794,7 +4792,7 @@ msgstr ""
msgid "Signal:"
msgstr "Semnal:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Marime"
@@ -4907,7 +4905,7 @@ msgstr "Pornește"
msgid "Start priority"
msgstr "Prioritatea pornirii"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5133,7 +5131,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5293,7 +5291,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5609,7 +5607,7 @@ msgstr ""
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Modificari nesalvate"
@@ -5635,7 +5633,7 @@ msgstr "Tipul de protocol neacceptat."
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5659,12 +5657,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
@@ -6549,6 +6547,9 @@ msgstr "da"
msgid "« Back"
msgstr "« Inapoi"
+#~ msgid "Define a name for this network."
+#~ msgstr "Definiti un nume pentru aceasta retea."
+
#~ msgid "Bad address specified!"
#~ msgstr "Adresa specificata gresit !"
diff --git a/modules/luci-base/po/ru/base.po b/modules/luci-base/po/ru/base.po
index 9c1d17f969..4475fec09c 100644
--- a/modules/luci-base/po/ru/base.po
+++ b/modules/luci-base/po/ru/base.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: LuCI: base\n"
"POT-Creation-Date: 2010-05-09 01:01+0300\n"
-"PO-Revision-Date: 2020-01-19 20:38+0000\n"
+"PO-Revision-Date: 2020-01-25 00:22+0000\n"
"Last-Translator: Anton Kikin <a.a.kikin@gmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/openwrt/luci/ru/>"
"\n"
@@ -25,7 +25,7 @@ msgstr "%.1f дБ"
msgid "%d Bit"
msgstr "%d бит"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "%d неверных полей"
@@ -60,7 +60,7 @@ msgstr "(нет связанных интерфейсов)"
msgid "-- Additional Field --"
msgstr "-- Дополнительно --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -71,7 +71,7 @@ msgstr "-- Дополнительно --"
msgid "-- Please choose --"
msgstr "-- Сделайте выбор --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -202,7 +202,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr "<abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-суффикс (hex)"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "Настройка <abbr title=\"Светодиод\">LED</abbr> индикации"
@@ -670,16 +669,16 @@ msgstr "Любая зона"
msgid "Apply backup?"
msgstr "Восстановить резервную копию?"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr "Ошибка <code>%h</code> запроса на применение"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr "Применить без проверки"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr "Ожидание применения конфигурации... %d сек"
@@ -916,7 +915,7 @@ msgid "Bring up on boot"
msgstr "Запустить при загрузке"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr "Обзор…"
@@ -949,7 +948,7 @@ msgid "Call failed"
msgstr "Ошибка вызова"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -1024,11 +1023,11 @@ msgstr ""
msgid "Chain"
msgstr "Цепочка"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Изменения"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr "Изменения были возвращены назад."
@@ -1185,16 +1184,16 @@ msgstr ""
"Может вызвать проблемы совместимости и снижение надежности согласования "
"нового ключа, при наличии большого трафика."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Конфигурация"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr "Конфигурация применена."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr "Конфигурация возвращена назад!"
@@ -1241,7 +1240,7 @@ msgstr "Содержимое сохранено."
msgid "Continue"
msgstr "Продолжить"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1445,10 +1444,6 @@ msgstr "Значение по умолчанию — 'stateless + stateful'"
msgid "Default state"
msgstr "Начальное состояние"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Укажите имя этой сети."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1537,7 +1532,7 @@ msgstr "Устройство не активно"
msgid "Device is restarting…"
msgstr "Устройство перезапускается…"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr "Устройство недоступно!"
@@ -1622,9 +1617,9 @@ msgid "Disconnection attempt failed"
msgstr "Ошибка попытки отключения"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -2044,7 +2039,7 @@ msgstr "FT протокол"
msgid "Failed to change the system password."
msgstr "Не удалось изменить системный пароль."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr "Не удалось подтвердить применение в течении %d сек., ожидание отката…"
@@ -2962,6 +2957,10 @@ msgstr "Порог ошибок эхо-запросов LCP"
msgid "LCP echo interval"
msgstr "Интервал эхо-запросов LCP"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr "Конфигурация LED"
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -3016,7 +3015,7 @@ msgstr "Оставьте поле пустым для автоопределен
msgid "Leave empty to use the current WAN address"
msgstr "Оставьте пустым для использования текущего адреса WAN"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "События:"
@@ -3127,7 +3126,7 @@ msgstr "Загрузка"
msgid "Load Average"
msgstr "Средняя загрузка"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr "Загрузка содержимого директории…"
@@ -3552,9 +3551,8 @@ msgid "NTP server candidates"
msgstr "Список NTP-серверов"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3824,11 +3822,11 @@ msgstr "OpenConnect (CISCO AnyConnect)"
msgid "Operating frequency"
msgstr "Настройка частоты"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Опция изменена"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Опция удалена"
@@ -4226,7 +4224,7 @@ msgstr "пакетов"
msgid "Please enter your username and password."
msgstr "Введите логин и пароль."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr "Пожалуйста, выберите файл для загрузки."
@@ -4681,19 +4679,19 @@ msgstr "Восстановить резервную копию"
msgid "Reveal/hide password"
msgstr "Показать/скрыть пароль"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Вернуть"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr "Вернуть изменения"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr "Ошибка <code>%h</code> отмены конфигурации"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr "Отмена конфигурации…"
@@ -4808,7 +4806,7 @@ msgid "Save"
msgstr "Сохранить"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Сохранить и применить"
@@ -4830,11 +4828,11 @@ msgstr "Поиск"
msgid "Scheduled Tasks"
msgstr "Запланированные задания"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Строки добавлены"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Строки удалены"
@@ -4854,7 +4852,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr "Выбрать файл…"
@@ -4971,7 +4969,7 @@ msgstr "Затухание сигнала (SATN)"
msgid "Signal:"
msgstr "Сигнал:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Размер"
@@ -5098,7 +5096,7 @@ msgstr "Запустить"
msgid "Start priority"
msgstr "Приоритет"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr "Применение конфигурации…"
@@ -5334,7 +5332,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr "Не удалось загрузить config файл из-за следующей ошибки:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5527,7 +5525,7 @@ msgstr ""
msgid "There are no active leases"
msgstr "Нет активных арендованных адресов"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr "Нет изменений для применения"
@@ -5866,7 +5864,7 @@ msgstr "Отмонтировать"
msgid "Unnamed key"
msgstr "Ключ без имени"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Не принятые изменения"
@@ -5892,7 +5890,7 @@ msgstr "Не поддерживаемый тип протокола."
msgid "Up"
msgstr "Вверх"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr "Загрузить"
@@ -5917,12 +5915,12 @@ msgid "Upload file…"
msgstr "Загрузка файла…"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr "Ошибка запроса на загрузку: %d %s"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr "Загрузка файла…"
@@ -6837,6 +6835,9 @@ msgstr "да"
msgid "« Back"
msgstr "« Назад"
+#~ msgid "Define a name for this network."
+#~ msgstr "Укажите имя этой сети."
+
#~ msgid "Bad address specified!"
#~ msgstr "Указан неправильный адрес!"
diff --git a/modules/luci-base/po/sk/base.po b/modules/luci-base/po/sk/base.po
index a7a7397de4..84707b3abf 100644
--- a/modules/luci-base/po/sk/base.po
+++ b/modules/luci-base/po/sk/base.po
@@ -21,7 +21,7 @@ msgstr "%.1f dB"
msgid "%d Bit"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "%d neplatných políčok"
@@ -56,7 +56,7 @@ msgstr ""
msgid "-- Additional Field --"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -67,7 +67,7 @@ msgstr ""
msgid "-- Please choose --"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -193,7 +193,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr ""
@@ -634,16 +633,16 @@ msgstr ""
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -864,7 +863,7 @@ msgid "Bring up on boot"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr ""
@@ -896,7 +895,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -962,11 +961,11 @@ msgstr ""
msgid "Chain"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr ""
@@ -1104,16 +1103,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr ""
@@ -1160,7 +1159,7 @@ msgstr ""
msgid "Continue"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1357,10 +1356,6 @@ msgstr ""
msgid "Default state"
msgstr ""
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr ""
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1446,7 +1441,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr ""
@@ -1529,9 +1524,9 @@ msgid "Disconnection attempt failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1930,7 +1925,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2824,6 +2819,10 @@ msgstr ""
msgid "LCP echo interval"
msgstr ""
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr ""
@@ -2878,7 +2877,7 @@ msgstr ""
msgid "Leave empty to use the current WAN address"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr ""
@@ -2975,7 +2974,7 @@ msgstr ""
msgid "Load Average"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3389,9 +3388,8 @@ msgid "NTP server candidates"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3659,11 +3657,11 @@ msgstr ""
msgid "Operating frequency"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr ""
@@ -4045,7 +4043,7 @@ msgstr ""
msgid "Please enter your username and password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4478,19 +4476,19 @@ msgstr ""
msgid "Reveal/hide password"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr ""
@@ -4603,7 +4601,7 @@ msgid "Save"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr ""
@@ -4625,11 +4623,11 @@ msgstr ""
msgid "Scheduled Tasks"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr ""
@@ -4646,7 +4644,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4760,7 +4758,7 @@ msgstr ""
msgid "Signal:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr ""
@@ -4873,7 +4871,7 @@ msgstr ""
msgid "Start priority"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5099,7 +5097,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5259,7 +5257,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5573,7 +5571,7 @@ msgstr ""
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr ""
@@ -5599,7 +5597,7 @@ msgstr ""
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5623,12 +5621,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
diff --git a/modules/luci-base/po/sv/base.po b/modules/luci-base/po/sv/base.po
index a0c01d96e4..a10e7a0c05 100644
--- a/modules/luci-base/po/sv/base.po
+++ b/modules/luci-base/po/sv/base.po
@@ -21,7 +21,7 @@ msgstr ""
msgid "%d Bit"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr ""
@@ -56,7 +56,7 @@ msgstr "(inga gränssnitt har bifogats)"
msgid "-- Additional Field --"
msgstr "-- Ytterligare fält --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -67,7 +67,7 @@ msgstr "-- Ytterligare fält --"
msgid "-- Please choose --"
msgstr "-- Vänligen välj --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -196,7 +196,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "<abbr title=\"Lysdiod\">LED</abbr>-konfiguration"
@@ -642,16 +641,16 @@ msgstr "Någon zon"
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -872,7 +871,7 @@ msgid "Bring up on boot"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr "Bläddra…"
@@ -905,7 +904,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -971,11 +970,11 @@ msgstr ""
msgid "Chain"
msgstr "Kedja"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Ändringar"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr "Ändringar har återställts."
@@ -1115,16 +1114,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Konfiguration"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr ""
@@ -1171,7 +1170,7 @@ msgstr "Innehåll har sparats."
msgid "Continue"
msgstr "Fortsätt"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1368,10 +1367,6 @@ msgstr ""
msgid "Default state"
msgstr "Standardläge"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Ange ett namn för det här nätverket."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1457,7 +1452,7 @@ msgstr "Enheten är ej aktiv"
msgid "Device is restarting…"
msgstr "Enheten startas om…"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr "Enheten kan inte nås!"
@@ -1542,9 +1537,9 @@ msgid "Disconnection attempt failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1948,7 +1943,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr "Byte av systemlösenord misslyckades."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2842,6 +2837,10 @@ msgstr ""
msgid "LCP echo interval"
msgstr ""
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -2896,7 +2895,7 @@ msgstr "Lämna tom för att upptäcka automatiskt"
msgid "Leave empty to use the current WAN address"
msgstr "Lämna tom för att använda den nuvarande WAN-adressen"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr ""
@@ -2994,7 +2993,7 @@ msgstr "Belastning"
msgid "Load Average"
msgstr "Snitt-belastning"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3408,9 +3407,8 @@ msgid "NTP server candidates"
msgstr "NTP-serverkandidater"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3678,11 +3676,11 @@ msgstr "OpenConnect (CISCO AnyConnect)"
msgid "Operating frequency"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Alternativet ändrades"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Alternativet togs bort"
@@ -4064,7 +4062,7 @@ msgstr "Pkt."
msgid "Please enter your username and password."
msgstr "Vänligen ange ditt användarnamn och lösenord."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4499,19 +4497,19 @@ msgstr "Återställ säkerhetskopian"
msgid "Reveal/hide password"
msgstr "Visa/göm lösenord"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Återgå"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr ""
@@ -4624,7 +4622,7 @@ msgid "Save"
msgstr "Spara"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Spara och Verkställ"
@@ -4646,11 +4644,11 @@ msgstr "Skanna"
msgid "Scheduled Tasks"
msgstr "Schemalagda uppgifter"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Sektionen lades till"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Sektionen togs bort"
@@ -4667,7 +4665,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4781,7 +4779,7 @@ msgstr ""
msgid "Signal:"
msgstr "Signal:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Storlek"
@@ -4894,7 +4892,7 @@ msgstr "Starta"
msgid "Start priority"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5120,7 +5118,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5280,7 +5278,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5598,7 +5596,7 @@ msgstr "Avmontera"
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Osparade ändringar"
@@ -5624,7 +5622,7 @@ msgstr "Protokolltypen stöds inte."
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5648,12 +5646,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
@@ -6539,6 +6537,9 @@ msgstr "ja"
msgid "« Back"
msgstr "« Bakåt"
+#~ msgid "Define a name for this network."
+#~ msgstr "Ange ett namn för det här nätverket."
+
#~ msgid "Bad address specified!"
#~ msgstr "Fel adress angiven!"
diff --git a/modules/luci-base/po/templates/base.pot b/modules/luci-base/po/templates/base.pot
index 49676c0ed5..2e754536b9 100644
--- a/modules/luci-base/po/templates/base.pot
+++ b/modules/luci-base/po/templates/base.pot
@@ -10,7 +10,7 @@ msgstr ""
msgid "%d Bit"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr ""
@@ -45,7 +45,7 @@ msgstr ""
msgid "-- Additional Field --"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -56,7 +56,7 @@ msgstr ""
msgid "-- Please choose --"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -182,7 +182,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr ""
@@ -623,16 +622,16 @@ msgstr ""
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -853,7 +852,7 @@ msgid "Bring up on boot"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr ""
@@ -885,7 +884,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -951,11 +950,11 @@ msgstr ""
msgid "Chain"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr ""
@@ -1093,16 +1092,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr ""
@@ -1149,7 +1148,7 @@ msgstr ""
msgid "Continue"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1346,10 +1345,6 @@ msgstr ""
msgid "Default state"
msgstr ""
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr ""
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1435,7 +1430,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr ""
@@ -1518,9 +1513,9 @@ msgid "Disconnection attempt failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1919,7 +1914,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2813,6 +2808,10 @@ msgstr ""
msgid "LCP echo interval"
msgstr ""
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr ""
@@ -2867,7 +2866,7 @@ msgstr ""
msgid "Leave empty to use the current WAN address"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr ""
@@ -2964,7 +2963,7 @@ msgstr ""
msgid "Load Average"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3378,9 +3377,8 @@ msgid "NTP server candidates"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3648,11 +3646,11 @@ msgstr ""
msgid "Operating frequency"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr ""
@@ -4034,7 +4032,7 @@ msgstr ""
msgid "Please enter your username and password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4467,19 +4465,19 @@ msgstr ""
msgid "Reveal/hide password"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr ""
@@ -4592,7 +4590,7 @@ msgid "Save"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr ""
@@ -4614,11 +4612,11 @@ msgstr ""
msgid "Scheduled Tasks"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr ""
@@ -4635,7 +4633,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4749,7 +4747,7 @@ msgstr ""
msgid "Signal:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr ""
@@ -4862,7 +4860,7 @@ msgstr ""
msgid "Start priority"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5088,7 +5086,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5248,7 +5246,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5562,7 +5560,7 @@ msgstr ""
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr ""
@@ -5588,7 +5586,7 @@ msgstr ""
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5612,12 +5610,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
diff --git a/modules/luci-base/po/tr/base.po b/modules/luci-base/po/tr/base.po
index a74dd2651f..25be84b35c 100644
--- a/modules/luci-base/po/tr/base.po
+++ b/modules/luci-base/po/tr/base.po
@@ -24,7 +24,7 @@ msgstr "%.1f dB"
msgid "%d Bit"
msgstr "%d Bit"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "%d geçersiz alan(lar)"
@@ -59,7 +59,7 @@ msgstr "(arayüz eklenmedi)"
msgid "-- Additional Field --"
msgstr "-- Ek Alan--"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -70,7 +70,7 @@ msgstr "-- Ek Alan--"
msgid "-- Please choose --"
msgstr "-- Lütfen seçiniz --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -199,7 +199,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Ayarları"
@@ -653,16 +652,16 @@ msgstr ""
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -883,7 +882,7 @@ msgid "Bring up on boot"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr ""
@@ -915,7 +914,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -981,11 +980,11 @@ msgstr ""
msgid "Chain"
msgstr "Zincir"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Değişiklikler"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr ""
@@ -1125,16 +1124,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr ""
@@ -1181,7 +1180,7 @@ msgstr ""
msgid "Continue"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1378,10 +1377,6 @@ msgstr ""
msgid "Default state"
msgstr "Varsayılan durum"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Bu ağ için bir ad tanımlayın."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1467,7 +1462,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr "Cihaz ulaşılamaz!"
@@ -1552,9 +1547,9 @@ msgid "Disconnection attempt failed"
msgstr "Bağlantı kesme girişimi başarısız oldu"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1953,7 +1948,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2847,6 +2842,10 @@ msgstr ""
msgid "LCP echo interval"
msgstr ""
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr ""
@@ -2901,7 +2900,7 @@ msgstr ""
msgid "Leave empty to use the current WAN address"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr ""
@@ -2998,7 +2997,7 @@ msgstr ""
msgid "Load Average"
msgstr "Ortalama Yük"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3412,9 +3411,8 @@ msgid "NTP server candidates"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3682,11 +3680,11 @@ msgstr ""
msgid "Operating frequency"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr ""
@@ -4068,7 +4066,7 @@ msgstr ""
msgid "Please enter your username and password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4501,19 +4499,19 @@ msgstr "Yedeklemeyi geri yükle"
msgid "Reveal/hide password"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Dönmek"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr "Değişiklikleri geri al"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr ""
@@ -4627,7 +4625,7 @@ msgid "Save"
msgstr "Kaydet"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Kaydet & Uygula"
@@ -4649,11 +4647,11 @@ msgstr "Tara"
msgid "Scheduled Tasks"
msgstr "Zamanlanmış Görevler"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Bölüm eklendi"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Bölüm kaldırıldı"
@@ -4670,7 +4668,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4784,7 +4782,7 @@ msgstr "Sinyal Zayıflama (SATN)"
msgid "Signal:"
msgstr "Sinyal:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Boyut"
@@ -4897,7 +4895,7 @@ msgstr "Başlat"
msgid "Start priority"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr ""
@@ -5123,7 +5121,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5283,7 +5281,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5597,7 +5595,7 @@ msgstr ""
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr ""
@@ -5623,7 +5621,7 @@ msgstr ""
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5647,12 +5645,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
@@ -6537,6 +6535,9 @@ msgstr "evet"
msgid "« Back"
msgstr "« Geri"
+#~ msgid "Define a name for this network."
+#~ msgstr "Bu ağ için bir ad tanımlayın."
+
#~ msgid "Loading"
#~ msgstr "Yükleniyor"
diff --git a/modules/luci-base/po/uk/base.po b/modules/luci-base/po/uk/base.po
index d946d9810a..5430d23802 100644
--- a/modules/luci-base/po/uk/base.po
+++ b/modules/luci-base/po/uk/base.po
@@ -22,7 +22,7 @@ msgstr "%.1f дБ"
msgid "%d Bit"
msgstr "%d біт"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "%d неприпустимі поля"
@@ -57,7 +57,7 @@ msgstr "(нема приєднаних інтерфейсів)"
msgid "-- Additional Field --"
msgstr "-- Додаткові поля --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -68,7 +68,7 @@ msgstr "-- Додаткові поля --"
msgid "-- Please choose --"
msgstr "-- Оберіть --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -208,7 +208,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr "<abbr title=\"Інтернет-протокол версії 6\">IPv6</abbr>-суфікс (hex)"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr ""
"Налаштування <abbr title=\"Light Emitting Diode — світлодіод\">LED</abbr>"
@@ -684,16 +683,16 @@ msgstr "Будь-яка зона"
msgid "Apply backup?"
msgstr "Застосувати резервну копію?"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr "Сталася помилка запиту на застосування зі статусом <code>%h</code>"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr "Застосувати без перевірки"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr "Очікування на застосування конфігурації… %d c"
@@ -925,7 +924,7 @@ msgid "Bring up on boot"
msgstr "Піднімати при завантаженні"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr "Огляд…"
@@ -958,7 +957,7 @@ msgid "Call failed"
msgstr "Не вдалося здійснити виклик"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -1024,11 +1023,11 @@ msgstr ""
msgid "Chain"
msgstr "Ланцюжок"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Зміни"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr "Зміни було скасовано."
@@ -1182,16 +1181,16 @@ msgstr ""
"Може викликати проблеми сумісності та зниження стійкості узгодження ключа, "
"особливо в середовищах з великою завантаженістю трафіку."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Конфігурація"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr "Зміни конфігурації застосовано."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr "Зміни конфігурації було скасовано!"
@@ -1238,7 +1237,7 @@ msgstr "Вміст збережено."
msgid "Continue"
msgstr "Продовжити"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1446,10 +1445,6 @@ msgstr "Типовим є БЕЗ та ЗІ збереженням стану"
msgid "Default state"
msgstr "Типовий стан"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Визначте назву для цієї мережі."
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1538,7 +1533,7 @@ msgstr "Пристрій не є активним"
msgid "Device is restarting…"
msgstr "Пристрій перезавантажується…"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr "Пристрій недосяжний!"
@@ -1623,9 +1618,9 @@ msgid "Disconnection attempt failed"
msgstr "Спроба від'єднання не вдалася"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -2049,7 +2044,7 @@ msgstr "Протокол FT"
msgid "Failed to change the system password."
msgstr "Не вдалося змінити системний пароль."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr "Не вдалося підтвердити застосування на протязі %d с, очікуємо відкату…"
@@ -2973,6 +2968,10 @@ msgstr "Поріг помилок ехо-запитів LCP"
msgid "LCP echo interval"
msgstr "Інтервал ехо-запитів LCP"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -3027,7 +3026,7 @@ msgstr "Залиште поле порожнім для автовизначен
msgid "Leave empty to use the current WAN address"
msgstr "Залиште порожнім, щоб використовувати поточну адресу WAN"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "Легенда:"
@@ -3146,7 +3145,7 @@ msgstr "Навантаження"
msgid "Load Average"
msgstr "Середнє навантаження"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr "Завантаження вмісту каталогу…"
@@ -3573,9 +3572,8 @@ msgid "NTP server candidates"
msgstr "Сервери NTP – кандидати для синхронізації"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3843,11 +3841,11 @@ msgstr "OpenConnect (CISCO AnyConnect)"
msgid "Operating frequency"
msgstr "Робоча частота"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Опція змінена"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Опція видалена"
@@ -4249,7 +4247,7 @@ msgstr "пакетів"
msgid "Please enter your username and password."
msgstr "Введіть ім'я користувача і пароль."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr "Виберіть файл для відвантаження."
@@ -4702,19 +4700,19 @@ msgstr "Відновити з резервної копії"
msgid "Reveal/hide password"
msgstr "Показати/приховати пароль"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Скасувати"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr "Скасувати зміни"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr "Помилка запиту на скасування зі статусом <code>%h</code>"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr "Відкат конфігурації…"
@@ -4829,7 +4827,7 @@ msgid "Save"
msgstr "Зберегти"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Зберегти і застосувати"
@@ -4851,11 +4849,11 @@ msgstr "Сканувати"
msgid "Scheduled Tasks"
msgstr "Заплановані завдання"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Секцію додано"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Секцію видалено"
@@ -4875,7 +4873,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr "Виберіть файл…"
@@ -4995,7 +4993,7 @@ msgstr "Затухання сигналу (SATN)"
msgid "Signal:"
msgstr "Сигнал:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Розмір"
@@ -5122,7 +5120,7 @@ msgstr "Запустити"
msgid "Start priority"
msgstr "Стартовий пріоритет"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr "Розпочато застосування конфігурації…"
@@ -5360,7 +5358,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr "Файл конфігурації не вдалося завантажити через таку помилку:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5556,7 +5554,7 @@ msgstr ""
msgid "There are no active leases"
msgstr "Немає жодних активних оренд"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr "Немає жодних змін до застосування"
@@ -5896,7 +5894,7 @@ msgstr "Демонтувати"
msgid "Unnamed key"
msgstr "Безіменний ключ"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Незбережені зміни"
@@ -5922,7 +5920,7 @@ msgstr "Непідтримуваний тип протоколу."
msgid "Up"
msgstr "Вгору"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr "Відвантажити"
@@ -5948,12 +5946,12 @@ msgid "Upload file…"
msgstr "Відвантажити файл…"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr "Не вдалося виконати запит на відвантаження: %s"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr "Відвантаження файлу…"
@@ -6867,6 +6865,9 @@ msgstr "так"
msgid "« Back"
msgstr "« Назад"
+#~ msgid "Define a name for this network."
+#~ msgstr "Визначте назву для цієї мережі."
+
#~ msgid "Bad address specified!"
#~ msgstr "Вказано неправильну адресу!"
diff --git a/modules/luci-base/po/vi/base.po b/modules/luci-base/po/vi/base.po
index abff10f409..10c2dc920f 100644
--- a/modules/luci-base/po/vi/base.po
+++ b/modules/luci-base/po/vi/base.po
@@ -23,7 +23,7 @@ msgstr ""
msgid "%d Bit"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "%d trường không hợp lệ"
@@ -58,7 +58,7 @@ msgstr "(chưa được kết nối với giao diện mạng)"
msgid "-- Additional Field --"
msgstr "---Mục bổ sung---"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -69,7 +69,7 @@ msgstr "---Mục bổ sung---"
msgid "-- Please choose --"
msgstr "--Hãy chọn--"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -200,7 +200,6 @@ msgstr ""
"<abbr title=\"giao thức internet phiên bản 6\">IPv6</abbr>-Suffix (hex)"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "<abbr title=\"đèn LEDLED\">LED</abbr> Configuration"
@@ -659,16 +658,16 @@ msgstr ""
msgid "Apply backup?"
msgstr "Chấp nhận sao lưu?"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr "Áp dụng yêu cầu không thành công với trạng thái <code>%h</code>"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr "Áp dụng không kiểm tra"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr "Đợi cấu hình được áp dụng... %ds"
@@ -899,7 +898,7 @@ msgid "Bring up on boot"
msgstr "Áp dụng khi khởi động"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr "Duyệt..."
@@ -931,7 +930,7 @@ msgid "Call failed"
msgstr "Liên lạc thất bại"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -997,11 +996,11 @@ msgstr ""
msgid "Chain"
msgstr "chuỗi"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "Thay đổi"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr "Những thay đổi đã được phục hồi"
@@ -1149,16 +1148,16 @@ msgstr ""
"khóa. Cách khắc phục này có thể gây ra các vấn đề về khả năng tương tác và "
"giảm độ mạnh của khóa, đặc biệt là trong các môi trường có lưu lượng tải lớn."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "Cấu hình"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr "Cấu hình đã được áp dụng"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr "Cấu hình đã được hoàn lại!"
@@ -1205,7 +1204,7 @@ msgstr "Nội dung đã được lưu"
msgid "Continue"
msgstr "Tiếp tục"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1409,10 +1408,6 @@ msgstr "Trạng thái và không gian trạng thái mặc định"
msgid "Default state"
msgstr "Trạng thái mặc định"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "Định tên cho mạng này"
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1498,7 +1493,7 @@ msgstr "thiết bị chưa được kích hoạt"
msgid "Device is restarting…"
msgstr "Khởi động lại thiết bị ..."
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr "Thiết bị không thể truy cập! "
@@ -1583,9 +1578,9 @@ msgid "Disconnection attempt failed"
msgstr "Kết nối thất bại"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -2001,7 +1996,7 @@ msgstr "Giao thức FT"
msgid "Failed to change the system password."
msgstr "Đổi mật khẩu hệ thống thất bại"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr "Thất bại khi xác thực áp dụng %ds, đợi làm lại..."
@@ -2918,6 +2913,10 @@ msgstr "Lấy ngưỡng LCP thất bại"
msgid "LCP echo interval"
msgstr "Chu kỳ lấy LCP"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr ""
@@ -2972,7 +2971,7 @@ msgstr "Để trống để tự động phát hiện"
msgid "Leave empty to use the current WAN address"
msgstr "Để trống để sử dụng địa chỉ WAN hiện tại"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr ""
@@ -3081,7 +3080,7 @@ msgstr "Tải "
msgid "Load Average"
msgstr "Tải trung bình"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr "Đang tải nội dung thư mục..."
@@ -3502,9 +3501,8 @@ msgid "NTP server candidates"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3774,11 +3772,11 @@ msgstr ""
msgid "Operating frequency"
msgstr "Tần số hoạt động"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "Thay đổi tùy chỉnh"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "Xóa tùy chỉnh"
@@ -4175,7 +4173,7 @@ msgstr ""
msgid "Please enter your username and password."
msgstr "Nhập tên và mật mã"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4630,19 +4628,19 @@ msgstr "Phục hồi backup"
msgid "Reveal/hide password"
msgstr "Hiển thị/ẩn mật khẩu"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "Hoàn nguyên"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr "Hoàn nguyên thay đổi"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr "Yêu cầu hoàn nguyên không thành công với trạng thái <code>%h</code>"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr "Đang hoàn nguyên cấu hình .."
@@ -4757,7 +4755,7 @@ msgid "Save"
msgstr "Lưu"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "Lưu & áp dụng "
@@ -4779,11 +4777,11 @@ msgstr "quét"
msgid "Scheduled Tasks"
msgstr "Nhiệm vụ theo lịch trình"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "Thêm mục"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "Xóa mục"
@@ -4803,7 +4801,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr "Chọn tệp"
@@ -4920,7 +4918,7 @@ msgstr "Độ suy hao tín hiệu (SATN)"
msgid "Signal:"
msgstr "Tín hiệu:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "Dung lượng "
@@ -5043,7 +5041,7 @@ msgstr "Bắt đầu "
msgid "Start priority"
msgstr "Bắt đầu ưu tiên"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr "Đang áp dụng cáu hình ..."
@@ -5277,7 +5275,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5466,7 +5464,7 @@ msgstr ""
msgid "There are no active leases"
msgstr "Không có máy được cấp IP nào hoạt động"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr "Không có thay đổi nào để áp dụng"
@@ -5802,7 +5800,7 @@ msgstr "Hủy gắn kết"
msgid "Unnamed key"
msgstr "Khóa không tên"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "Thay đổi không lưu"
@@ -5828,7 +5826,7 @@ msgstr "Giao thức này không được hỗ trợ"
msgid "Up"
msgstr "Lên"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr "Tải lên"
@@ -5854,12 +5852,12 @@ msgid "Upload file…"
msgstr "Đang tải tin lên ..."
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr "Yêu cầu tải thất bại: %s"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr "Đang tải tin lên ..."
@@ -6767,6 +6765,9 @@ msgstr "Có"
msgid "« Back"
msgstr "« Quay lại"
+#~ msgid "Define a name for this network."
+#~ msgstr "Định tên cho mạng này"
+
#~ msgid "Bad address specified!"
#~ msgstr "Địa chỉ không đạt yêu cầu"
diff --git a/modules/luci-base/po/zh-cn/base.po b/modules/luci-base/po/zh-cn/base.po
index daf1776ee9..a2a0acafb5 100644
--- a/modules/luci-base/po/zh-cn/base.po
+++ b/modules/luci-base/po/zh-cn/base.po
@@ -23,7 +23,7 @@ msgstr "%.1f dB"
msgid "%d Bit"
msgstr "%d Bit"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr "%d 个无效字段"
@@ -58,7 +58,7 @@ msgstr "(没有接口连接)"
msgid "-- Additional Field --"
msgstr "-- 更多选项 --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -69,7 +69,7 @@ msgstr "-- 更多选项 --"
msgid "-- Please choose --"
msgstr "-- 请选择 --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -199,7 +199,6 @@ msgstr ""
"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr> 后缀(十六进制)"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 配置"
@@ -648,16 +647,16 @@ msgstr "任意区域"
msgid "Apply backup?"
msgstr "应用备份?"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr "应用请求失败,状态 <code>%h</code>"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr "强制应用"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr "正在等待配置被应用… %ds"
@@ -880,7 +879,7 @@ msgid "Bring up on boot"
msgstr "开机自动运行"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr "浏览…"
@@ -912,7 +911,7 @@ msgid "Call failed"
msgstr "调用失败"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -978,11 +977,11 @@ msgstr ""
msgid "Chain"
msgstr "链"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "更改数"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr "更改已恢复。"
@@ -1127,16 +1126,16 @@ msgstr ""
"杂度。此解决方法可能会导致互操作性问题,并降低密钥协商的可靠性,特别是在流量"
"负载较重的环境中。"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "配置"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr "配置已应用。"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr "配置已回滚!"
@@ -1183,7 +1182,7 @@ msgstr "内容已保存。"
msgid "Continue"
msgstr "继续"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1383,10 +1382,6 @@ msgstr "默认是无状态的 + 有状态的"
msgid "Default state"
msgstr "默认状态"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "为网络定义名称。"
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1474,7 +1469,7 @@ msgstr "设备未激活"
msgid "Device is restarting…"
msgstr "设备正在重启…"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr "无法连接到设备!"
@@ -1559,9 +1554,9 @@ msgid "Disconnection attempt failed"
msgstr "尝试断开连接失败"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1968,7 +1963,7 @@ msgstr "FT 协议"
msgid "Failed to change the system password."
msgstr "更改系统密码失败。"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr "在 %d 秒内确认应用失败,等待回滚…"
@@ -2870,6 +2865,10 @@ msgstr "LCP 响应故障阈值"
msgid "LCP echo interval"
msgstr "LCP 响应间隔"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC"
@@ -2924,7 +2923,7 @@ msgstr "留空则自动探测"
msgid "Leave empty to use the current WAN address"
msgstr "留空则使用当前 WAN 地址"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "图例:"
@@ -3029,7 +3028,7 @@ msgstr "负载"
msgid "Load Average"
msgstr "平均负载"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr "正在载入目录内容…"
@@ -3443,9 +3442,8 @@ msgid "NTP server candidates"
msgstr "候选 NTP 服务器"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3713,11 +3711,11 @@ msgstr "OpenConnect (CISCO AnyConnect)"
msgid "Operating frequency"
msgstr "工作频率"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "选项已更改"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "选项已移除"
@@ -4105,7 +4103,7 @@ msgstr "数据包"
msgid "Please enter your username and password."
msgstr "请输入用户名和密码。"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr "请选择要上传的文件。"
@@ -4547,19 +4545,19 @@ msgstr "恢复配置"
msgid "Reveal/hide password"
msgstr "显示/隐藏 密码"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "恢复"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr "恢复更改"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr "恢复请求失败,状态 <code>%h</code>"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr "正在恢复配置…"
@@ -4672,7 +4670,7 @@ msgid "Save"
msgstr "保存"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "保存并应用"
@@ -4694,11 +4692,11 @@ msgstr "扫描"
msgid "Scheduled Tasks"
msgstr "计划任务"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "添加的节点"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "移除的节点"
@@ -4717,7 +4715,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr "选择文件…"
@@ -4833,7 +4831,7 @@ msgstr "信号衰减(SATN)"
msgid "Signal:"
msgstr "信号:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "大小"
@@ -4950,7 +4948,7 @@ msgstr "启动"
msgid "Start priority"
msgstr "启动优先级"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr "开始应用配置…"
@@ -5180,7 +5178,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr "由于以下错误,配置文件无法被加载:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5357,7 +5355,7 @@ msgstr "不支持所上传的映像文件格式,请选择适合当前平台的
msgid "There are no active leases"
msgstr "没有已分配的租约"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr "没有待应用的更改"
@@ -5681,7 +5679,7 @@ msgstr "卸载分区"
msgid "Unnamed key"
msgstr "未命名的密钥"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "未保存的配置"
@@ -5707,7 +5705,7 @@ msgstr "不支持的协议类型。"
msgid "Up"
msgstr "上移"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr "上传"
@@ -5731,12 +5729,12 @@ msgid "Upload file…"
msgstr "上传文件…"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr "上传请求失败:%s"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr "正在上传文件…"
@@ -6635,6 +6633,9 @@ msgstr "是"
msgid "« Back"
msgstr "« 后退"
+#~ msgid "Define a name for this network."
+#~ msgstr "为网络定义名称。"
+
#~ msgid "Leasetime remaining"
#~ msgstr "剩余租赁时间"
diff --git a/modules/luci-base/po/zh-tw/base.po b/modules/luci-base/po/zh-tw/base.po
index 6eaa738093..9b38533e9f 100644
--- a/modules/luci-base/po/zh-tw/base.po
+++ b/modules/luci-base/po/zh-tw/base.po
@@ -21,7 +21,7 @@ msgstr ""
msgid "%d Bit"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2321
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2323
msgid "%d invalid field(s)"
msgstr ""
@@ -56,7 +56,7 @@ msgstr "(未連接界面)"
msgid "-- Additional Field --"
msgstr "-- 更多選項 --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:258
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:274
#: modules/luci-base/htdocs/luci-static/resources/form.js:1680
#: modules/luci-base/htdocs/luci-static/resources/form.js:1811
#: modules/luci-base/htdocs/luci-static/resources/ui.js:315
@@ -67,7 +67,7 @@ msgstr "-- 更多選項 --"
msgid "-- Please choose --"
msgstr "-- 請選擇 --"
-#: modules/luci-base/htdocs/luci-static/resources/cbi.js:259
+#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275
#: modules/luci-base/htdocs/luci-static/resources/ui.js:416
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1250
#: modules/luci-compat/luasrc/view/cbi/header.htm:6
@@ -194,7 +194,6 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:40
-#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 設定"
@@ -641,16 +640,16 @@ msgstr "任意區域"
msgid "Apply backup?"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2790
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2792
msgid "Apply request failed with status <code>%h</code>"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2927
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2677
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2679
msgid "Apply unchecked"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2749
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2751
msgid "Applying configuration changes… %ds"
msgstr ""
@@ -873,7 +872,7 @@ msgid "Bring up on boot"
msgstr "開機自動執行"
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1817
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2402
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2404
msgid "Browse…"
msgstr ""
@@ -905,7 +904,7 @@ msgid "Call failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1909
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2411
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2413
#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14
#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:182
@@ -971,11 +970,11 @@ msgstr ""
msgid "Chain"
msgstr "鏈"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
msgid "Changes"
msgstr "待修改"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2813
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2815
msgid "Changes have been reverted."
msgstr "設定值已還原."
@@ -1117,16 +1116,16 @@ msgid ""
"negotiation especially in environments with heavy traffic load."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2565
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:416
msgid "Configuration"
msgstr "設定"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2724
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2726
msgid "Configuration changes applied."
msgstr "設定值已套用"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2663
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665
msgid "Configuration changes have been rolled back!"
msgstr "設定值已復原"
@@ -1173,7 +1172,7 @@ msgstr ""
msgid "Continue"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2699
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2701
msgid ""
"Could not regain access to the device after applying the configuration "
"changes. You might need to reconnect if you modified network related "
@@ -1374,10 +1373,6 @@ msgstr ""
msgid "Default state"
msgstr "預設狀態"
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
-msgid "Define a name for this network."
-msgstr "自訂這個網路名稱"
-
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:614
msgid ""
"Define additional DHCP options, for example "
@@ -1465,7 +1460,7 @@ msgstr ""
msgid "Device is restarting…"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2698
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2700
msgid "Device unreachable!"
msgstr "無法連線到設備!"
@@ -1549,9 +1544,9 @@ msgid "Disconnection attempt failed"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/form.js:1406
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2115
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2582
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2669
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2117
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2584
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2671
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1749
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:326
msgid "Dismiss"
@@ -1958,7 +1953,7 @@ msgstr ""
msgid "Failed to change the system password."
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2659
msgid "Failed to confirm apply within %ds, waiting for rollback…"
msgstr ""
@@ -2857,6 +2852,10 @@ msgstr "LCP協定呼叫失敗次數門檻"
msgid "LCP echo interval"
msgstr "LCP協定呼叫間隔"
+#: modules/luci-mod-system/luasrc/controller/admin/system.lua:25
+msgid "LED Configuration"
+msgstr ""
+
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:955
msgid "LLC"
msgstr "LLC邏輯鏈結控制層"
@@ -2911,7 +2910,7 @@ msgstr "保持空白以便自動偵測"
msgid "Leave empty to use the current WAN address"
msgstr "保持空白以便採用現今的寬頻位址"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2567
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2569
msgid "Legend:"
msgstr "圖例:"
@@ -3008,7 +3007,7 @@ msgstr "掛載"
msgid "Load Average"
msgstr "平均掛載"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1939
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1941
msgid "Loading directory contents…"
msgstr ""
@@ -3423,9 +3422,8 @@ msgid "NTP server candidates"
msgstr "NTP伺服器備選"
#: modules/luci-base/htdocs/luci-static/resources/form.js:1126
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2388
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2390
#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:596
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:705
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:49
msgid "Name"
@@ -3693,11 +3691,11 @@ msgstr ""
msgid "Operating frequency"
msgstr "操作頻率"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
msgid "Option changed"
msgstr "選項已變更"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2576
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2578
msgid "Option removed"
msgstr "選項已移除"
@@ -4079,7 +4077,7 @@ msgstr "封包數."
msgid "Please enter your username and password."
msgstr "請輸入您的用戶名稱和密碼"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2371
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2373
msgid "Please select the file to upload."
msgstr ""
@@ -4514,19 +4512,19 @@ msgstr "還原之前備份設定"
msgid "Reveal/hide password"
msgstr "明示/隱藏 密碼"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2590
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2592
msgid "Revert"
msgstr "回溯"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2675
msgid "Revert changes"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2822
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2824
msgid "Revert request failed with status <code>%h</code>"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2802
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2804
msgid "Reverting configuration…"
msgstr "正在還原設定值..."
@@ -4639,7 +4637,7 @@ msgid "Save"
msgstr "保存"
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2926
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2586
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2588
#: modules/luci-compat/luasrc/view/cbi/footer.htm:22
msgid "Save & Apply"
msgstr "保存並啟用"
@@ -4661,11 +4659,11 @@ msgstr "掃描"
msgid "Scheduled Tasks"
msgstr "排程任務"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2570
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
msgid "Section added"
msgstr "新增的區段"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2572
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2574
msgid "Section removed"
msgstr "區段移除"
@@ -4682,7 +4680,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1640
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1770
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:1929
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:1931
msgid "Select file…"
msgstr ""
@@ -4796,7 +4794,7 @@ msgstr ""
msgid "Signal:"
msgstr "信號:"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2389
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2391
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:213
msgid "Size"
msgstr "大小"
@@ -4911,7 +4909,7 @@ msgstr "啟用"
msgid "Start priority"
msgstr "啟用優先權順序"
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2767
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769
msgid "Starting configuration apply…"
msgstr "開始套用設定值..."
@@ -5141,7 +5139,7 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2664
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2666
msgid ""
"The device could not be reached within %d seconds after applying the pending "
"changes, which caused the configuration to be rolled back for safety "
@@ -5311,7 +5309,7 @@ msgstr ""
msgid "There are no active leases"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2782
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2784
msgid "There are no changes to apply"
msgstr ""
@@ -5633,7 +5631,7 @@ msgstr ""
msgid "Unnamed key"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2529
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2531
msgid "Unsaved Changes"
msgstr "尚未存檔的修改"
@@ -5659,7 +5657,7 @@ msgstr "不支援的協定型態"
msgid "Up"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2463
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2465
msgid "Upload"
msgstr ""
@@ -5683,12 +5681,12 @@ msgid "Upload file…"
msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:1747
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2451
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2453
msgid "Upload request failed: %s"
msgstr ""
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2370
-#: modules/luci-base/htdocs/luci-static/resources/ui.js:2424
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2372
+#: modules/luci-base/htdocs/luci-static/resources/ui.js:2426
msgid "Uploading file…"
msgstr ""
@@ -6580,6 +6578,9 @@ msgstr "是的"
msgid "« Back"
msgstr "« 倒退"
+#~ msgid "Define a name for this network."
+#~ msgstr "自訂這個網路名稱"
+
#~ msgid "Bad address specified!"
#~ msgstr "指定了錯誤的位置!"
diff --git a/modules/luci-base/root/usr/share/luci/menu.d/luci-base.json b/modules/luci-base/root/usr/share/luci/menu.d/luci-base.json
index cdfffb5123..2490823a16 100644
--- a/modules/luci-base/root/usr/share/luci/menu.d/luci-base.json
+++ b/modules/luci-base/root/usr/share/luci/menu.d/luci-base.json
@@ -65,9 +65,7 @@
"module": "luci.controller.admin.index",
"function": "action_translations"
},
- "auth": {
- "methods": [ "cookie:sysauth" ]
- }
+ "auth": {}
},
"admin/ubus/*": {
diff --git a/modules/luci-base/src/Makefile b/modules/luci-base/src/Makefile
index 3e6ead1085..2a425d5ab7 100644
--- a/modules/luci-base/src/Makefile
+++ b/modules/luci-base/src/Makefile
@@ -1,16 +1,24 @@
%.o: %.c
- $(CC) $(CPPFLAGS) $(CFLAGS) $(FPIC) -c -o $@ $<
+ $(CC) $(CPPFLAGS) $(CFLAGS) $(FPIC) -DNDEBUG -c -o $@ $<
+
+contrib/lemon: contrib/lemon.c contrib/lempar.c
+ cc -o contrib/lemon $<
+
+plural_formula.c: plural_formula.y contrib/lemon
+ ./contrib/lemon -q $<
+
+template_lmo.c: plural_formula.c
clean:
- rm -f po2lmo parser.so version.lua *.o
+ rm -f contrib/lemon po2lmo parser.so version.lua plural_formula.c plural_formula.h *.o
jsmin: jsmin.o
$(CC) $(LDFLAGS) -o $@ $^
-po2lmo: po2lmo.o template_lmo.o
+po2lmo: po2lmo.o template_lmo.o plural_formula.o
$(CC) $(LDFLAGS) -o $@ $^
-parser.so: template_parser.o template_utils.o template_lmo.o template_lualib.o
+parser.so: template_parser.o template_utils.o template_lmo.o template_lualib.o plural_formula.o
$(CC) $(LDFLAGS) -shared -o $@ $^
version.lua:
diff --git a/modules/luci-base/src/contrib/lemon.c b/modules/luci-base/src/contrib/lemon.c
new file mode 100644
index 0000000000..85e94f7007
--- /dev/null
+++ b/modules/luci-base/src/contrib/lemon.c
@@ -0,0 +1,5040 @@
+/*
+** This file contains all sources (including headers) to the LEMON
+** LALR(1) parser generator. The sources have been combined into a
+** single file to make it easy to include LEMON in the source tree
+** and Makefile of another program.
+**
+** The author of this program disclaims copyright.
+*/
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#ifndef __WIN32__
+# if defined(_WIN32) || defined(WIN32)
+# define __WIN32__
+# endif
+#endif
+
+#ifdef __WIN32__
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern int access(const char *path, int mode);
+#ifdef __cplusplus
+}
+#endif
+#else
+#include <unistd.h>
+#endif
+
+/* #define PRIVATE static */
+#define PRIVATE
+
+#ifdef TEST
+#define MAXRHS 5 /* Set low to exercise exception code */
+#else
+#define MAXRHS 1000
+#endif
+
+static int showPrecedenceConflict = 0;
+static char *msort(char*,char**,int(*)(const char*,const char*));
+
+/*
+** Compilers are getting increasingly pedantic about type conversions
+** as C evolves ever closer to Ada.... To work around the latest problems
+** we have to define the following variant of strlen().
+*/
+#define lemonStrlen(X) ((int)strlen(X))
+
+/*
+** Compilers are starting to complain about the use of sprintf() and strcpy(),
+** saying they are unsafe. So we define our own versions of those routines too.
+**
+** There are three routines here: lemon_sprintf(), lemon_vsprintf(), and
+** lemon_addtext(). The first two are replacements for sprintf() and vsprintf().
+** The third is a helper routine for vsnprintf() that adds texts to the end of a
+** buffer, making sure the buffer is always zero-terminated.
+**
+** The string formatter is a minimal subset of stdlib sprintf() supporting only
+** a few simply conversions:
+**
+** %d
+** %s
+** %.*s
+**
+*/
+static void lemon_addtext(
+ char *zBuf, /* The buffer to which text is added */
+ int *pnUsed, /* Slots of the buffer used so far */
+ const char *zIn, /* Text to add */
+ int nIn, /* Bytes of text to add. -1 to use strlen() */
+ int iWidth /* Field width. Negative to left justify */
+){
+ if( nIn<0 ) for(nIn=0; zIn[nIn]; nIn++){}
+ while( iWidth>nIn ){ zBuf[(*pnUsed)++] = ' '; iWidth--; }
+ if( nIn==0 ) return;
+ memcpy(&zBuf[*pnUsed], zIn, nIn);
+ *pnUsed += nIn;
+ while( (-iWidth)>nIn ){ zBuf[(*pnUsed)++] = ' '; iWidth++; }
+ zBuf[*pnUsed] = 0;
+}
+static int lemon_vsprintf(char *str, const char *zFormat, va_list ap){
+ int i, j, k, c;
+ int nUsed = 0;
+ const char *z;
+ char zTemp[50];
+ str[0] = 0;
+ for(i=j=0; (c = zFormat[i])!=0; i++){
+ if( c=='%' ){
+ int iWidth = 0;
+ lemon_addtext(str, &nUsed, &zFormat[j], i-j, 0);
+ c = zFormat[++i];
+ if( isdigit(c) || (c=='-' && isdigit(zFormat[i+1])) ){
+ if( c=='-' ) i++;
+ while( isdigit(zFormat[i]) ) iWidth = iWidth*10 + zFormat[i++] - '0';
+ if( c=='-' ) iWidth = -iWidth;
+ c = zFormat[i];
+ }
+ if( c=='d' ){
+ int v = va_arg(ap, int);
+ if( v<0 ){
+ lemon_addtext(str, &nUsed, "-", 1, iWidth);
+ v = -v;
+ }else if( v==0 ){
+ lemon_addtext(str, &nUsed, "0", 1, iWidth);
+ }
+ k = 0;
+ while( v>0 ){
+ k++;
+ zTemp[sizeof(zTemp)-k] = (v%10) + '0';
+ v /= 10;
+ }
+ lemon_addtext(str, &nUsed, &zTemp[sizeof(zTemp)-k], k, iWidth);
+ }else if( c=='s' ){
+ z = va_arg(ap, const char*);
+ lemon_addtext(str, &nUsed, z, -1, iWidth);
+ }else if( c=='.' && memcmp(&zFormat[i], ".*s", 3)==0 ){
+ i += 2;
+ k = va_arg(ap, int);
+ z = va_arg(ap, const char*);
+ lemon_addtext(str, &nUsed, z, k, iWidth);
+ }else if( c=='%' ){
+ lemon_addtext(str, &nUsed, "%", 1, 0);
+ }else{
+ fprintf(stderr, "illegal format\n");
+ exit(1);
+ }
+ j = i+1;
+ }
+ }
+ lemon_addtext(str, &nUsed, &zFormat[j], i-j, 0);
+ return nUsed;
+}
+static int lemon_sprintf(char *str, const char *format, ...){
+ va_list ap;
+ int rc;
+ va_start(ap, format);
+ rc = lemon_vsprintf(str, format, ap);
+ va_end(ap);
+ return rc;
+}
+static void lemon_strcpy(char *dest, const char *src){
+ while( (*(dest++) = *(src++))!=0 ){}
+}
+static void lemon_strcat(char *dest, const char *src){
+ while( *dest ) dest++;
+ lemon_strcpy(dest, src);
+}
+
+
+/* a few forward declarations... */
+struct rule;
+struct lemon;
+struct action;
+
+static struct action *Action_new(void);
+static struct action *Action_sort(struct action *);
+
+/********** From the file "build.h" ************************************/
+void FindRulePrecedences();
+void FindFirstSets();
+void FindStates();
+void FindLinks();
+void FindFollowSets();
+void FindActions();
+
+/********* From the file "configlist.h" *********************************/
+void Configlist_init(void);
+struct config *Configlist_add(struct rule *, int);
+struct config *Configlist_addbasis(struct rule *, int);
+void Configlist_closure(struct lemon *);
+void Configlist_sort(void);
+void Configlist_sortbasis(void);
+struct config *Configlist_return(void);
+struct config *Configlist_basis(void);
+void Configlist_eat(struct config *);
+void Configlist_reset(void);
+
+/********* From the file "error.h" ***************************************/
+void ErrorMsg(const char *, int,const char *, ...);
+
+/****** From the file "option.h" ******************************************/
+enum option_type { OPT_FLAG=1, OPT_INT, OPT_DBL, OPT_STR,
+ OPT_FFLAG, OPT_FINT, OPT_FDBL, OPT_FSTR};
+struct s_options {
+ enum option_type type;
+ const char *label;
+ char *arg;
+ const char *message;
+};
+int OptInit(char**,struct s_options*,FILE*);
+int OptNArgs(void);
+char *OptArg(int);
+void OptErr(int);
+void OptPrint(void);
+
+/******** From the file "parse.h" *****************************************/
+void Parse(struct lemon *lemp);
+
+/********* From the file "plink.h" ***************************************/
+struct plink *Plink_new(void);
+void Plink_add(struct plink **, struct config *);
+void Plink_copy(struct plink **, struct plink *);
+void Plink_delete(struct plink *);
+
+/********** From the file "report.h" *************************************/
+void Reprint(struct lemon *);
+void ReportOutput(struct lemon *);
+void ReportTable(struct lemon *, int);
+void ReportHeader(struct lemon *);
+void CompressTables(struct lemon *);
+void ResortStates(struct lemon *);
+
+/********** From the file "set.h" ****************************************/
+void SetSize(int); /* All sets will be of size N */
+char *SetNew(void); /* A new set for element 0..N */
+void SetFree(char*); /* Deallocate a set */
+int SetAdd(char*,int); /* Add element to a set */
+int SetUnion(char *,char *); /* A <- A U B, thru element N */
+#define SetFind(X,Y) (X[Y]) /* True if Y is in set X */
+
+/********** From the file "struct.h" *************************************/
+/*
+** Principal data structures for the LEMON parser generator.
+*/
+
+typedef enum {LEMON_FALSE=0, LEMON_TRUE} Boolean;
+
+/* Symbols (terminals and nonterminals) of the grammar are stored
+** in the following: */
+enum symbol_type {
+ TERMINAL,
+ NONTERMINAL,
+ MULTITERMINAL
+};
+enum e_assoc {
+ LEFT,
+ RIGHT,
+ NONE,
+ UNK
+};
+struct symbol {
+ const char *name; /* Name of the symbol */
+ int index; /* Index number for this symbol */
+ enum symbol_type type; /* Symbols are all either TERMINALS or NTs */
+ struct rule *rule; /* Linked list of rules of this (if an NT) */
+ struct symbol *fallback; /* fallback token in case this token doesn't parse */
+ int prec; /* Precedence if defined (-1 otherwise) */
+ enum e_assoc assoc; /* Associativity if precedence is defined */
+ char *firstset; /* First-set for all rules of this symbol */
+ Boolean lambda; /* True if NT and can generate an empty string */
+ int useCnt; /* Number of times used */
+ char *destructor; /* Code which executes whenever this symbol is
+ ** popped from the stack during error processing */
+ int destLineno; /* Line number for start of destructor */
+ char *datatype; /* The data type of information held by this
+ ** object. Only used if type==NONTERMINAL */
+ int dtnum; /* The data type number. In the parser, the value
+ ** stack is a union. The .yy%d element of this
+ ** union is the correct data type for this object */
+ /* The following fields are used by MULTITERMINALs only */
+ int nsubsym; /* Number of constituent symbols in the MULTI */
+ struct symbol **subsym; /* Array of constituent symbols */
+};
+
+/* Each production rule in the grammar is stored in the following
+** structure. */
+struct rule {
+ struct symbol *lhs; /* Left-hand side of the rule */
+ const char *lhsalias; /* Alias for the LHS (NULL if none) */
+ int lhsStart; /* True if left-hand side is the start symbol */
+ int ruleline; /* Line number for the rule */
+ int nrhs; /* Number of RHS symbols */
+ struct symbol **rhs; /* The RHS symbols */
+ const char **rhsalias; /* An alias for each RHS symbol (NULL if none) */
+ int line; /* Line number at which code begins */
+ const char *code; /* The code executed when this rule is reduced */
+ struct symbol *precsym; /* Precedence symbol for this rule */
+ int index; /* An index number for this rule */
+ Boolean canReduce; /* True if this rule is ever reduced */
+ struct rule *nextlhs; /* Next rule with the same LHS */
+ struct rule *next; /* Next rule in the global list */
+};
+
+/* A configuration is a production rule of the grammar together with
+** a mark (dot) showing how much of that rule has been processed so far.
+** Configurations also contain a follow-set which is a list of terminal
+** symbols which are allowed to immediately follow the end of the rule.
+** Every configuration is recorded as an instance of the following: */
+enum cfgstatus {
+ COMPLETE,
+ INCOMPLETE
+};
+struct config {
+ struct rule *rp; /* The rule upon which the configuration is based */
+ int dot; /* The parse point */
+ char *fws; /* Follow-set for this configuration only */
+ struct plink *fplp; /* Follow-set forward propagation links */
+ struct plink *bplp; /* Follow-set backwards propagation links */
+ struct state *stp; /* Pointer to state which contains this */
+ enum cfgstatus status; /* used during followset and shift computations */
+ struct config *next; /* Next configuration in the state */
+ struct config *bp; /* The next basis configuration */
+};
+
+enum e_action {
+ SHIFT,
+ ACCEPT,
+ REDUCE,
+ ERROR,
+ SSCONFLICT, /* A shift/shift conflict */
+ SRCONFLICT, /* Was a reduce, but part of a conflict */
+ RRCONFLICT, /* Was a reduce, but part of a conflict */
+ SH_RESOLVED, /* Was a shift. Precedence resolved conflict */
+ RD_RESOLVED, /* Was reduce. Precedence resolved conflict */
+ NOT_USED /* Deleted by compression */
+};
+
+/* Every shift or reduce operation is stored as one of the following */
+struct action {
+ struct symbol *sp; /* The look-ahead symbol */
+ enum e_action type;
+ union {
+ struct state *stp; /* The new state, if a shift */
+ struct rule *rp; /* The rule, if a reduce */
+ } x;
+ struct action *next; /* Next action for this state */
+ struct action *collide; /* Next action with the same hash */
+};
+
+/* Each state of the generated parser's finite state machine
+** is encoded as an instance of the following structure. */
+struct state {
+ struct config *bp; /* The basis configurations for this state */
+ struct config *cfp; /* All configurations in this set */
+ int statenum; /* Sequential number for this state */
+ struct action *ap; /* Array of actions for this state */
+ int nTknAct, nNtAct; /* Number of actions on terminals and nonterminals */
+ int iTknOfst, iNtOfst; /* yy_action[] offset for terminals and nonterms */
+ int iDflt; /* Default action */
+};
+#define NO_OFFSET (-2147483647)
+
+/* A followset propagation link indicates that the contents of one
+** configuration followset should be propagated to another whenever
+** the first changes. */
+struct plink {
+ struct config *cfp; /* The configuration to which linked */
+ struct plink *next; /* The next propagate link */
+};
+
+/* The state vector for the entire parser generator is recorded as
+** follows. (LEMON uses no global variables and makes little use of
+** static variables. Fields in the following structure can be thought
+** of as begin global variables in the program.) */
+struct lemon {
+ struct state **sorted; /* Table of states sorted by state number */
+ struct rule *rule; /* List of all rules */
+ int nstate; /* Number of states */
+ int nrule; /* Number of rules */
+ int nsymbol; /* Number of terminal and nonterminal symbols */
+ int nterminal; /* Number of terminal symbols */
+ struct symbol **symbols; /* Sorted array of pointers to symbols */
+ int errorcnt; /* Number of errors */
+ struct symbol *errsym; /* The error symbol */
+ struct symbol *wildcard; /* Token that matches anything */
+ char *name; /* Name of the generated parser */
+ char *arg; /* Declaration of the 3th argument to parser */
+ char *tokentype; /* Type of terminal symbols in the parser stack */
+ char *vartype; /* The default type of non-terminal symbols */
+ char *start; /* Name of the start symbol for the grammar */
+ char *stacksize; /* Size of the parser stack */
+ char *include; /* Code to put at the start of the C file */
+ char *error; /* Code to execute when an error is seen */
+ char *overflow; /* Code to execute on a stack overflow */
+ char *failure; /* Code to execute on parser failure */
+ char *accept; /* Code to execute when the parser excepts */
+ char *extracode; /* Code appended to the generated file */
+ char *tokendest; /* Code to execute to destroy token data */
+ char *vardest; /* Code for the default non-terminal destructor */
+ char *filename; /* Name of the input file */
+ char *outname; /* Name of the current output file */
+ char *tokenprefix; /* A prefix added to token names in the .h file */
+ int nconflict; /* Number of parsing conflicts */
+ int tablesize; /* Size of the parse tables */
+ int basisflag; /* Print only basis configurations */
+ int has_fallback; /* True if any %fallback is seen in the grammar */
+ int nolinenosflag; /* True if #line statements should not be printed */
+ char *argv0; /* Name of the program */
+};
+
+#define MemoryCheck(X) if((X)==0){ \
+ extern void memory_error(); \
+ memory_error(); \
+}
+
+/**************** From the file "table.h" *********************************/
+/*
+** All code in this file has been automatically generated
+** from a specification in the file
+** "table.q"
+** by the associative array code building program "aagen".
+** Do not edit this file! Instead, edit the specification
+** file, then rerun aagen.
+*/
+/*
+** Code for processing tables in the LEMON parser generator.
+*/
+/* Routines for handling a strings */
+
+const char *Strsafe(const char *);
+
+void Strsafe_init(void);
+int Strsafe_insert(const char *);
+const char *Strsafe_find(const char *);
+
+/* Routines for handling symbols of the grammar */
+
+struct symbol *Symbol_new(const char *);
+int Symbolcmpp(const void *, const void *);
+void Symbol_init(void);
+int Symbol_insert(struct symbol *, const char *);
+struct symbol *Symbol_find(const char *);
+struct symbol *Symbol_Nth(int);
+int Symbol_count(void);
+struct symbol **Symbol_arrayof(void);
+
+/* Routines to manage the state table */
+
+int Configcmp(const char *, const char *);
+struct state *State_new(void);
+void State_init(void);
+int State_insert(struct state *, struct config *);
+struct state *State_find(struct config *);
+struct state **State_arrayof(/* */);
+
+/* Routines used for efficiency in Configlist_add */
+
+void Configtable_init(void);
+int Configtable_insert(struct config *);
+struct config *Configtable_find(struct config *);
+void Configtable_clear(int(*)(struct config *));
+
+/****************** From the file "action.c" *******************************/
+/*
+** Routines processing parser actions in the LEMON parser generator.
+*/
+
+/* Allocate a new parser action */
+static struct action *Action_new(void){
+ static struct action *freelist = 0;
+ struct action *newaction;
+
+ if( freelist==0 ){
+ int i;
+ int amt = 100;
+ freelist = (struct action *)calloc(amt, sizeof(struct action));
+ if( freelist==0 ){
+ fprintf(stderr,"Unable to allocate memory for a new parser action.");
+ exit(1);
+ }
+ for(i=0; i<amt-1; i++) freelist[i].next = &freelist[i+1];
+ freelist[amt-1].next = 0;
+ }
+ newaction = freelist;
+ freelist = freelist->next;
+ return newaction;
+}
+
+/* Compare two actions for sorting purposes. Return negative, zero, or
+** positive if the first action is less than, equal to, or greater than
+** the first
+*/
+static int actioncmp(
+ struct action *ap1,
+ struct action *ap2
+){
+ int rc;
+ rc = ap1->sp->index - ap2->sp->index;
+ if( rc==0 ){
+ rc = (int)ap1->type - (int)ap2->type;
+ }
+ if( rc==0 && ap1->type==REDUCE ){
+ rc = ap1->x.rp->index - ap2->x.rp->index;
+ }
+ if( rc==0 ){
+ rc = (int) (ap2 - ap1);
+ }
+ return rc;
+}
+
+/* Sort parser actions */
+static struct action *Action_sort(
+ struct action *ap
+){
+ ap = (struct action *)msort((char *)ap,(char **)&ap->next,
+ (int(*)(const char*,const char*))actioncmp);
+ return ap;
+}
+
+void Action_add(
+ struct action **app,
+ enum e_action type,
+ struct symbol *sp,
+ char *arg
+){
+ struct action *newaction;
+ newaction = Action_new();
+ newaction->next = *app;
+ *app = newaction;
+ newaction->type = type;
+ newaction->sp = sp;
+ if( type==SHIFT ){
+ newaction->x.stp = (struct state *)arg;
+ }else{
+ newaction->x.rp = (struct rule *)arg;
+ }
+}
+/********************** New code to implement the "acttab" module ***********/
+/*
+** This module implements routines use to construct the yy_action[] table.
+*/
+
+/*
+** The state of the yy_action table under construction is an instance of
+** the following structure.
+**
+** The yy_action table maps the pair (state_number, lookahead) into an
+** action_number. The table is an array of integers pairs. The state_number
+** determines an initial offset into the yy_action array. The lookahead
+** value is then added to this initial offset to get an index X into the
+** yy_action array. If the aAction[X].lookahead equals the value of the
+** of the lookahead input, then the value of the action_number output is
+** aAction[X].action. If the lookaheads do not match then the
+** default action for the state_number is returned.
+**
+** All actions associated with a single state_number are first entered
+** into aLookahead[] using multiple calls to acttab_action(). Then the
+** actions for that single state_number are placed into the aAction[]
+** array with a single call to acttab_insert(). The acttab_insert() call
+** also resets the aLookahead[] array in preparation for the next
+** state number.
+*/
+struct lookahead_action {
+ int lookahead; /* Value of the lookahead token */
+ int action; /* Action to take on the given lookahead */
+};
+typedef struct acttab acttab;
+struct acttab {
+ int nAction; /* Number of used slots in aAction[] */
+ int nActionAlloc; /* Slots allocated for aAction[] */
+ struct lookahead_action
+ *aAction, /* The yy_action[] table under construction */
+ *aLookahead; /* A single new transaction set */
+ int mnLookahead; /* Minimum aLookahead[].lookahead */
+ int mnAction; /* Action associated with mnLookahead */
+ int mxLookahead; /* Maximum aLookahead[].lookahead */
+ int nLookahead; /* Used slots in aLookahead[] */
+ int nLookaheadAlloc; /* Slots allocated in aLookahead[] */
+};
+
+/* Return the number of entries in the yy_action table */
+#define acttab_size(X) ((X)->nAction)
+
+/* The value for the N-th entry in yy_action */
+#define acttab_yyaction(X,N) ((X)->aAction[N].action)
+
+/* The value for the N-th entry in yy_lookahead */
+#define acttab_yylookahead(X,N) ((X)->aAction[N].lookahead)
+
+/* Free all memory associated with the given acttab */
+void acttab_free(acttab *p){
+ free( p->aAction );
+ free( p->aLookahead );
+ free( p );
+}
+
+/* Allocate a new acttab structure */
+acttab *acttab_alloc(void){
+ acttab *p = (acttab *) calloc( 1, sizeof(*p) );
+ if( p==0 ){
+ fprintf(stderr,"Unable to allocate memory for a new acttab.");
+ exit(1);
+ }
+ memset(p, 0, sizeof(*p));
+ return p;
+}
+
+/* Add a new action to the current transaction set.
+**
+** This routine is called once for each lookahead for a particular
+** state.
+*/
+void acttab_action(acttab *p, int lookahead, int action){
+ if( p->nLookahead>=p->nLookaheadAlloc ){
+ p->nLookaheadAlloc += 25;
+ p->aLookahead = (struct lookahead_action *) realloc( p->aLookahead,
+ sizeof(p->aLookahead[0])*p->nLookaheadAlloc );
+ if( p->aLookahead==0 ){
+ fprintf(stderr,"malloc failed\n");
+ exit(1);
+ }
+ }
+ if( p->nLookahead==0 ){
+ p->mxLookahead = lookahead;
+ p->mnLookahead = lookahead;
+ p->mnAction = action;
+ }else{
+ if( p->mxLookahead<lookahead ) p->mxLookahead = lookahead;
+ if( p->mnLookahead>lookahead ){
+ p->mnLookahead = lookahead;
+ p->mnAction = action;
+ }
+ }
+ p->aLookahead[p->nLookahead].lookahead = lookahead;
+ p->aLookahead[p->nLookahead].action = action;
+ p->nLookahead++;
+}
+
+/*
+** Add the transaction set built up with prior calls to acttab_action()
+** into the current action table. Then reset the transaction set back
+** to an empty set in preparation for a new round of acttab_action() calls.
+**
+** Return the offset into the action table of the new transaction.
+*/
+int acttab_insert(acttab *p){
+ int i, j, k, n;
+ assert( p->nLookahead>0 );
+
+ /* Make sure we have enough space to hold the expanded action table
+ ** in the worst case. The worst case occurs if the transaction set
+ ** must be appended to the current action table
+ */
+ n = p->mxLookahead + 1;
+ if( p->nAction + n >= p->nActionAlloc ){
+ int oldAlloc = p->nActionAlloc;
+ p->nActionAlloc = p->nAction + n + p->nActionAlloc + 20;
+ p->aAction = (struct lookahead_action *) realloc( p->aAction,
+ sizeof(p->aAction[0])*p->nActionAlloc);
+ if( p->aAction==0 ){
+ fprintf(stderr,"malloc failed\n");
+ exit(1);
+ }
+ for(i=oldAlloc; i<p->nActionAlloc; i++){
+ p->aAction[i].lookahead = -1;
+ p->aAction[i].action = -1;
+ }
+ }
+
+ /* Scan the existing action table looking for an offset that is a
+ ** duplicate of the current transaction set. Fall out of the loop
+ ** if and when the duplicate is found.
+ **
+ ** i is the index in p->aAction[] where p->mnLookahead is inserted.
+ */
+ for(i=p->nAction-1; i>=0; i--){
+ if( p->aAction[i].lookahead==p->mnLookahead ){
+ /* All lookaheads and actions in the aLookahead[] transaction
+ ** must match against the candidate aAction[i] entry. */
+ if( p->aAction[i].action!=p->mnAction ) continue;
+ for(j=0; j<p->nLookahead; j++){
+ k = p->aLookahead[j].lookahead - p->mnLookahead + i;
+ if( k<0 || k>=p->nAction ) break;
+ if( p->aLookahead[j].lookahead!=p->aAction[k].lookahead ) break;
+ if( p->aLookahead[j].action!=p->aAction[k].action ) break;
+ }
+ if( j<p->nLookahead ) continue;
+
+ /* No possible lookahead value that is not in the aLookahead[]
+ ** transaction is allowed to match aAction[i] */
+ n = 0;
+ for(j=0; j<p->nAction; j++){
+ if( p->aAction[j].lookahead<0 ) continue;
+ if( p->aAction[j].lookahead==j+p->mnLookahead-i ) n++;
+ }
+ if( n==p->nLookahead ){
+ break; /* An exact match is found at offset i */
+ }
+ }
+ }
+
+ /* If no existing offsets exactly match the current transaction, find an
+ ** an empty offset in the aAction[] table in which we can add the
+ ** aLookahead[] transaction.
+ */
+ if( i<0 ){
+ /* Look for holes in the aAction[] table that fit the current
+ ** aLookahead[] transaction. Leave i set to the offset of the hole.
+ ** If no holes are found, i is left at p->nAction, which means the
+ ** transaction will be appended. */
+ for(i=0; i<p->nActionAlloc - p->mxLookahead; i++){
+ if( p->aAction[i].lookahead<0 ){
+ for(j=0; j<p->nLookahead; j++){
+ k = p->aLookahead[j].lookahead - p->mnLookahead + i;
+ if( k<0 ) break;
+ if( p->aAction[k].lookahead>=0 ) break;
+ }
+ if( j<p->nLookahead ) continue;
+ for(j=0; j<p->nAction; j++){
+ if( p->aAction[j].lookahead==j+p->mnLookahead-i ) break;
+ }
+ if( j==p->nAction ){
+ break; /* Fits in empty slots */
+ }
+ }
+ }
+ }
+ /* Insert transaction set at index i. */
+ for(j=0; j<p->nLookahead; j++){
+ k = p->aLookahead[j].lookahead - p->mnLookahead + i;
+ p->aAction[k] = p->aLookahead[j];
+ if( k>=p->nAction ) p->nAction = k+1;
+ }
+ p->nLookahead = 0;
+
+ /* Return the offset that is added to the lookahead in order to get the
+ ** index into yy_action of the action */
+ return i - p->mnLookahead;
+}
+
+/********************** From the file "build.c" *****************************/
+/*
+** Routines to construction the finite state machine for the LEMON
+** parser generator.
+*/
+
+/* Find a precedence symbol of every rule in the grammar.
+**
+** Those rules which have a precedence symbol coded in the input
+** grammar using the "[symbol]" construct will already have the
+** rp->precsym field filled. Other rules take as their precedence
+** symbol the first RHS symbol with a defined precedence. If there
+** are not RHS symbols with a defined precedence, the precedence
+** symbol field is left blank.
+*/
+void FindRulePrecedences(struct lemon *xp)
+{
+ struct rule *rp;
+ for(rp=xp->rule; rp; rp=rp->next){
+ if( rp->precsym==0 ){
+ int i, j;
+ for(i=0; i<rp->nrhs && rp->precsym==0; i++){
+ struct symbol *sp = rp->rhs[i];
+ if( sp->type==MULTITERMINAL ){
+ for(j=0; j<sp->nsubsym; j++){
+ if( sp->subsym[j]->prec>=0 ){
+ rp->precsym = sp->subsym[j];
+ break;
+ }
+ }
+ }else if( sp->prec>=0 ){
+ rp->precsym = rp->rhs[i];
+ }
+ }
+ }
+ }
+ return;
+}
+
+/* Find all nonterminals which will generate the empty string.
+** Then go back and compute the first sets of every nonterminal.
+** The first set is the set of all terminal symbols which can begin
+** a string generated by that nonterminal.
+*/
+void FindFirstSets(struct lemon *lemp)
+{
+ int i, j;
+ struct rule *rp;
+ int progress;
+
+ for(i=0; i<lemp->nsymbol; i++){
+ lemp->symbols[i]->lambda = LEMON_FALSE;
+ }
+ for(i=lemp->nterminal; i<lemp->nsymbol; i++){
+ lemp->symbols[i]->firstset = SetNew();
+ }
+
+ /* First compute all lambdas */
+ do{
+ progress = 0;
+ for(rp=lemp->rule; rp; rp=rp->next){
+ if( rp->lhs->lambda ) continue;
+ for(i=0; i<rp->nrhs; i++){
+ struct symbol *sp = rp->rhs[i];
+ assert( sp->type==NONTERMINAL || sp->lambda==LEMON_FALSE );
+ if( sp->lambda==LEMON_FALSE ) break;
+ }
+ if( i==rp->nrhs ){
+ rp->lhs->lambda = LEMON_TRUE;
+ progress = 1;
+ }
+ }
+ }while( progress );
+
+ /* Now compute all first sets */
+ do{
+ struct symbol *s1, *s2;
+ progress = 0;
+ for(rp=lemp->rule; rp; rp=rp->next){
+ s1 = rp->lhs;
+ for(i=0; i<rp->nrhs; i++){
+ s2 = rp->rhs[i];
+ if( s2->type==TERMINAL ){
+ progress += SetAdd(s1->firstset,s2->index);
+ break;
+ }else if( s2->type==MULTITERMINAL ){
+ for(j=0; j<s2->nsubsym; j++){
+ progress += SetAdd(s1->firstset,s2->subsym[j]->index);
+ }
+ break;
+ }else if( s1==s2 ){
+ if( s1->lambda==LEMON_FALSE ) break;
+ }else{
+ progress += SetUnion(s1->firstset,s2->firstset);
+ if( s2->lambda==LEMON_FALSE ) break;
+ }
+ }
+ }
+ }while( progress );
+ return;
+}
+
+/* Compute all LR(0) states for the grammar. Links
+** are added to between some states so that the LR(1) follow sets
+** can be computed later.
+*/
+PRIVATE struct state *getstate(struct lemon *); /* forward reference */
+void FindStates(struct lemon *lemp)
+{
+ struct symbol *sp;
+ struct rule *rp;
+
+ Configlist_init();
+
+ /* Find the start symbol */
+ if( lemp->start ){
+ sp = Symbol_find(lemp->start);
+ if( sp==0 ){
+ ErrorMsg(lemp->filename,0,
+"The specified start symbol \"%s\" is not \
+in a nonterminal of the grammar. \"%s\" will be used as the start \
+symbol instead.",lemp->start,lemp->rule->lhs->name);
+ lemp->errorcnt++;
+ sp = lemp->rule->lhs;
+ }
+ }else{
+ sp = lemp->rule->lhs;
+ }
+
+ /* Make sure the start symbol doesn't occur on the right-hand side of
+ ** any rule. Report an error if it does. (YACC would generate a new
+ ** start symbol in this case.) */
+ for(rp=lemp->rule; rp; rp=rp->next){
+ int i;
+ for(i=0; i<rp->nrhs; i++){
+ if( rp->rhs[i]==sp ){ /* FIX ME: Deal with multiterminals */
+ ErrorMsg(lemp->filename,0,
+"The start symbol \"%s\" occurs on the \
+right-hand side of a rule. This will result in a parser which \
+does not work properly.",sp->name);
+ lemp->errorcnt++;
+ }
+ }
+ }
+
+ /* The basis configuration set for the first state
+ ** is all rules which have the start symbol as their
+ ** left-hand side */
+ for(rp=sp->rule; rp; rp=rp->nextlhs){
+ struct config *newcfp;
+ rp->lhsStart = 1;
+ newcfp = Configlist_addbasis(rp,0);
+ SetAdd(newcfp->fws,0);
+ }
+
+ /* Compute the first state. All other states will be
+ ** computed automatically during the computation of the first one.
+ ** The returned pointer to the first state is not used. */
+ (void)getstate(lemp);
+ return;
+}
+
+/* Return a pointer to a state which is described by the configuration
+** list which has been built from calls to Configlist_add.
+*/
+PRIVATE void buildshifts(struct lemon *, struct state *); /* Forwd ref */
+PRIVATE struct state *getstate(struct lemon *lemp)
+{
+ struct config *cfp, *bp;
+ struct state *stp;
+
+ /* Extract the sorted basis of the new state. The basis was constructed
+ ** by prior calls to "Configlist_addbasis()". */
+ Configlist_sortbasis();
+ bp = Configlist_basis();
+
+ /* Get a state with the same basis */
+ stp = State_find(bp);
+ if( stp ){
+ /* A state with the same basis already exists! Copy all the follow-set
+ ** propagation links from the state under construction into the
+ ** preexisting state, then return a pointer to the preexisting state */
+ struct config *x, *y;
+ for(x=bp, y=stp->bp; x && y; x=x->bp, y=y->bp){
+ Plink_copy(&y->bplp,x->bplp);
+ Plink_delete(x->fplp);
+ x->fplp = x->bplp = 0;
+ }
+ cfp = Configlist_return();
+ Configlist_eat(cfp);
+ }else{
+ /* This really is a new state. Construct all the details */
+ Configlist_closure(lemp); /* Compute the configuration closure */
+ Configlist_sort(); /* Sort the configuration closure */
+ cfp = Configlist_return(); /* Get a pointer to the config list */
+ stp = State_new(); /* A new state structure */
+ MemoryCheck(stp);
+ stp->bp = bp; /* Remember the configuration basis */
+ stp->cfp = cfp; /* Remember the configuration closure */
+ stp->statenum = lemp->nstate++; /* Every state gets a sequence number */
+ stp->ap = 0; /* No actions, yet. */
+ State_insert(stp,stp->bp); /* Add to the state table */
+ buildshifts(lemp,stp); /* Recursively compute successor states */
+ }
+ return stp;
+}
+
+/*
+** Return true if two symbols are the same.
+*/
+int same_symbol(struct symbol *a, struct symbol *b)
+{
+ int i;
+ if( a==b ) return 1;
+ if( a->type!=MULTITERMINAL ) return 0;
+ if( b->type!=MULTITERMINAL ) return 0;
+ if( a->nsubsym!=b->nsubsym ) return 0;
+ for(i=0; i<a->nsubsym; i++){
+ if( a->subsym[i]!=b->subsym[i] ) return 0;
+ }
+ return 1;
+}
+
+/* Construct all successor states to the given state. A "successor"
+** state is any state which can be reached by a shift action.
+*/
+PRIVATE void buildshifts(struct lemon *lemp, struct state *stp)
+{
+ struct config *cfp; /* For looping thru the config closure of "stp" */
+ struct config *bcfp; /* For the inner loop on config closure of "stp" */
+ struct config *newcfg; /* */
+ struct symbol *sp; /* Symbol following the dot in configuration "cfp" */
+ struct symbol *bsp; /* Symbol following the dot in configuration "bcfp" */
+ struct state *newstp; /* A pointer to a successor state */
+
+ /* Each configuration becomes complete after it contibutes to a successor
+ ** state. Initially, all configurations are incomplete */
+ for(cfp=stp->cfp; cfp; cfp=cfp->next) cfp->status = INCOMPLETE;
+
+ /* Loop through all configurations of the state "stp" */
+ for(cfp=stp->cfp; cfp; cfp=cfp->next){
+ if( cfp->status==COMPLETE ) continue; /* Already used by inner loop */
+ if( cfp->dot>=cfp->rp->nrhs ) continue; /* Can't shift this config */
+ Configlist_reset(); /* Reset the new config set */
+ sp = cfp->rp->rhs[cfp->dot]; /* Symbol after the dot */
+
+ /* For every configuration in the state "stp" which has the symbol "sp"
+ ** following its dot, add the same configuration to the basis set under
+ ** construction but with the dot shifted one symbol to the right. */
+ for(bcfp=cfp; bcfp; bcfp=bcfp->next){
+ if( bcfp->status==COMPLETE ) continue; /* Already used */
+ if( bcfp->dot>=bcfp->rp->nrhs ) continue; /* Can't shift this one */
+ bsp = bcfp->rp->rhs[bcfp->dot]; /* Get symbol after dot */
+ if( !same_symbol(bsp,sp) ) continue; /* Must be same as for "cfp" */
+ bcfp->status = COMPLETE; /* Mark this config as used */
+ newcfg = Configlist_addbasis(bcfp->rp,bcfp->dot+1);
+ Plink_add(&newcfg->bplp,bcfp);
+ }
+
+ /* Get a pointer to the state described by the basis configuration set
+ ** constructed in the preceding loop */
+ newstp = getstate(lemp);
+
+ /* The state "newstp" is reached from the state "stp" by a shift action
+ ** on the symbol "sp" */
+ if( sp->type==MULTITERMINAL ){
+ int i;
+ for(i=0; i<sp->nsubsym; i++){
+ Action_add(&stp->ap,SHIFT,sp->subsym[i],(char*)newstp);
+ }
+ }else{
+ Action_add(&stp->ap,SHIFT,sp,(char *)newstp);
+ }
+ }
+}
+
+/*
+** Construct the propagation links
+*/
+void FindLinks(struct lemon *lemp)
+{
+ int i;
+ struct config *cfp, *other;
+ struct state *stp;
+ struct plink *plp;
+
+ /* Housekeeping detail:
+ ** Add to every propagate link a pointer back to the state to
+ ** which the link is attached. */
+ for(i=0; i<lemp->nstate; i++){
+ stp = lemp->sorted[i];
+ for(cfp=stp->cfp; cfp; cfp=cfp->next){
+ cfp->stp = stp;
+ }
+ }
+
+ /* Convert all backlinks into forward links. Only the forward
+ ** links are used in the follow-set computation. */
+ for(i=0; i<lemp->nstate; i++){
+ stp = lemp->sorted[i];
+ for(cfp=stp->cfp; cfp; cfp=cfp->next){
+ for(plp=cfp->bplp; plp; plp=plp->next){
+ other = plp->cfp;
+ Plink_add(&other->fplp,cfp);
+ }
+ }
+ }
+}
+
+/* Compute all followsets.
+**
+** A followset is the set of all symbols which can come immediately
+** after a configuration.
+*/
+void FindFollowSets(struct lemon *lemp)
+{
+ int i;
+ struct config *cfp;
+ struct plink *plp;
+ int progress;
+ int change;
+
+ for(i=0; i<lemp->nstate; i++){
+ for(cfp=lemp->sorted[i]->cfp; cfp; cfp=cfp->next){
+ cfp->status = INCOMPLETE;
+ }
+ }
+
+ do{
+ progress = 0;
+ for(i=0; i<lemp->nstate; i++){
+ for(cfp=lemp->sorted[i]->cfp; cfp; cfp=cfp->next){
+ if( cfp->status==COMPLETE ) continue;
+ for(plp=cfp->fplp; plp; plp=plp->next){
+ change = SetUnion(plp->cfp->fws,cfp->fws);
+ if( change ){
+ plp->cfp->status = INCOMPLETE;
+ progress = 1;
+ }
+ }
+ cfp->status = COMPLETE;
+ }
+ }
+ }while( progress );
+}
+
+static int resolve_conflict(struct action *,struct action *);
+
+/* Compute the reduce actions, and resolve conflicts.
+*/
+void FindActions(struct lemon *lemp)
+{
+ int i,j;
+ struct config *cfp;
+ struct state *stp;
+ struct symbol *sp;
+ struct rule *rp;
+
+ /* Add all of the reduce actions
+ ** A reduce action is added for each element of the followset of
+ ** a configuration which has its dot at the extreme right.
+ */
+ for(i=0; i<lemp->nstate; i++){ /* Loop over all states */
+ stp = lemp->sorted[i];
+ for(cfp=stp->cfp; cfp; cfp=cfp->next){ /* Loop over all configurations */
+ if( cfp->rp->nrhs==cfp->dot ){ /* Is dot at extreme right? */
+ for(j=0; j<lemp->nterminal; j++){
+ if( SetFind(cfp->fws,j) ){
+ /* Add a reduce action to the state "stp" which will reduce by the
+ ** rule "cfp->rp" if the lookahead symbol is "lemp->symbols[j]" */
+ Action_add(&stp->ap,REDUCE,lemp->symbols[j],(char *)cfp->rp);
+ }
+ }
+ }
+ }
+ }
+
+ /* Add the accepting token */
+ if( lemp->start ){
+ sp = Symbol_find(lemp->start);
+ if( sp==0 ) sp = lemp->rule->lhs;
+ }else{
+ sp = lemp->rule->lhs;
+ }
+ /* Add to the first state (which is always the starting state of the
+ ** finite state machine) an action to ACCEPT if the lookahead is the
+ ** start nonterminal. */
+ Action_add(&lemp->sorted[0]->ap,ACCEPT,sp,0);
+
+ /* Resolve conflicts */
+ for(i=0; i<lemp->nstate; i++){
+ struct action *ap, *nap;
+ struct state *stp;
+ stp = lemp->sorted[i];
+ /* assert( stp->ap ); */
+ stp->ap = Action_sort(stp->ap);
+ for(ap=stp->ap; ap && ap->next; ap=ap->next){
+ for(nap=ap->next; nap && nap->sp==ap->sp; nap=nap->next){
+ /* The two actions "ap" and "nap" have the same lookahead.
+ ** Figure out which one should be used */
+ lemp->nconflict += resolve_conflict(ap,nap);
+ }
+ }
+ }
+
+ /* Report an error for each rule that can never be reduced. */
+ for(rp=lemp->rule; rp; rp=rp->next) rp->canReduce = LEMON_FALSE;
+ for(i=0; i<lemp->nstate; i++){
+ struct action *ap;
+ for(ap=lemp->sorted[i]->ap; ap; ap=ap->next){
+ if( ap->type==REDUCE ) ap->x.rp->canReduce = LEMON_TRUE;
+ }
+ }
+ for(rp=lemp->rule; rp; rp=rp->next){
+ if( rp->canReduce ) continue;
+ ErrorMsg(lemp->filename,rp->ruleline,"This rule can not be reduced.\n");
+ lemp->errorcnt++;
+ }
+}
+
+/* Resolve a conflict between the two given actions. If the
+** conflict can't be resolved, return non-zero.
+**
+** NO LONGER TRUE:
+** To resolve a conflict, first look to see if either action
+** is on an error rule. In that case, take the action which
+** is not associated with the error rule. If neither or both
+** actions are associated with an error rule, then try to
+** use precedence to resolve the conflict.
+**
+** If either action is a SHIFT, then it must be apx. This
+** function won't work if apx->type==REDUCE and apy->type==SHIFT.
+*/
+static int resolve_conflict(
+ struct action *apx,
+ struct action *apy
+){
+ struct symbol *spx, *spy;
+ int errcnt = 0;
+ assert( apx->sp==apy->sp ); /* Otherwise there would be no conflict */
+ if( apx->type==SHIFT && apy->type==SHIFT ){
+ apy->type = SSCONFLICT;
+ errcnt++;
+ }
+ if( apx->type==SHIFT && apy->type==REDUCE ){
+ spx = apx->sp;
+ spy = apy->x.rp->precsym;
+ if( spy==0 || spx->prec<0 || spy->prec<0 ){
+ /* Not enough precedence information. */
+ apy->type = SRCONFLICT;
+ errcnt++;
+ }else if( spx->prec>spy->prec ){ /* higher precedence wins */
+ apy->type = RD_RESOLVED;
+ }else if( spx->prec<spy->prec ){
+ apx->type = SH_RESOLVED;
+ }else if( spx->prec==spy->prec && spx->assoc==RIGHT ){ /* Use operator */
+ apy->type = RD_RESOLVED; /* associativity */
+ }else if( spx->prec==spy->prec && spx->assoc==LEFT ){ /* to break tie */
+ apx->type = SH_RESOLVED;
+ }else{
+ assert( spx->prec==spy->prec && spx->assoc==NONE );
+ apx->type = ERROR;
+ }
+ }else if( apx->type==REDUCE && apy->type==REDUCE ){
+ spx = apx->x.rp->precsym;
+ spy = apy->x.rp->precsym;
+ if( spx==0 || spy==0 || spx->prec<0 ||
+ spy->prec<0 || spx->prec==spy->prec ){
+ apy->type = RRCONFLICT;
+ errcnt++;
+ }else if( spx->prec>spy->prec ){
+ apy->type = RD_RESOLVED;
+ }else if( spx->prec<spy->prec ){
+ apx->type = RD_RESOLVED;
+ }
+ }else{
+ assert(
+ apx->type==SH_RESOLVED ||
+ apx->type==RD_RESOLVED ||
+ apx->type==SSCONFLICT ||
+ apx->type==SRCONFLICT ||
+ apx->type==RRCONFLICT ||
+ apy->type==SH_RESOLVED ||
+ apy->type==RD_RESOLVED ||
+ apy->type==SSCONFLICT ||
+ apy->type==SRCONFLICT ||
+ apy->type==RRCONFLICT
+ );
+ /* The REDUCE/SHIFT case cannot happen because SHIFTs come before
+ ** REDUCEs on the list. If we reach this point it must be because
+ ** the parser conflict had already been resolved. */
+ }
+ return errcnt;
+}
+/********************* From the file "configlist.c" *************************/
+/*
+** Routines to processing a configuration list and building a state
+** in the LEMON parser generator.
+*/
+
+static struct config *freelist = 0; /* List of free configurations */
+static struct config *current = 0; /* Top of list of configurations */
+static struct config **currentend = 0; /* Last on list of configs */
+static struct config *basis = 0; /* Top of list of basis configs */
+static struct config **basisend = 0; /* End of list of basis configs */
+
+/* Return a pointer to a new configuration */
+PRIVATE struct config *newconfig(){
+ struct config *newcfg;
+ if( freelist==0 ){
+ int i;
+ int amt = 3;
+ freelist = (struct config *)calloc( amt, sizeof(struct config) );
+ if( freelist==0 ){
+ fprintf(stderr,"Unable to allocate memory for a new configuration.");
+ exit(1);
+ }
+ for(i=0; i<amt-1; i++) freelist[i].next = &freelist[i+1];
+ freelist[amt-1].next = 0;
+ }
+ newcfg = freelist;
+ freelist = freelist->next;
+ return newcfg;
+}
+
+/* The configuration "old" is no longer used */
+PRIVATE void deleteconfig(struct config *old)
+{
+ old->next = freelist;
+ freelist = old;
+}
+
+/* Initialized the configuration list builder */
+void Configlist_init(){
+ current = 0;
+ currentend = &current;
+ basis = 0;
+ basisend = &basis;
+ Configtable_init();
+ return;
+}
+
+/* Initialized the configuration list builder */
+void Configlist_reset(){
+ current = 0;
+ currentend = &current;
+ basis = 0;
+ basisend = &basis;
+ Configtable_clear(0);
+ return;
+}
+
+/* Add another configuration to the configuration list */
+struct config *Configlist_add(
+ struct rule *rp, /* The rule */
+ int dot /* Index into the RHS of the rule where the dot goes */
+){
+ struct config *cfp, model;
+
+ assert( currentend!=0 );
+ model.rp = rp;
+ model.dot = dot;
+ cfp = Configtable_find(&model);
+ if( cfp==0 ){
+ cfp = newconfig();
+ cfp->rp = rp;
+ cfp->dot = dot;
+ cfp->fws = SetNew();
+ cfp->stp = 0;
+ cfp->fplp = cfp->bplp = 0;
+ cfp->next = 0;
+ cfp->bp = 0;
+ *currentend = cfp;
+ currentend = &cfp->next;
+ Configtable_insert(cfp);
+ }
+ return cfp;
+}
+
+/* Add a basis configuration to the configuration list */
+struct config *Configlist_addbasis(struct rule *rp, int dot)
+{
+ struct config *cfp, model;
+
+ assert( basisend!=0 );
+ assert( currentend!=0 );
+ model.rp = rp;
+ model.dot = dot;
+ cfp = Configtable_find(&model);
+ if( cfp==0 ){
+ cfp = newconfig();
+ cfp->rp = rp;
+ cfp->dot = dot;
+ cfp->fws = SetNew();
+ cfp->stp = 0;
+ cfp->fplp = cfp->bplp = 0;
+ cfp->next = 0;
+ cfp->bp = 0;
+ *currentend = cfp;
+ currentend = &cfp->next;
+ *basisend = cfp;
+ basisend = &cfp->bp;
+ Configtable_insert(cfp);
+ }
+ return cfp;
+}
+
+/* Compute the closure of the configuration list */
+void Configlist_closure(struct lemon *lemp)
+{
+ struct config *cfp, *newcfp;
+ struct rule *rp, *newrp;
+ struct symbol *sp, *xsp;
+ int i, dot;
+
+ assert( currentend!=0 );
+ for(cfp=current; cfp; cfp=cfp->next){
+ rp = cfp->rp;
+ dot = cfp->dot;
+ if( dot>=rp->nrhs ) continue;
+ sp = rp->rhs[dot];
+ if( sp->type==NONTERMINAL ){
+ if( sp->rule==0 && sp!=lemp->errsym ){
+ ErrorMsg(lemp->filename,rp->line,"Nonterminal \"%s\" has no rules.",
+ sp->name);
+ lemp->errorcnt++;
+ }
+ for(newrp=sp->rule; newrp; newrp=newrp->nextlhs){
+ newcfp = Configlist_add(newrp,0);
+ for(i=dot+1; i<rp->nrhs; i++){
+ xsp = rp->rhs[i];
+ if( xsp->type==TERMINAL ){
+ SetAdd(newcfp->fws,xsp->index);
+ break;
+ }else if( xsp->type==MULTITERMINAL ){
+ int k;
+ for(k=0; k<xsp->nsubsym; k++){
+ SetAdd(newcfp->fws, xsp->subsym[k]->index);
+ }
+ break;
+ }else{
+ SetUnion(newcfp->fws,xsp->firstset);
+ if( xsp->lambda==LEMON_FALSE ) break;
+ }
+ }
+ if( i==rp->nrhs ) Plink_add(&cfp->fplp,newcfp);
+ }
+ }
+ }
+ return;
+}
+
+/* Sort the configuration list */
+void Configlist_sort(){
+ current = (struct config *)msort((char *)current,(char **)&(current->next),Configcmp);
+ currentend = 0;
+ return;
+}
+
+/* Sort the basis configuration list */
+void Configlist_sortbasis(){
+ basis = (struct config *)msort((char *)current,(char **)&(current->bp),Configcmp);
+ basisend = 0;
+ return;
+}
+
+/* Return a pointer to the head of the configuration list and
+** reset the list */
+struct config *Configlist_return(){
+ struct config *old;
+ old = current;
+ current = 0;
+ currentend = 0;
+ return old;
+}
+
+/* Return a pointer to the head of the configuration list and
+** reset the list */
+struct config *Configlist_basis(){
+ struct config *old;
+ old = basis;
+ basis = 0;
+ basisend = 0;
+ return old;
+}
+
+/* Free all elements of the given configuration list */
+void Configlist_eat(struct config *cfp)
+{
+ struct config *nextcfp;
+ for(; cfp; cfp=nextcfp){
+ nextcfp = cfp->next;
+ assert( cfp->fplp==0 );
+ assert( cfp->bplp==0 );
+ if( cfp->fws ) SetFree(cfp->fws);
+ deleteconfig(cfp);
+ }
+ return;
+}
+/***************** From the file "error.c" *********************************/
+/*
+** Code for printing error message.
+*/
+
+void ErrorMsg(const char *filename, int lineno, const char *format, ...){
+ va_list ap;
+ fprintf(stderr, "%s:%d: ", filename, lineno);
+ va_start(ap, format);
+ vfprintf(stderr,format,ap);
+ va_end(ap);
+ fprintf(stderr, "\n");
+}
+/**************** From the file "main.c" ************************************/
+/*
+** Main program file for the LEMON parser generator.
+*/
+
+/* Report an out-of-memory condition and abort. This function
+** is used mostly by the "MemoryCheck" macro in struct.h
+*/
+void memory_error(){
+ fprintf(stderr,"Out of memory. Aborting...\n");
+ exit(1);
+}
+
+static int nDefine = 0; /* Number of -D options on the command line */
+static char **azDefine = 0; /* Name of the -D macros */
+
+/* This routine is called with the argument to each -D command-line option.
+** Add the macro defined to the azDefine array.
+*/
+static void handle_D_option(char *z){
+ char **paz;
+ nDefine++;
+ azDefine = (char **) realloc(azDefine, sizeof(azDefine[0])*nDefine);
+ if( azDefine==0 ){
+ fprintf(stderr,"out of memory\n");
+ exit(1);
+ }
+ paz = &azDefine[nDefine-1];
+ *paz = (char *) malloc( lemonStrlen(z)+1 );
+ if( *paz==0 ){
+ fprintf(stderr,"out of memory\n");
+ exit(1);
+ }
+ lemon_strcpy(*paz, z);
+ for(z=*paz; *z && *z!='='; z++){}
+ *z = 0;
+}
+
+static char *user_templatename = NULL;
+static void handle_T_option(char *z){
+ user_templatename = (char *) malloc( lemonStrlen(z)+1 );
+ if( user_templatename==0 ){
+ memory_error();
+ }
+ lemon_strcpy(user_templatename, z);
+}
+
+/* The main program. Parse the command line and do it... */
+int main(int argc, char **argv)
+{
+ static int version = 0;
+ static int rpflag = 0;
+ static int basisflag = 0;
+ static int compress = 0;
+ static int quiet = 0;
+ static int statistics = 0;
+ static int mhflag = 0;
+ static int nolinenosflag = 0;
+ static int noResort = 0;
+ static struct s_options options[] = {
+ {OPT_FLAG, "b", (char*)&basisflag, "Print only the basis in report."},
+ {OPT_FLAG, "c", (char*)&compress, "Don't compress the action table."},
+ {OPT_FSTR, "D", (char*)handle_D_option, "Define an %ifdef macro."},
+ {OPT_FSTR, "T", (char*)handle_T_option, "Specify a template file."},
+ {OPT_FLAG, "g", (char*)&rpflag, "Print grammar without actions."},
+ {OPT_FLAG, "m", (char*)&mhflag, "Output a makeheaders compatible file."},
+ {OPT_FLAG, "l", (char*)&nolinenosflag, "Do not print #line statements."},
+ {OPT_FLAG, "p", (char*)&showPrecedenceConflict,
+ "Show conflicts resolved by precedence rules"},
+ {OPT_FLAG, "q", (char*)&quiet, "(Quiet) Don't print the report file."},
+ {OPT_FLAG, "r", (char*)&noResort, "Do not sort or renumber states"},
+ {OPT_FLAG, "s", (char*)&statistics,
+ "Print parser stats to standard output."},
+ {OPT_FLAG, "x", (char*)&version, "Print the version number."},
+ {OPT_FLAG,0,0,0}
+ };
+ int i;
+ int exitcode;
+ struct lemon lem;
+
+ OptInit(argv,options,stderr);
+ if( version ){
+ printf("Lemon version 1.0\n");
+ exit(0);
+ }
+ if( OptNArgs()!=1 ){
+ fprintf(stderr,"Exactly one filename argument is required.\n");
+ exit(1);
+ }
+ memset(&lem, 0, sizeof(lem));
+ lem.errorcnt = 0;
+
+ /* Initialize the machine */
+ Strsafe_init();
+ Symbol_init();
+ State_init();
+ lem.argv0 = argv[0];
+ lem.filename = OptArg(0);
+ lem.basisflag = basisflag;
+ lem.nolinenosflag = nolinenosflag;
+ Symbol_new("$");
+ lem.errsym = Symbol_new("error");
+ lem.errsym->useCnt = 0;
+
+ /* Parse the input file */
+ Parse(&lem);
+ if( lem.errorcnt ) exit(lem.errorcnt);
+ if( lem.nrule==0 ){
+ fprintf(stderr,"Empty grammar.\n");
+ exit(1);
+ }
+
+ /* Count and index the symbols of the grammar */
+ Symbol_new("{default}");
+ lem.nsymbol = Symbol_count();
+ lem.symbols = Symbol_arrayof();
+ for(i=0; i<lem.nsymbol; i++) lem.symbols[i]->index = i;
+ qsort(lem.symbols,lem.nsymbol,sizeof(struct symbol*), Symbolcmpp);
+ for(i=0; i<lem.nsymbol; i++) lem.symbols[i]->index = i;
+ while( lem.symbols[i-1]->type==MULTITERMINAL ){ i--; }
+ assert( strcmp(lem.symbols[i-1]->name,"{default}")==0 );
+ lem.nsymbol = i - 1;
+ for(i=1; isupper(lem.symbols[i]->name[0]); i++);
+ lem.nterminal = i;
+
+ /* Generate a reprint of the grammar, if requested on the command line */
+ if( rpflag ){
+ Reprint(&lem);
+ }else{
+ /* Initialize the size for all follow and first sets */
+ SetSize(lem.nterminal+1);
+
+ /* Find the precedence for every production rule (that has one) */
+ FindRulePrecedences(&lem);
+
+ /* Compute the lambda-nonterminals and the first-sets for every
+ ** nonterminal */
+ FindFirstSets(&lem);
+
+ /* Compute all LR(0) states. Also record follow-set propagation
+ ** links so that the follow-set can be computed later */
+ lem.nstate = 0;
+ FindStates(&lem);
+ lem.sorted = State_arrayof();
+
+ /* Tie up loose ends on the propagation links */
+ FindLinks(&lem);
+
+ /* Compute the follow set of every reducible configuration */
+ FindFollowSets(&lem);
+
+ /* Compute the action tables */
+ FindActions(&lem);
+
+ /* Compress the action tables */
+ if( compress==0 ) CompressTables(&lem);
+
+ /* Reorder and renumber the states so that states with fewer choices
+ ** occur at the end. This is an optimization that helps make the
+ ** generated parser tables smaller. */
+ if( noResort==0 ) ResortStates(&lem);
+
+ /* Generate a report of the parser generated. (the "y.output" file) */
+ if( !quiet ) ReportOutput(&lem);
+
+ /* Generate the source code for the parser */
+ ReportTable(&lem, mhflag);
+
+ /* Produce a header file for use by the scanner. (This step is
+ ** omitted if the "-m" option is used because makeheaders will
+ ** generate the file for us.) */
+ if( !mhflag ) ReportHeader(&lem);
+ }
+ if( statistics ){
+ printf("Parser statistics: %d terminals, %d nonterminals, %d rules\n",
+ lem.nterminal, lem.nsymbol - lem.nterminal, lem.nrule);
+ printf(" %d states, %d parser table entries, %d conflicts\n",
+ lem.nstate, lem.tablesize, lem.nconflict);
+ }
+ if( lem.nconflict > 0 ){
+ fprintf(stderr,"%d parsing conflicts.\n",lem.nconflict);
+ }
+
+ /* return 0 on success, 1 on failure. */
+ exitcode = ((lem.errorcnt > 0) || (lem.nconflict > 0)) ? 1 : 0;
+ exit(exitcode);
+ return (exitcode);
+}
+/******************** From the file "msort.c" *******************************/
+/*
+** A generic merge-sort program.
+**
+** USAGE:
+** Let "ptr" be a pointer to some structure which is at the head of
+** a null-terminated list. Then to sort the list call:
+**
+** ptr = msort(ptr,&(ptr->next),cmpfnc);
+**
+** In the above, "cmpfnc" is a pointer to a function which compares
+** two instances of the structure and returns an integer, as in
+** strcmp. The second argument is a pointer to the pointer to the
+** second element of the linked list. This address is used to compute
+** the offset to the "next" field within the structure. The offset to
+** the "next" field must be constant for all structures in the list.
+**
+** The function returns a new pointer which is the head of the list
+** after sorting.
+**
+** ALGORITHM:
+** Merge-sort.
+*/
+
+/*
+** Return a pointer to the next structure in the linked list.
+*/
+#define NEXT(A) (*(char**)(((char*)A)+offset))
+
+/*
+** Inputs:
+** a: A sorted, null-terminated linked list. (May be null).
+** b: A sorted, null-terminated linked list. (May be null).
+** cmp: A pointer to the comparison function.
+** offset: Offset in the structure to the "next" field.
+**
+** Return Value:
+** A pointer to the head of a sorted list containing the elements
+** of both a and b.
+**
+** Side effects:
+** The "next" pointers for elements in the lists a and b are
+** changed.
+*/
+static char *merge(
+ char *a,
+ char *b,
+ int (*cmp)(const char*,const char*),
+ int offset
+){
+ char *ptr, *head;
+
+ if( a==0 ){
+ head = b;
+ }else if( b==0 ){
+ head = a;
+ }else{
+ if( (*cmp)(a,b)<=0 ){
+ ptr = a;
+ a = NEXT(a);
+ }else{
+ ptr = b;
+ b = NEXT(b);
+ }
+ head = ptr;
+ while( a && b ){
+ if( (*cmp)(a,b)<=0 ){
+ NEXT(ptr) = a;
+ ptr = a;
+ a = NEXT(a);
+ }else{
+ NEXT(ptr) = b;
+ ptr = b;
+ b = NEXT(b);
+ }
+ }
+ if( a ) NEXT(ptr) = a;
+ else NEXT(ptr) = b;
+ }
+ return head;
+}
+
+/*
+** Inputs:
+** list: Pointer to a singly-linked list of structures.
+** next: Pointer to pointer to the second element of the list.
+** cmp: A comparison function.
+**
+** Return Value:
+** A pointer to the head of a sorted list containing the elements
+** orginally in list.
+**
+** Side effects:
+** The "next" pointers for elements in list are changed.
+*/
+#define LISTSIZE 30
+static char *msort(
+ char *list,
+ char **next,
+ int (*cmp)(const char*,const char*)
+){
+ unsigned long offset;
+ char *ep;
+ char *set[LISTSIZE];
+ int i;
+ offset = (unsigned long)next - (unsigned long)list;
+ for(i=0; i<LISTSIZE; i++) set[i] = 0;
+ while( list ){
+ ep = list;
+ list = NEXT(list);
+ NEXT(ep) = 0;
+ for(i=0; i<LISTSIZE-1 && set[i]!=0; i++){
+ ep = merge(ep,set[i],cmp,offset);
+ set[i] = 0;
+ }
+ set[i] = ep;
+ }
+ ep = 0;
+ for(i=0; i<LISTSIZE; i++) if( set[i] ) ep = merge(set[i],ep,cmp,offset);
+ return ep;
+}
+/************************ From the file "option.c" **************************/
+static char **argv;
+static struct s_options *op;
+static FILE *errstream;
+
+#define ISOPT(X) ((X)[0]=='-'||(X)[0]=='+'||strchr((X),'=')!=0)
+
+/*
+** Print the command line with a carrot pointing to the k-th character
+** of the n-th field.
+*/
+static void errline(int n, int k, FILE *err)
+{
+ int spcnt, i;
+ if( argv[0] ) fprintf(err,"%s",argv[0]);
+ spcnt = lemonStrlen(argv[0]) + 1;
+ for(i=1; i<n && argv[i]; i++){
+ fprintf(err," %s",argv[i]);
+ spcnt += lemonStrlen(argv[i])+1;
+ }
+ spcnt += k;
+ for(; argv[i]; i++) fprintf(err," %s",argv[i]);
+ if( spcnt<20 ){
+ fprintf(err,"\n%*s^-- here\n",spcnt,"");
+ }else{
+ fprintf(err,"\n%*shere --^\n",spcnt-7,"");
+ }
+}
+
+/*
+** Return the index of the N-th non-switch argument. Return -1
+** if N is out of range.
+*/
+static int argindex(int n)
+{
+ int i;
+ int dashdash = 0;
+ if( argv!=0 && *argv!=0 ){
+ for(i=1; argv[i]; i++){
+ if( dashdash || !ISOPT(argv[i]) ){
+ if( n==0 ) return i;
+ n--;
+ }
+ if( strcmp(argv[i],"--")==0 ) dashdash = 1;
+ }
+ }
+ return -1;
+}
+
+static char emsg[] = "Command line syntax error: ";
+
+/*
+** Process a flag command line argument.
+*/
+static int handleflags(int i, FILE *err)
+{
+ int v;
+ int errcnt = 0;
+ int j;
+ for(j=0; op[j].label; j++){
+ if( strncmp(&argv[i][1],op[j].label,lemonStrlen(op[j].label))==0 ) break;
+ }
+ v = argv[i][0]=='-' ? 1 : 0;
+ if( op[j].label==0 ){
+ if( err ){
+ fprintf(err,"%sundefined option.\n",emsg);
+ errline(i,1,err);
+ }
+ errcnt++;
+ }else if( op[j].type==OPT_FLAG ){
+ *((int*)op[j].arg) = v;
+ }else if( op[j].type==OPT_FFLAG ){
+ (*(void(*)(int))(op[j].arg))(v);
+ }else if( op[j].type==OPT_FSTR ){
+ (*(void(*)(char *))(op[j].arg))(&argv[i][2]);
+ }else{
+ if( err ){
+ fprintf(err,"%smissing argument on switch.\n",emsg);
+ errline(i,1,err);
+ }
+ errcnt++;
+ }
+ return errcnt;
+}
+
+/*
+** Process a command line switch which has an argument.
+*/
+static int handleswitch(int i, FILE *err)
+{
+ int lv = 0;
+ double dv = 0.0;
+ char *sv = 0, *end;
+ char *cp;
+ int j;
+ int errcnt = 0;
+ cp = strchr(argv[i],'=');
+ assert( cp!=0 );
+ *cp = 0;
+ for(j=0; op[j].label; j++){
+ if( strcmp(argv[i],op[j].label)==0 ) break;
+ }
+ *cp = '=';
+ if( op[j].label==0 ){
+ if( err ){
+ fprintf(err,"%sundefined option.\n",emsg);
+ errline(i,0,err);
+ }
+ errcnt++;
+ }else{
+ cp++;
+ switch( op[j].type ){
+ case OPT_FLAG:
+ case OPT_FFLAG:
+ if( err ){
+ fprintf(err,"%soption requires an argument.\n",emsg);
+ errline(i,0,err);
+ }
+ errcnt++;
+ break;
+ case OPT_DBL:
+ case OPT_FDBL:
+ dv = strtod(cp,&end);
+ if( *end ){
+ if( err ){
+ fprintf(err,"%sillegal character in floating-point argument.\n",emsg);
+ errline(i,((unsigned long)end)-(unsigned long)argv[i],err);
+ }
+ errcnt++;
+ }
+ break;
+ case OPT_INT:
+ case OPT_FINT:
+ lv = strtol(cp,&end,0);
+ if( *end ){
+ if( err ){
+ fprintf(err,"%sillegal character in integer argument.\n",emsg);
+ errline(i,((unsigned long)end)-(unsigned long)argv[i],err);
+ }
+ errcnt++;
+ }
+ break;
+ case OPT_STR:
+ case OPT_FSTR:
+ sv = cp;
+ break;
+ }
+ switch( op[j].type ){
+ case OPT_FLAG:
+ case OPT_FFLAG:
+ break;
+ case OPT_DBL:
+ *(double*)(op[j].arg) = dv;
+ break;
+ case OPT_FDBL:
+ (*(void(*)(double))(op[j].arg))(dv);
+ break;
+ case OPT_INT:
+ *(int*)(op[j].arg) = lv;
+ break;
+ case OPT_FINT:
+ (*(void(*)(int))(op[j].arg))((int)lv);
+ break;
+ case OPT_STR:
+ *(char**)(op[j].arg) = sv;
+ break;
+ case OPT_FSTR:
+ (*(void(*)(char *))(op[j].arg))(sv);
+ break;
+ }
+ }
+ return errcnt;
+}
+
+int OptInit(char **a, struct s_options *o, FILE *err)
+{
+ int errcnt = 0;
+ argv = a;
+ op = o;
+ errstream = err;
+ if( argv && *argv && op ){
+ int i;
+ for(i=1; argv[i]; i++){
+ if( argv[i][0]=='+' || argv[i][0]=='-' ){
+ errcnt += handleflags(i,err);
+ }else if( strchr(argv[i],'=') ){
+ errcnt += handleswitch(i,err);
+ }
+ }
+ }
+ if( errcnt>0 ){
+ fprintf(err,"Valid command line options for \"%s\" are:\n",*a);
+ OptPrint();
+ exit(1);
+ }
+ return 0;
+}
+
+int OptNArgs(){
+ int cnt = 0;
+ int dashdash = 0;
+ int i;
+ if( argv!=0 && argv[0]!=0 ){
+ for(i=1; argv[i]; i++){
+ if( dashdash || !ISOPT(argv[i]) ) cnt++;
+ if( strcmp(argv[i],"--")==0 ) dashdash = 1;
+ }
+ }
+ return cnt;
+}
+
+char *OptArg(int n)
+{
+ int i;
+ i = argindex(n);
+ return i>=0 ? argv[i] : 0;
+}
+
+void OptErr(int n)
+{
+ int i;
+ i = argindex(n);
+ if( i>=0 ) errline(i,0,errstream);
+}
+
+void OptPrint(){
+ int i;
+ int max, len;
+ max = 0;
+ for(i=0; op[i].label; i++){
+ len = lemonStrlen(op[i].label) + 1;
+ switch( op[i].type ){
+ case OPT_FLAG:
+ case OPT_FFLAG:
+ break;
+ case OPT_INT:
+ case OPT_FINT:
+ len += 9; /* length of "<integer>" */
+ break;
+ case OPT_DBL:
+ case OPT_FDBL:
+ len += 6; /* length of "<real>" */
+ break;
+ case OPT_STR:
+ case OPT_FSTR:
+ len += 8; /* length of "<string>" */
+ break;
+ }
+ if( len>max ) max = len;
+ }
+ for(i=0; op[i].label; i++){
+ switch( op[i].type ){
+ case OPT_FLAG:
+ case OPT_FFLAG:
+ fprintf(errstream," -%-*s %s\n",max,op[i].label,op[i].message);
+ break;
+ case OPT_INT:
+ case OPT_FINT:
+ fprintf(errstream," %s=<integer>%*s %s\n",op[i].label,
+ (int)(max-lemonStrlen(op[i].label)-9),"",op[i].message);
+ break;
+ case OPT_DBL:
+ case OPT_FDBL:
+ fprintf(errstream," %s=<real>%*s %s\n",op[i].label,
+ (int)(max-lemonStrlen(op[i].label)-6),"",op[i].message);
+ break;
+ case OPT_STR:
+ case OPT_FSTR:
+ fprintf(errstream," %s=<string>%*s %s\n",op[i].label,
+ (int)(max-lemonStrlen(op[i].label)-8),"",op[i].message);
+ break;
+ }
+ }
+}
+/*********************** From the file "parse.c" ****************************/
+/*
+** Input file parser for the LEMON parser generator.
+*/
+
+/* The state of the parser */
+enum e_state {
+ INITIALIZE,
+ WAITING_FOR_DECL_OR_RULE,
+ WAITING_FOR_DECL_KEYWORD,
+ WAITING_FOR_DECL_ARG,
+ WAITING_FOR_PRECEDENCE_SYMBOL,
+ WAITING_FOR_ARROW,
+ IN_RHS,
+ LHS_ALIAS_1,
+ LHS_ALIAS_2,
+ LHS_ALIAS_3,
+ RHS_ALIAS_1,
+ RHS_ALIAS_2,
+ PRECEDENCE_MARK_1,
+ PRECEDENCE_MARK_2,
+ RESYNC_AFTER_RULE_ERROR,
+ RESYNC_AFTER_DECL_ERROR,
+ WAITING_FOR_DESTRUCTOR_SYMBOL,
+ WAITING_FOR_DATATYPE_SYMBOL,
+ WAITING_FOR_FALLBACK_ID,
+ WAITING_FOR_WILDCARD_ID,
+ WAITING_FOR_CLASS_ID,
+ WAITING_FOR_CLASS_TOKEN
+};
+struct pstate {
+ char *filename; /* Name of the input file */
+ int tokenlineno; /* Linenumber at which current token starts */
+ int errorcnt; /* Number of errors so far */
+ char *tokenstart; /* Text of current token */
+ struct lemon *gp; /* Global state vector */
+ enum e_state state; /* The state of the parser */
+ struct symbol *fallback; /* The fallback token */
+ struct symbol *tkclass; /* Token class symbol */
+ struct symbol *lhs; /* Left-hand side of current rule */
+ const char *lhsalias; /* Alias for the LHS */
+ int nrhs; /* Number of right-hand side symbols seen */
+ struct symbol *rhs[MAXRHS]; /* RHS symbols */
+ const char *alias[MAXRHS]; /* Aliases for each RHS symbol (or NULL) */
+ struct rule *prevrule; /* Previous rule parsed */
+ const char *declkeyword; /* Keyword of a declaration */
+ char **declargslot; /* Where the declaration argument should be put */
+ int insertLineMacro; /* Add #line before declaration insert */
+ int *decllinenoslot; /* Where to write declaration line number */
+ enum e_assoc declassoc; /* Assign this association to decl arguments */
+ int preccounter; /* Assign this precedence to decl arguments */
+ struct rule *firstrule; /* Pointer to first rule in the grammar */
+ struct rule *lastrule; /* Pointer to the most recently parsed rule */
+};
+
+/* Parse a single token */
+static void parseonetoken(struct pstate *psp)
+{
+ const char *x;
+ x = Strsafe(psp->tokenstart); /* Save the token permanently */
+#if 0
+ printf("%s:%d: Token=[%s] state=%d\n",psp->filename,psp->tokenlineno,
+ x,psp->state);
+#endif
+ switch( psp->state ){
+ case INITIALIZE:
+ psp->prevrule = 0;
+ psp->preccounter = 0;
+ psp->firstrule = psp->lastrule = 0;
+ psp->gp->nrule = 0;
+ /* Fall thru to next case */
+ case WAITING_FOR_DECL_OR_RULE:
+ if( x[0]=='%' ){
+ psp->state = WAITING_FOR_DECL_KEYWORD;
+ }else if( islower(x[0]) ){
+ psp->lhs = Symbol_new(x);
+ psp->nrhs = 0;
+ psp->lhsalias = 0;
+ psp->state = WAITING_FOR_ARROW;
+ }else if( x[0]=='{' ){
+ if( psp->prevrule==0 ){
+ ErrorMsg(psp->filename,psp->tokenlineno,
+"There is no prior rule upon which to attach the code \
+fragment which begins on this line.");
+ psp->errorcnt++;
+ }else if( psp->prevrule->code!=0 ){
+ ErrorMsg(psp->filename,psp->tokenlineno,
+"Code fragment beginning on this line is not the first \
+to follow the previous rule.");
+ psp->errorcnt++;
+ }else{
+ psp->prevrule->line = psp->tokenlineno;
+ psp->prevrule->code = &x[1];
+ }
+ }else if( x[0]=='[' ){
+ psp->state = PRECEDENCE_MARK_1;
+ }else{
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Token \"%s\" should be either \"%%\" or a nonterminal name.",
+ x);
+ psp->errorcnt++;
+ }
+ break;
+ case PRECEDENCE_MARK_1:
+ if( !isupper(x[0]) ){
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "The precedence symbol must be a terminal.");
+ psp->errorcnt++;
+ }else if( psp->prevrule==0 ){
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "There is no prior rule to assign precedence \"[%s]\".",x);
+ psp->errorcnt++;
+ }else if( psp->prevrule->precsym!=0 ){
+ ErrorMsg(psp->filename,psp->tokenlineno,
+"Precedence mark on this line is not the first \
+to follow the previous rule.");
+ psp->errorcnt++;
+ }else{
+ psp->prevrule->precsym = Symbol_new(x);
+ }
+ psp->state = PRECEDENCE_MARK_2;
+ break;
+ case PRECEDENCE_MARK_2:
+ if( x[0]!=']' ){
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Missing \"]\" on precedence mark.");
+ psp->errorcnt++;
+ }
+ psp->state = WAITING_FOR_DECL_OR_RULE;
+ break;
+ case WAITING_FOR_ARROW:
+ if( x[0]==':' && x[1]==':' && x[2]=='=' ){
+ psp->state = IN_RHS;
+ }else if( x[0]=='(' ){
+ psp->state = LHS_ALIAS_1;
+ }else{
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Expected to see a \":\" following the LHS symbol \"%s\".",
+ psp->lhs->name);
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_RULE_ERROR;
+ }
+ break;
+ case LHS_ALIAS_1:
+ if( isalpha(x[0]) ){
+ psp->lhsalias = x;
+ psp->state = LHS_ALIAS_2;
+ }else{
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "\"%s\" is not a valid alias for the LHS \"%s\"\n",
+ x,psp->lhs->name);
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_RULE_ERROR;
+ }
+ break;
+ case LHS_ALIAS_2:
+ if( x[0]==')' ){
+ psp->state = LHS_ALIAS_3;
+ }else{
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Missing \")\" following LHS alias name \"%s\".",psp->lhsalias);
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_RULE_ERROR;
+ }
+ break;
+ case LHS_ALIAS_3:
+ if( x[0]==':' && x[1]==':' && x[2]=='=' ){
+ psp->state = IN_RHS;
+ }else{
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Missing \"->\" following: \"%s(%s)\".",
+ psp->lhs->name,psp->lhsalias);
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_RULE_ERROR;
+ }
+ break;
+ case IN_RHS:
+ if( x[0]=='.' ){
+ struct rule *rp;
+ rp = (struct rule *)calloc( sizeof(struct rule) +
+ sizeof(struct symbol*)*psp->nrhs + sizeof(char*)*psp->nrhs, 1);
+ if( rp==0 ){
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Can't allocate enough memory for this rule.");
+ psp->errorcnt++;
+ psp->prevrule = 0;
+ }else{
+ int i;
+ rp->ruleline = psp->tokenlineno;
+ rp->rhs = (struct symbol**)&rp[1];
+ rp->rhsalias = (const char**)&(rp->rhs[psp->nrhs]);
+ for(i=0; i<psp->nrhs; i++){
+ rp->rhs[i] = psp->rhs[i];
+ rp->rhsalias[i] = psp->alias[i];
+ }
+ rp->lhs = psp->lhs;
+ rp->lhsalias = psp->lhsalias;
+ rp->nrhs = psp->nrhs;
+ rp->code = 0;
+ rp->precsym = 0;
+ rp->index = psp->gp->nrule++;
+ rp->nextlhs = rp->lhs->rule;
+ rp->lhs->rule = rp;
+ rp->next = 0;
+ if( psp->firstrule==0 ){
+ psp->firstrule = psp->lastrule = rp;
+ }else{
+ psp->lastrule->next = rp;
+ psp->lastrule = rp;
+ }
+ psp->prevrule = rp;
+ }
+ psp->state = WAITING_FOR_DECL_OR_RULE;
+ }else if( isalpha(x[0]) ){
+ if( psp->nrhs>=MAXRHS ){
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Too many symbols on RHS of rule beginning at \"%s\".",
+ x);
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_RULE_ERROR;
+ }else{
+ psp->rhs[psp->nrhs] = Symbol_new(x);
+ psp->alias[psp->nrhs] = 0;
+ psp->nrhs++;
+ }
+ }else if( (x[0]=='|' || x[0]=='/') && psp->nrhs>0 ){
+ struct symbol *msp = psp->rhs[psp->nrhs-1];
+ if( msp->type!=MULTITERMINAL ){
+ struct symbol *origsp = msp;
+ msp = (struct symbol *) calloc(1,sizeof(*msp));
+ memset(msp, 0, sizeof(*msp));
+ msp->type = MULTITERMINAL;
+ msp->nsubsym = 1;
+ msp->subsym = (struct symbol **) calloc(1,sizeof(struct symbol*));
+ msp->subsym[0] = origsp;
+ msp->name = origsp->name;
+ psp->rhs[psp->nrhs-1] = msp;
+ }
+ msp->nsubsym++;
+ msp->subsym = (struct symbol **) realloc(msp->subsym,
+ sizeof(struct symbol*)*msp->nsubsym);
+ msp->subsym[msp->nsubsym-1] = Symbol_new(&x[1]);
+ if( islower(x[1]) || islower(msp->subsym[0]->name[0]) ){
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Cannot form a compound containing a non-terminal");
+ psp->errorcnt++;
+ }
+ }else if( x[0]=='(' && psp->nrhs>0 ){
+ psp->state = RHS_ALIAS_1;
+ }else{
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Illegal character on RHS of rule: \"%s\".",x);
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_RULE_ERROR;
+ }
+ break;
+ case RHS_ALIAS_1:
+ if( isalpha(x[0]) ){
+ psp->alias[psp->nrhs-1] = x;
+ psp->state = RHS_ALIAS_2;
+ }else{
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "\"%s\" is not a valid alias for the RHS symbol \"%s\"\n",
+ x,psp->rhs[psp->nrhs-1]->name);
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_RULE_ERROR;
+ }
+ break;
+ case RHS_ALIAS_2:
+ if( x[0]==')' ){
+ psp->state = IN_RHS;
+ }else{
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Missing \")\" following LHS alias name \"%s\".",psp->lhsalias);
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_RULE_ERROR;
+ }
+ break;
+ case WAITING_FOR_DECL_KEYWORD:
+ if( isalpha(x[0]) ){
+ psp->declkeyword = x;
+ psp->declargslot = 0;
+ psp->decllinenoslot = 0;
+ psp->insertLineMacro = 1;
+ psp->state = WAITING_FOR_DECL_ARG;
+ if( strcmp(x,"name")==0 ){
+ psp->declargslot = &(psp->gp->name);
+ psp->insertLineMacro = 0;
+ }else if( strcmp(x,"include")==0 ){
+ psp->declargslot = &(psp->gp->include);
+ }else if( strcmp(x,"code")==0 ){
+ psp->declargslot = &(psp->gp->extracode);
+ }else if( strcmp(x,"token_destructor")==0 ){
+ psp->declargslot = &psp->gp->tokendest;
+ }else if( strcmp(x,"default_destructor")==0 ){
+ psp->declargslot = &psp->gp->vardest;
+ }else if( strcmp(x,"token_prefix")==0 ){
+ psp->declargslot = &psp->gp->tokenprefix;
+ psp->insertLineMacro = 0;
+ }else if( strcmp(x,"syntax_error")==0 ){
+ psp->declargslot = &(psp->gp->error);
+ }else if( strcmp(x,"parse_accept")==0 ){
+ psp->declargslot = &(psp->gp->accept);
+ }else if( strcmp(x,"parse_failure")==0 ){
+ psp->declargslot = &(psp->gp->failure);
+ }else if( strcmp(x,"stack_overflow")==0 ){
+ psp->declargslot = &(psp->gp->overflow);
+ }else if( strcmp(x,"extra_argument")==0 ){
+ psp->declargslot = &(psp->gp->arg);
+ psp->insertLineMacro = 0;
+ }else if( strcmp(x,"token_type")==0 ){
+ psp->declargslot = &(psp->gp->tokentype);
+ psp->insertLineMacro = 0;
+ }else if( strcmp(x,"default_type")==0 ){
+ psp->declargslot = &(psp->gp->vartype);
+ psp->insertLineMacro = 0;
+ }else if( strcmp(x,"stack_size")==0 ){
+ psp->declargslot = &(psp->gp->stacksize);
+ psp->insertLineMacro = 0;
+ }else if( strcmp(x,"start_symbol")==0 ){
+ psp->declargslot = &(psp->gp->start);
+ psp->insertLineMacro = 0;
+ }else if( strcmp(x,"left")==0 ){
+ psp->preccounter++;
+ psp->declassoc = LEFT;
+ psp->state = WAITING_FOR_PRECEDENCE_SYMBOL;
+ }else if( strcmp(x,"right")==0 ){
+ psp->preccounter++;
+ psp->declassoc = RIGHT;
+ psp->state = WAITING_FOR_PRECEDENCE_SYMBOL;
+ }else if( strcmp(x,"nonassoc")==0 ){
+ psp->preccounter++;
+ psp->declassoc = NONE;
+ psp->state = WAITING_FOR_PRECEDENCE_SYMBOL;
+ }else if( strcmp(x,"destructor")==0 ){
+ psp->state = WAITING_FOR_DESTRUCTOR_SYMBOL;
+ }else if( strcmp(x,"type")==0 ){
+ psp->state = WAITING_FOR_DATATYPE_SYMBOL;
+ }else if( strcmp(x,"fallback")==0 ){
+ psp->fallback = 0;
+ psp->state = WAITING_FOR_FALLBACK_ID;
+ }else if( strcmp(x,"wildcard")==0 ){
+ psp->state = WAITING_FOR_WILDCARD_ID;
+ }else if( strcmp(x,"token_class")==0 ){
+ psp->state = WAITING_FOR_CLASS_ID;
+ }else{
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Unknown declaration keyword: \"%%%s\".",x);
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_DECL_ERROR;
+ }
+ }else{
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Illegal declaration keyword: \"%s\".",x);
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_DECL_ERROR;
+ }
+ break;
+ case WAITING_FOR_DESTRUCTOR_SYMBOL:
+ if( !isalpha(x[0]) ){
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Symbol name missing after %%destructor keyword");
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_DECL_ERROR;
+ }else{
+ struct symbol *sp = Symbol_new(x);
+ psp->declargslot = &sp->destructor;
+ psp->decllinenoslot = &sp->destLineno;
+ psp->insertLineMacro = 1;
+ psp->state = WAITING_FOR_DECL_ARG;
+ }
+ break;
+ case WAITING_FOR_DATATYPE_SYMBOL:
+ if( !isalpha(x[0]) ){
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Symbol name missing after %%type keyword");
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_DECL_ERROR;
+ }else{
+ struct symbol *sp = Symbol_find(x);
+ if((sp) && (sp->datatype)){
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Symbol %%type \"%s\" already defined", x);
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_DECL_ERROR;
+ }else{
+ if (!sp){
+ sp = Symbol_new(x);
+ }
+ psp->declargslot = &sp->datatype;
+ psp->insertLineMacro = 0;
+ psp->state = WAITING_FOR_DECL_ARG;
+ }
+ }
+ break;
+ case WAITING_FOR_PRECEDENCE_SYMBOL:
+ if( x[0]=='.' ){
+ psp->state = WAITING_FOR_DECL_OR_RULE;
+ }else if( isupper(x[0]) ){
+ struct symbol *sp;
+ sp = Symbol_new(x);
+ if( sp->prec>=0 ){
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Symbol \"%s\" has already be given a precedence.",x);
+ psp->errorcnt++;
+ }else{
+ sp->prec = psp->preccounter;
+ sp->assoc = psp->declassoc;
+ }
+ }else{
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Can't assign a precedence to \"%s\".",x);
+ psp->errorcnt++;
+ }
+ break;
+ case WAITING_FOR_DECL_ARG:
+ if( x[0]=='{' || x[0]=='\"' || isalnum(x[0]) ){
+ const char *zOld, *zNew;
+ char *zBuf, *z;
+ int nOld, n, nLine, nNew, nBack;
+ int addLineMacro;
+ char zLine[50];
+ zNew = x;
+ if( zNew[0]=='"' || zNew[0]=='{' ) zNew++;
+ nNew = lemonStrlen(zNew);
+ if( *psp->declargslot ){
+ zOld = *psp->declargslot;
+ }else{
+ zOld = "";
+ }
+ nOld = lemonStrlen(zOld);
+ n = nOld + nNew + 20;
+ addLineMacro = !psp->gp->nolinenosflag && psp->insertLineMacro &&
+ (psp->decllinenoslot==0 || psp->decllinenoslot[0]!=0);
+ if( addLineMacro ){
+ for(z=psp->filename, nBack=0; *z; z++){
+ if( *z=='\\' ) nBack++;
+ }
+ lemon_sprintf(zLine, "#line %d ", psp->tokenlineno);
+ nLine = lemonStrlen(zLine);
+ n += nLine + lemonStrlen(psp->filename) + nBack;
+ }
+ *psp->declargslot = (char *) realloc(*psp->declargslot, n);
+ zBuf = *psp->declargslot + nOld;
+ if( addLineMacro ){
+ if( nOld && zBuf[-1]!='\n' ){
+ *(zBuf++) = '\n';
+ }
+ memcpy(zBuf, zLine, nLine);
+ zBuf += nLine;
+ *(zBuf++) = '"';
+ for(z=psp->filename; *z; z++){
+ if( *z=='\\' ){
+ *(zBuf++) = '\\';
+ }
+ *(zBuf++) = *z;
+ }
+ *(zBuf++) = '"';
+ *(zBuf++) = '\n';
+ }
+ if( psp->decllinenoslot && psp->decllinenoslot[0]==0 ){
+ psp->decllinenoslot[0] = psp->tokenlineno;
+ }
+ memcpy(zBuf, zNew, nNew);
+ zBuf += nNew;
+ *zBuf = 0;
+ psp->state = WAITING_FOR_DECL_OR_RULE;
+ }else{
+ ErrorMsg(psp->filename,psp->tokenlineno,
+ "Illegal argument to %%%s: %s",psp->declkeyword,x);
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_DECL_ERROR;
+ }
+ break;
+ case WAITING_FOR_FALLBACK_ID:
+ if( x[0]=='.' ){
+ psp->state = WAITING_FOR_DECL_OR_RULE;
+ }else if( !isupper(x[0]) ){
+ ErrorMsg(psp->filename, psp->tokenlineno,
+ "%%fallback argument \"%s\" should be a token", x);
+ psp->errorcnt++;
+ }else{
+ struct symbol *sp = Symbol_new(x);
+ if( psp->fallback==0 ){
+ psp->fallback = sp;
+ }else if( sp->fallback ){
+ ErrorMsg(psp->filename, psp->tokenlineno,
+ "More than one fallback assigned to token %s", x);
+ psp->errorcnt++;
+ }else{
+ sp->fallback = psp->fallback;
+ psp->gp->has_fallback = 1;
+ }
+ }
+ break;
+ case WAITING_FOR_WILDCARD_ID:
+ if( x[0]=='.' ){
+ psp->state = WAITING_FOR_DECL_OR_RULE;
+ }else if( !isupper(x[0]) ){
+ ErrorMsg(psp->filename, psp->tokenlineno,
+ "%%wildcard argument \"%s\" should be a token", x);
+ psp->errorcnt++;
+ }else{
+ struct symbol *sp = Symbol_new(x);
+ if( psp->gp->wildcard==0 ){
+ psp->gp->wildcard = sp;
+ }else{
+ ErrorMsg(psp->filename, psp->tokenlineno,
+ "Extra wildcard to token: %s", x);
+ psp->errorcnt++;
+ }
+ }
+ break;
+ case WAITING_FOR_CLASS_ID:
+ if( !islower(x[0]) ){
+ ErrorMsg(psp->filename, psp->tokenlineno,
+ "%%token_class must be followed by an identifier: ", x);
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_DECL_ERROR;
+ }else if( Symbol_find(x) ){
+ ErrorMsg(psp->filename, psp->tokenlineno,
+ "Symbol \"%s\" already used", x);
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_DECL_ERROR;
+ }else{
+ psp->tkclass = Symbol_new(x);
+ psp->tkclass->type = MULTITERMINAL;
+ psp->state = WAITING_FOR_CLASS_TOKEN;
+ }
+ break;
+ case WAITING_FOR_CLASS_TOKEN:
+ if( x[0]=='.' ){
+ psp->state = WAITING_FOR_DECL_OR_RULE;
+ }else if( isupper(x[0]) || ((x[0]=='|' || x[0]=='/') && isupper(x[1])) ){
+ struct symbol *msp = psp->tkclass;
+ msp->nsubsym++;
+ msp->subsym = (struct symbol **) realloc(msp->subsym,
+ sizeof(struct symbol*)*msp->nsubsym);
+ if( !isupper(x[0]) ) x++;
+ msp->subsym[msp->nsubsym-1] = Symbol_new(x);
+ }else{
+ ErrorMsg(psp->filename, psp->tokenlineno,
+ "%%token_class argument \"%s\" should be a token", x);
+ psp->errorcnt++;
+ psp->state = RESYNC_AFTER_DECL_ERROR;
+ }
+ break;
+ case RESYNC_AFTER_RULE_ERROR:
+/* if( x[0]=='.' ) psp->state = WAITING_FOR_DECL_OR_RULE;
+** break; */
+ case RESYNC_AFTER_DECL_ERROR:
+ if( x[0]=='.' ) psp->state = WAITING_FOR_DECL_OR_RULE;
+ if( x[0]=='%' ) psp->state = WAITING_FOR_DECL_KEYWORD;
+ break;
+ }
+}
+
+/* Run the preprocessor over the input file text. The global variables
+** azDefine[0] through azDefine[nDefine-1] contains the names of all defined
+** macros. This routine looks for "%ifdef" and "%ifndef" and "%endif" and
+** comments them out. Text in between is also commented out as appropriate.
+*/
+static void preprocess_input(char *z){
+ int i, j, k, n;
+ int exclude = 0;
+ int start = 0;
+ int lineno = 1;
+ int start_lineno = 1;
+ for(i=0; z[i]; i++){
+ if( z[i]=='\n' ) lineno++;
+ if( z[i]!='%' || (i>0 && z[i-1]!='\n') ) continue;
+ if( strncmp(&z[i],"%endif",6)==0 && isspace(z[i+6]) ){
+ if( exclude ){
+ exclude--;
+ if( exclude==0 ){
+ for(j=start; j<i; j++) if( z[j]!='\n' ) z[j] = ' ';
+ }
+ }
+ for(j=i; z[j] && z[j]!='\n'; j++) z[j] = ' ';
+ }else if( (strncmp(&z[i],"%ifdef",6)==0 && isspace(z[i+6]))
+ || (strncmp(&z[i],"%ifndef",7)==0 && isspace(z[i+7])) ){
+ if( exclude ){
+ exclude++;
+ }else{
+ for(j=i+7; isspace(z[j]); j++){}
+ for(n=0; z[j+n] && !isspace(z[j+n]); n++){}
+ exclude = 1;
+ for(k=0; k<nDefine; k++){
+ if( strncmp(azDefine[k],&z[j],n)==0 && lemonStrlen(azDefine[k])==n ){
+ exclude = 0;
+ break;
+ }
+ }
+ if( z[i+3]=='n' ) exclude = !exclude;
+ if( exclude ){
+ start = i;
+ start_lineno = lineno;
+ }
+ }
+ for(j=i; z[j] && z[j]!='\n'; j++) z[j] = ' ';
+ }
+ }
+ if( exclude ){
+ fprintf(stderr,"unterminated %%ifdef starting on line %d\n", start_lineno);
+ exit(1);
+ }
+}
+
+/* In spite of its name, this function is really a scanner. It read
+** in the entire input file (all at once) then tokenizes it. Each
+** token is passed to the function "parseonetoken" which builds all
+** the appropriate data structures in the global state vector "gp".
+*/
+void Parse(struct lemon *gp)
+{
+ struct pstate ps;
+ FILE *fp;
+ char *filebuf;
+ int filesize;
+ int lineno;
+ int c;
+ char *cp, *nextcp;
+ int startline = 0;
+
+ memset(&ps, '\0', sizeof(ps));
+ ps.gp = gp;
+ ps.filename = gp->filename;
+ ps.errorcnt = 0;
+ ps.state = INITIALIZE;
+
+ /* Begin by reading the input file */
+ fp = fopen(ps.filename,"rb");
+ if( fp==0 ){
+ ErrorMsg(ps.filename,0,"Can't open this file for reading.");
+ gp->errorcnt++;
+ return;
+ }
+ fseek(fp,0,2);
+ filesize = ftell(fp);
+ rewind(fp);
+ filebuf = (char *)malloc( filesize+1 );
+ if( filesize>100000000 || filebuf==0 ){
+ ErrorMsg(ps.filename,0,"Input file too large.");
+ gp->errorcnt++;
+ fclose(fp);
+ return;
+ }
+ if( fread(filebuf,1,filesize,fp)!=filesize ){
+ ErrorMsg(ps.filename,0,"Can't read in all %d bytes of this file.",
+ filesize);
+ free(filebuf);
+ gp->errorcnt++;
+ fclose(fp);
+ return;
+ }
+ fclose(fp);
+ filebuf[filesize] = 0;
+
+ /* Make an initial pass through the file to handle %ifdef and %ifndef */
+ preprocess_input(filebuf);
+
+ /* Now scan the text of the input file */
+ lineno = 1;
+ for(cp=filebuf; (c= *cp)!=0; ){
+ if( c=='\n' ) lineno++; /* Keep track of the line number */
+ if( isspace(c) ){ cp++; continue; } /* Skip all white space */
+ if( c=='/' && cp[1]=='/' ){ /* Skip C++ style comments */
+ cp+=2;
+ while( (c= *cp)!=0 && c!='\n' ) cp++;
+ continue;
+ }
+ if( c=='/' && cp[1]=='*' ){ /* Skip C style comments */
+ cp+=2;
+ while( (c= *cp)!=0 && (c!='/' || cp[-1]!='*') ){
+ if( c=='\n' ) lineno++;
+ cp++;
+ }
+ if( c ) cp++;
+ continue;
+ }
+ ps.tokenstart = cp; /* Mark the beginning of the token */
+ ps.tokenlineno = lineno; /* Linenumber on which token begins */
+ if( c=='\"' ){ /* String literals */
+ cp++;
+ while( (c= *cp)!=0 && c!='\"' ){
+ if( c=='\n' ) lineno++;
+ cp++;
+ }
+ if( c==0 ){
+ ErrorMsg(ps.filename,startline,
+"String starting on this line is not terminated before the end of the file.");
+ ps.errorcnt++;
+ nextcp = cp;
+ }else{
+ nextcp = cp+1;
+ }
+ }else if( c=='{' ){ /* A block of C code */
+ int level;
+ cp++;
+ for(level=1; (c= *cp)!=0 && (level>1 || c!='}'); cp++){
+ if( c=='\n' ) lineno++;
+ else if( c=='{' ) level++;
+ else if( c=='}' ) level--;
+ else if( c=='/' && cp[1]=='*' ){ /* Skip comments */
+ int prevc;
+ cp = &cp[2];
+ prevc = 0;
+ while( (c= *cp)!=0 && (c!='/' || prevc!='*') ){
+ if( c=='\n' ) lineno++;
+ prevc = c;
+ cp++;
+ }
+ }else if( c=='/' && cp[1]=='/' ){ /* Skip C++ style comments too */
+ cp = &cp[2];
+ while( (c= *cp)!=0 && c!='\n' ) cp++;
+ if( c ) lineno++;
+ }else if( c=='\'' || c=='\"' ){ /* String a character literals */
+ int startchar, prevc;
+ startchar = c;
+ prevc = 0;
+ for(cp++; (c= *cp)!=0 && (c!=startchar || prevc=='\\'); cp++){
+ if( c=='\n' ) lineno++;
+ if( prevc=='\\' ) prevc = 0;
+ else prevc = c;
+ }
+ }
+ }
+ if( c==0 ){
+ ErrorMsg(ps.filename,ps.tokenlineno,
+"C code starting on this line is not terminated before the end of the file.");
+ ps.errorcnt++;
+ nextcp = cp;
+ }else{
+ nextcp = cp+1;
+ }
+ }else if( isalnum(c) ){ /* Identifiers */
+ while( (c= *cp)!=0 && (isalnum(c) || c=='_') ) cp++;
+ nextcp = cp;
+ }else if( c==':' && cp[1]==':' && cp[2]=='=' ){ /* The operator "::=" */
+ cp += 3;
+ nextcp = cp;
+ }else if( (c=='/' || c=='|') && isalpha(cp[1]) ){
+ cp += 2;
+ while( (c = *cp)!=0 && (isalnum(c) || c=='_') ) cp++;
+ nextcp = cp;
+ }else{ /* All other (one character) operators */
+ cp++;
+ nextcp = cp;
+ }
+ c = *cp;
+ *cp = 0; /* Null terminate the token */
+ parseonetoken(&ps); /* Parse the token */
+ *cp = c; /* Restore the buffer */
+ cp = nextcp;
+ }
+ free(filebuf); /* Release the buffer after parsing */
+ gp->rule = ps.firstrule;
+ gp->errorcnt = ps.errorcnt;
+}
+/*************************** From the file "plink.c" *********************/
+/*
+** Routines processing configuration follow-set propagation links
+** in the LEMON parser generator.
+*/
+static struct plink *plink_freelist = 0;
+
+/* Allocate a new plink */
+struct plink *Plink_new(){
+ struct plink *newlink;
+
+ if( plink_freelist==0 ){
+ int i;
+ int amt = 100;
+ plink_freelist = (struct plink *)calloc( amt, sizeof(struct plink) );
+ if( plink_freelist==0 ){
+ fprintf(stderr,
+ "Unable to allocate memory for a new follow-set propagation link.\n");
+ exit(1);
+ }
+ for(i=0; i<amt-1; i++) plink_freelist[i].next = &plink_freelist[i+1];
+ plink_freelist[amt-1].next = 0;
+ }
+ newlink = plink_freelist;
+ plink_freelist = plink_freelist->next;
+ return newlink;
+}
+
+/* Add a plink to a plink list */
+void Plink_add(struct plink **plpp, struct config *cfp)
+{
+ struct plink *newlink;
+ newlink = Plink_new();
+ newlink->next = *plpp;
+ *plpp = newlink;
+ newlink->cfp = cfp;
+}
+
+/* Transfer every plink on the list "from" to the list "to" */
+void Plink_copy(struct plink **to, struct plink *from)
+{
+ struct plink *nextpl;
+ while( from ){
+ nextpl = from->next;
+ from->next = *to;
+ *to = from;
+ from = nextpl;
+ }
+}
+
+/* Delete every plink on the list */
+void Plink_delete(struct plink *plp)
+{
+ struct plink *nextpl;
+
+ while( plp ){
+ nextpl = plp->next;
+ plp->next = plink_freelist;
+ plink_freelist = plp;
+ plp = nextpl;
+ }
+}
+/*********************** From the file "report.c" **************************/
+/*
+** Procedures for generating reports and tables in the LEMON parser generator.
+*/
+
+/* Generate a filename with the given suffix. Space to hold the
+** name comes from malloc() and must be freed by the calling
+** function.
+*/
+PRIVATE char *file_makename(struct lemon *lemp, const char *suffix)
+{
+ char *name;
+ char *cp;
+
+ name = (char*)malloc( lemonStrlen(lemp->filename) + lemonStrlen(suffix) + 5 );
+ if( name==0 ){
+ fprintf(stderr,"Can't allocate space for a filename.\n");
+ exit(1);
+ }
+ lemon_strcpy(name,lemp->filename);
+ cp = strrchr(name,'.');
+ if( cp ) *cp = 0;
+ lemon_strcat(name,suffix);
+ return name;
+}
+
+/* Open a file with a name based on the name of the input file,
+** but with a different (specified) suffix, and return a pointer
+** to the stream */
+PRIVATE FILE *file_open(
+ struct lemon *lemp,
+ const char *suffix,
+ const char *mode
+){
+ FILE *fp;
+
+ if( lemp->outname ) free(lemp->outname);
+ lemp->outname = file_makename(lemp, suffix);
+ fp = fopen(lemp->outname,mode);
+ if( fp==0 && *mode=='w' ){
+ fprintf(stderr,"Can't open file \"%s\".\n",lemp->outname);
+ lemp->errorcnt++;
+ return 0;
+ }
+ return fp;
+}
+
+/* Duplicate the input file without comments and without actions
+** on rules */
+void Reprint(struct lemon *lemp)
+{
+ struct rule *rp;
+ struct symbol *sp;
+ int i, j, maxlen, len, ncolumns, skip;
+ printf("// Reprint of input file \"%s\".\n// Symbols:\n",lemp->filename);
+ maxlen = 10;
+ for(i=0; i<lemp->nsymbol; i++){
+ sp = lemp->symbols[i];
+ len = lemonStrlen(sp->name);
+ if( len>maxlen ) maxlen = len;
+ }
+ ncolumns = 76/(maxlen+5);
+ if( ncolumns<1 ) ncolumns = 1;
+ skip = (lemp->nsymbol + ncolumns - 1)/ncolumns;
+ for(i=0; i<skip; i++){
+ printf("//");
+ for(j=i; j<lemp->nsymbol; j+=skip){
+ sp = lemp->symbols[j];
+ assert( sp->index==j );
+ printf(" %3d %-*.*s",j,maxlen,maxlen,sp->name);
+ }
+ printf("\n");
+ }
+ for(rp=lemp->rule; rp; rp=rp->next){
+ printf("%s",rp->lhs->name);
+ /* if( rp->lhsalias ) printf("(%s)",rp->lhsalias); */
+ printf(" ::=");
+ for(i=0; i<rp->nrhs; i++){
+ sp = rp->rhs[i];
+ if( sp->type==MULTITERMINAL ){
+ printf(" %s", sp->subsym[0]->name);
+ for(j=1; j<sp->nsubsym; j++){
+ printf("|%s", sp->subsym[j]->name);
+ }
+ }else{
+ printf(" %s", sp->name);
+ }
+ /* if( rp->rhsalias[i] ) printf("(%s)",rp->rhsalias[i]); */
+ }
+ printf(".");
+ if( rp->precsym ) printf(" [%s]",rp->precsym->name);
+ /* if( rp->code ) printf("\n %s",rp->code); */
+ printf("\n");
+ }
+}
+
+void ConfigPrint(FILE *fp, struct config *cfp)
+{
+ struct rule *rp;
+ struct symbol *sp;
+ int i, j;
+ rp = cfp->rp;
+ fprintf(fp,"%s ::=",rp->lhs->name);
+ for(i=0; i<=rp->nrhs; i++){
+ if( i==cfp->dot ) fprintf(fp," *");
+ if( i==rp->nrhs ) break;
+ sp = rp->rhs[i];
+ if( sp->type==MULTITERMINAL ){
+ fprintf(fp," %s", sp->subsym[0]->name);
+ for(j=1; j<sp->nsubsym; j++){
+ fprintf(fp,"|%s",sp->subsym[j]->name);
+ }
+ }else{
+ fprintf(fp," %s", sp->name);
+ }
+ }
+}
+
+/* #define TEST */
+#if 0
+/* Print a set */
+PRIVATE void SetPrint(out,set,lemp)
+FILE *out;
+char *set;
+struct lemon *lemp;
+{
+ int i;
+ char *spacer;
+ spacer = "";
+ fprintf(out,"%12s[","");
+ for(i=0; i<lemp->nterminal; i++){
+ if( SetFind(set,i) ){
+ fprintf(out,"%s%s",spacer,lemp->symbols[i]->name);
+ spacer = " ";
+ }
+ }
+ fprintf(out,"]\n");
+}
+
+/* Print a plink chain */
+PRIVATE void PlinkPrint(out,plp,tag)
+FILE *out;
+struct plink *plp;
+char *tag;
+{
+ while( plp ){
+ fprintf(out,"%12s%s (state %2d) ","",tag,plp->cfp->stp->statenum);
+ ConfigPrint(out,plp->cfp);
+ fprintf(out,"\n");
+ plp = plp->next;
+ }
+}
+#endif
+
+/* Print an action to the given file descriptor. Return FALSE if
+** nothing was actually printed.
+*/
+int PrintAction(struct action *ap, FILE *fp, int indent){
+ int result = 1;
+ switch( ap->type ){
+ case SHIFT:
+ fprintf(fp,"%*s shift %d",indent,ap->sp->name,ap->x.stp->statenum);
+ break;
+ case REDUCE:
+ fprintf(fp,"%*s reduce %d",indent,ap->sp->name,ap->x.rp->index);
+ break;
+ case ACCEPT:
+ fprintf(fp,"%*s accept",indent,ap->sp->name);
+ break;
+ case ERROR:
+ fprintf(fp,"%*s error",indent,ap->sp->name);
+ break;
+ case SRCONFLICT:
+ case RRCONFLICT:
+ fprintf(fp,"%*s reduce %-3d ** Parsing conflict **",
+ indent,ap->sp->name,ap->x.rp->index);
+ break;
+ case SSCONFLICT:
+ fprintf(fp,"%*s shift %-3d ** Parsing conflict **",
+ indent,ap->sp->name,ap->x.stp->statenum);
+ break;
+ case SH_RESOLVED:
+ if( showPrecedenceConflict ){
+ fprintf(fp,"%*s shift %-3d -- dropped by precedence",
+ indent,ap->sp->name,ap->x.stp->statenum);
+ }else{
+ result = 0;
+ }
+ break;
+ case RD_RESOLVED:
+ if( showPrecedenceConflict ){
+ fprintf(fp,"%*s reduce %-3d -- dropped by precedence",
+ indent,ap->sp->name,ap->x.rp->index);
+ }else{
+ result = 0;
+ }
+ break;
+ case NOT_USED:
+ result = 0;
+ break;
+ }
+ return result;
+}
+
+/* Generate the "y.output" log file */
+void ReportOutput(struct lemon *lemp)
+{
+ int i;
+ struct state *stp;
+ struct config *cfp;
+ struct action *ap;
+ FILE *fp;
+
+ fp = file_open(lemp,".out","wb");
+ if( fp==0 ) return;
+ for(i=0; i<lemp->nstate; i++){
+ stp = lemp->sorted[i];
+ fprintf(fp,"State %d:\n",stp->statenum);
+ if( lemp->basisflag ) cfp=stp->bp;
+ else cfp=stp->cfp;
+ while( cfp ){
+ char buf[20];
+ if( cfp->dot==cfp->rp->nrhs ){
+ lemon_sprintf(buf,"(%d)",cfp->rp->index);
+ fprintf(fp," %5s ",buf);
+ }else{
+ fprintf(fp," ");
+ }
+ ConfigPrint(fp,cfp);
+ fprintf(fp,"\n");
+#if 0
+ SetPrint(fp,cfp->fws,lemp);
+ PlinkPrint(fp,cfp->fplp,"To ");
+ PlinkPrint(fp,cfp->bplp,"From");
+#endif
+ if( lemp->basisflag ) cfp=cfp->bp;
+ else cfp=cfp->next;
+ }
+ fprintf(fp,"\n");
+ for(ap=stp->ap; ap; ap=ap->next){
+ if( PrintAction(ap,fp,30) ) fprintf(fp,"\n");
+ }
+ fprintf(fp,"\n");
+ }
+ fprintf(fp, "----------------------------------------------------\n");
+ fprintf(fp, "Symbols:\n");
+ for(i=0; i<lemp->nsymbol; i++){
+ int j;
+ struct symbol *sp;
+
+ sp = lemp->symbols[i];
+ fprintf(fp, " %3d: %s", i, sp->name);
+ if( sp->type==NONTERMINAL ){
+ fprintf(fp, ":");
+ if( sp->lambda ){
+ fprintf(fp, " <lambda>");
+ }
+ for(j=0; j<lemp->nterminal; j++){
+ if( sp->firstset && SetFind(sp->firstset, j) ){
+ fprintf(fp, " %s", lemp->symbols[j]->name);
+ }
+ }
+ }
+ fprintf(fp, "\n");
+ }
+ fclose(fp);
+ return;
+}
+
+/* Search for the file "name" which is in the same directory as
+** the exacutable */
+PRIVATE char *pathsearch(char *argv0, char *name, int modemask)
+{
+ const char *pathlist;
+ char *pathbufptr;
+ char *pathbuf;
+ char *path,*cp;
+ char c;
+
+#ifdef __WIN32__
+ cp = strrchr(argv0,'\\');
+#else
+ cp = strrchr(argv0,'/');
+#endif
+ if( cp ){
+ c = *cp;
+ *cp = 0;
+ path = (char *)malloc( lemonStrlen(argv0) + lemonStrlen(name) + 2 );
+ if( path ) lemon_sprintf(path,"%s/%s",argv0,name);
+ *cp = c;
+ }else{
+ pathlist = getenv("PATH");
+ if( pathlist==0 ) pathlist = ".:/bin:/usr/bin";
+ pathbuf = (char *) malloc( lemonStrlen(pathlist) + 1 );
+ path = (char *)malloc( lemonStrlen(pathlist)+lemonStrlen(name)+2 );
+ if( (pathbuf != 0) && (path!=0) ){
+ pathbufptr = pathbuf;
+ lemon_strcpy(pathbuf, pathlist);
+ while( *pathbuf ){
+ cp = strchr(pathbuf,':');
+ if( cp==0 ) cp = &pathbuf[lemonStrlen(pathbuf)];
+ c = *cp;
+ *cp = 0;
+ lemon_sprintf(path,"%s/%s",pathbuf,name);
+ *cp = c;
+ if( c==0 ) pathbuf[0] = 0;
+ else pathbuf = &cp[1];
+ if( access(path,modemask)==0 ) break;
+ }
+ free(pathbufptr);
+ }
+ }
+ return path;
+}
+
+/* Given an action, compute the integer value for that action
+** which is to be put in the action table of the generated machine.
+** Return negative if no action should be generated.
+*/
+PRIVATE int compute_action(struct lemon *lemp, struct action *ap)
+{
+ int act;
+ switch( ap->type ){
+ case SHIFT: act = ap->x.stp->statenum; break;
+ case REDUCE: act = ap->x.rp->index + lemp->nstate; break;
+ case ERROR: act = lemp->nstate + lemp->nrule; break;
+ case ACCEPT: act = lemp->nstate + lemp->nrule + 1; break;
+ default: act = -1; break;
+ }
+ return act;
+}
+
+#define LINESIZE 1000
+/* The next cluster of routines are for reading the template file
+** and writing the results to the generated parser */
+/* The first function transfers data from "in" to "out" until
+** a line is seen which begins with "%%". The line number is
+** tracked.
+**
+** if name!=0, then any word that begin with "Parse" is changed to
+** begin with *name instead.
+*/
+PRIVATE void tplt_xfer(char *name, FILE *in, FILE *out, int *lineno)
+{
+ int i, iStart;
+ char line[LINESIZE];
+ while( fgets(line,LINESIZE,in) && (line[0]!='%' || line[1]!='%') ){
+ (*lineno)++;
+ iStart = 0;
+ if( name ){
+ for(i=0; line[i]; i++){
+ if( line[i]=='P' && strncmp(&line[i],"Parse",5)==0
+ && (i==0 || !isalpha(line[i-1]))
+ ){
+ if( i>iStart ) fprintf(out,"%.*s",i-iStart,&line[iStart]);
+ fprintf(out,"%s",name);
+ i += 4;
+ iStart = i+1;
+ }
+ }
+ }
+ fprintf(out,"%s",&line[iStart]);
+ }
+}
+
+/* The next function finds the template file and opens it, returning
+** a pointer to the opened file. */
+PRIVATE FILE *tplt_open(struct lemon *lemp)
+{
+ static char templatename[] = "lempar.c";
+ char buf[1000];
+ FILE *in;
+ char *tpltname;
+ char *cp;
+
+ /* first, see if user specified a template filename on the command line. */
+ if (user_templatename != 0) {
+ if( access(user_templatename,004)==-1 ){
+ fprintf(stderr,"Can't find the parser driver template file \"%s\".\n",
+ user_templatename);
+ lemp->errorcnt++;
+ return 0;
+ }
+ in = fopen(user_templatename,"rb");
+ if( in==0 ){
+ fprintf(stderr,"Can't open the template file \"%s\".\n",user_templatename);
+ lemp->errorcnt++;
+ return 0;
+ }
+ return in;
+ }
+
+ cp = strrchr(lemp->filename,'.');
+ if( cp ){
+ lemon_sprintf(buf,"%.*s.lt",(int)(cp-lemp->filename),lemp->filename);
+ }else{
+ lemon_sprintf(buf,"%s.lt",lemp->filename);
+ }
+ if( access(buf,004)==0 ){
+ tpltname = buf;
+ }else if( access(templatename,004)==0 ){
+ tpltname = templatename;
+ }else{
+ tpltname = pathsearch(lemp->argv0,templatename,0);
+ }
+ if( tpltname==0 ){
+ fprintf(stderr,"Can't find the parser driver template file \"%s\".\n",
+ templatename);
+ lemp->errorcnt++;
+ return 0;
+ }
+ in = fopen(tpltname,"rb");
+ if( in==0 ){
+ fprintf(stderr,"Can't open the template file \"%s\".\n",templatename);
+ lemp->errorcnt++;
+ return 0;
+ }
+ return in;
+}
+
+/* Print a #line directive line to the output file. */
+PRIVATE void tplt_linedir(FILE *out, int lineno, char *filename)
+{
+ fprintf(out,"#line %d \"",lineno);
+ while( *filename ){
+ if( *filename == '\\' ) putc('\\',out);
+ putc(*filename,out);
+ filename++;
+ }
+ fprintf(out,"\"\n");
+}
+
+/* Print a string to the file and keep the linenumber up to date */
+PRIVATE void tplt_print(FILE *out, struct lemon *lemp, char *str, int *lineno)
+{
+ if( str==0 ) return;
+ while( *str ){
+ putc(*str,out);
+ if( *str=='\n' ) (*lineno)++;
+ str++;
+ }
+ if( str[-1]!='\n' ){
+ putc('\n',out);
+ (*lineno)++;
+ }
+ if (!lemp->nolinenosflag) {
+ (*lineno)++; tplt_linedir(out,*lineno,lemp->outname);
+ }
+ return;
+}
+
+/*
+** The following routine emits code for the destructor for the
+** symbol sp
+*/
+void emit_destructor_code(
+ FILE *out,
+ struct symbol *sp,
+ struct lemon *lemp,
+ int *lineno
+){
+ char *cp = 0;
+
+ if( sp->type==TERMINAL ){
+ cp = lemp->tokendest;
+ if( cp==0 ) return;
+ fprintf(out,"{\n"); (*lineno)++;
+ }else if( sp->destructor ){
+ cp = sp->destructor;
+ fprintf(out,"{\n"); (*lineno)++;
+ if (!lemp->nolinenosflag) { (*lineno)++; tplt_linedir(out,sp->destLineno,lemp->filename); }
+ }else if( lemp->vardest ){
+ cp = lemp->vardest;
+ if( cp==0 ) return;
+ fprintf(out,"{\n"); (*lineno)++;
+ }else{
+ assert( 0 ); /* Cannot happen */
+ }
+ for(; *cp; cp++){
+ if( *cp=='$' && cp[1]=='$' ){
+ fprintf(out,"(yypminor->yy%d)",sp->dtnum);
+ cp++;
+ continue;
+ }
+ if( *cp=='\n' ) (*lineno)++;
+ fputc(*cp,out);
+ }
+ fprintf(out,"\n"); (*lineno)++;
+ if (!lemp->nolinenosflag) {
+ (*lineno)++; tplt_linedir(out,*lineno,lemp->outname);
+ }
+ fprintf(out,"}\n"); (*lineno)++;
+ return;
+}
+
+/*
+** Return TRUE (non-zero) if the given symbol has a destructor.
+*/
+int has_destructor(struct symbol *sp, struct lemon *lemp)
+{
+ int ret;
+ if( sp->type==TERMINAL ){
+ ret = lemp->tokendest!=0;
+ }else{
+ ret = lemp->vardest!=0 || sp->destructor!=0;
+ }
+ return ret;
+}
+
+/*
+** Append text to a dynamically allocated string. If zText is 0 then
+** reset the string to be empty again. Always return the complete text
+** of the string (which is overwritten with each call).
+**
+** n bytes of zText are stored. If n==0 then all of zText up to the first
+** \000 terminator is stored. zText can contain up to two instances of
+** %d. The values of p1 and p2 are written into the first and second
+** %d.
+**
+** If n==-1, then the previous character is overwritten.
+*/
+PRIVATE char *append_str(const char *zText, int n, int p1, int p2){
+ static char empty[1] = { 0 };
+ static char *z = 0;
+ static int alloced = 0;
+ static int used = 0;
+ int c;
+ char zInt[40];
+ if( zText==0 ){
+ used = 0;
+ return z;
+ }
+ if( n<=0 ){
+ if( n<0 ){
+ used += n;
+ assert( used>=0 );
+ }
+ n = lemonStrlen(zText);
+ }
+ if( (int) (n+sizeof(zInt)*2+used) >= alloced ){
+ alloced = n + sizeof(zInt)*2 + used + 200;
+ z = (char *) realloc(z, alloced);
+ }
+ if( z==0 ) return empty;
+ while( n-- > 0 ){
+ c = *(zText++);
+ if( c=='%' && n>0 && zText[0]=='d' ){
+ lemon_sprintf(zInt, "%d", p1);
+ p1 = p2;
+ lemon_strcpy(&z[used], zInt);
+ used += lemonStrlen(&z[used]);
+ zText++;
+ n--;
+ }else{
+ z[used++] = c;
+ }
+ }
+ z[used] = 0;
+ return z;
+}
+
+/*
+** zCode is a string that is the action associated with a rule. Expand
+** the symbols in this string so that the refer to elements of the parser
+** stack.
+*/
+PRIVATE void translate_code(struct lemon *lemp, struct rule *rp){
+ char *cp, *xp;
+ int i;
+ char lhsused = 0; /* True if the LHS element has been used */
+ char used[MAXRHS]; /* True for each RHS element which is used */
+
+ for(i=0; i<rp->nrhs; i++) used[i] = 0;
+ lhsused = 0;
+
+ if( rp->code==0 ){
+ static char newlinestr[2] = { '\n', '\0' };
+ rp->code = newlinestr;
+ rp->line = rp->ruleline;
+ }
+
+ append_str(0,0,0,0);
+
+ /* This const cast is wrong but harmless, if we're careful. */
+ for(cp=(char *)rp->code; *cp; cp++){
+ if( isalpha(*cp) && (cp==rp->code || (!isalnum(cp[-1]) && cp[-1]!='_')) ){
+ char saved;
+ for(xp= &cp[1]; isalnum(*xp) || *xp=='_'; xp++);
+ saved = *xp;
+ *xp = 0;
+ if( rp->lhsalias && strcmp(cp,rp->lhsalias)==0 ){
+ append_str("yygotominor.yy%d",0,rp->lhs->dtnum,0);
+ cp = xp;
+ lhsused = 1;
+ }else{
+ for(i=0; i<rp->nrhs; i++){
+ if( rp->rhsalias[i] && strcmp(cp,rp->rhsalias[i])==0 ){
+ if( cp!=rp->code && cp[-1]=='@' ){
+ /* If the argument is of the form @X then substituted
+ ** the token number of X, not the value of X */
+ append_str("yymsp[%d].major",-1,i-rp->nrhs+1,0);
+ }else{
+ struct symbol *sp = rp->rhs[i];
+ int dtnum;
+ if( sp->type==MULTITERMINAL ){
+ dtnum = sp->subsym[0]->dtnum;
+ }else{
+ dtnum = sp->dtnum;
+ }
+ append_str("yymsp[%d].minor.yy%d",0,i-rp->nrhs+1, dtnum);
+ }
+ cp = xp;
+ used[i] = 1;
+ break;
+ }
+ }
+ }
+ *xp = saved;
+ }
+ append_str(cp, 1, 0, 0);
+ } /* End loop */
+
+ /* Check to make sure the LHS has been used */
+ if( rp->lhsalias && !lhsused ){
+ ErrorMsg(lemp->filename,rp->ruleline,
+ "Label \"%s\" for \"%s(%s)\" is never used.",
+ rp->lhsalias,rp->lhs->name,rp->lhsalias);
+ lemp->errorcnt++;
+ }
+
+ /* Generate destructor code for RHS symbols which are not used in the
+ ** reduce code */
+ for(i=0; i<rp->nrhs; i++){
+ if( rp->rhsalias[i] && !used[i] ){
+ ErrorMsg(lemp->filename,rp->ruleline,
+ "Label %s for \"%s(%s)\" is never used.",
+ rp->rhsalias[i],rp->rhs[i]->name,rp->rhsalias[i]);
+ lemp->errorcnt++;
+ }else if( rp->rhsalias[i]==0 ){
+ if( has_destructor(rp->rhs[i],lemp) ){
+ append_str(" yy_destructor(yypParser,%d,&yymsp[%d].minor);\n", 0,
+ rp->rhs[i]->index,i-rp->nrhs+1);
+ }else{
+ /* No destructor defined for this term */
+ }
+ }
+ }
+ if( rp->code ){
+ cp = append_str(0,0,0,0);
+ rp->code = Strsafe(cp?cp:"");
+ }
+}
+
+/*
+** Generate code which executes when the rule "rp" is reduced. Write
+** the code to "out". Make sure lineno stays up-to-date.
+*/
+PRIVATE void emit_code(
+ FILE *out,
+ struct rule *rp,
+ struct lemon *lemp,
+ int *lineno
+){
+ const char *cp;
+
+ /* Generate code to do the reduce action */
+ if( rp->code ){
+ if (!lemp->nolinenosflag) { (*lineno)++; tplt_linedir(out,rp->line,lemp->filename); }
+ fprintf(out,"{%s",rp->code);
+ for(cp=rp->code; *cp; cp++){
+ if( *cp=='\n' ) (*lineno)++;
+ } /* End loop */
+ fprintf(out,"}\n"); (*lineno)++;
+ if (!lemp->nolinenosflag) { (*lineno)++; tplt_linedir(out,*lineno,lemp->outname); }
+ } /* End if( rp->code ) */
+
+ return;
+}
+
+/*
+** Print the definition of the union used for the parser's data stack.
+** This union contains fields for every possible data type for tokens
+** and nonterminals. In the process of computing and printing this
+** union, also set the ".dtnum" field of every terminal and nonterminal
+** symbol.
+*/
+void print_stack_union(
+ FILE *out, /* The output stream */
+ struct lemon *lemp, /* The main info structure for this parser */
+ int *plineno, /* Pointer to the line number */
+ int mhflag /* True if generating makeheaders output */
+){
+ int lineno = *plineno; /* The line number of the output */
+ char **types; /* A hash table of datatypes */
+ int arraysize; /* Size of the "types" array */
+ int maxdtlength; /* Maximum length of any ".datatype" field. */
+ char *stddt; /* Standardized name for a datatype */
+ int i,j; /* Loop counters */
+ unsigned hash; /* For hashing the name of a type */
+ const char *name; /* Name of the parser */
+
+ /* Allocate and initialize types[] and allocate stddt[] */
+ arraysize = lemp->nsymbol * 2;
+ types = (char**)calloc( arraysize, sizeof(char*) );
+ if( types==0 ){
+ fprintf(stderr,"Out of memory.\n");
+ exit(1);
+ }
+ for(i=0; i<arraysize; i++) types[i] = 0;
+ maxdtlength = 0;
+ if( lemp->vartype ){
+ maxdtlength = lemonStrlen(lemp->vartype);
+ }
+ for(i=0; i<lemp->nsymbol; i++){
+ int len;
+ struct symbol *sp = lemp->symbols[i];
+ if( sp->datatype==0 ) continue;
+ len = lemonStrlen(sp->datatype);
+ if( len>maxdtlength ) maxdtlength = len;
+ }
+ stddt = (char*)malloc( maxdtlength*2 + 1 );
+ if( stddt==0 ){
+ fprintf(stderr,"Out of memory.\n");
+ exit(1);
+ }
+
+ /* Build a hash table of datatypes. The ".dtnum" field of each symbol
+ ** is filled in with the hash index plus 1. A ".dtnum" value of 0 is
+ ** used for terminal symbols. If there is no %default_type defined then
+ ** 0 is also used as the .dtnum value for nonterminals which do not specify
+ ** a datatype using the %type directive.
+ */
+ for(i=0; i<lemp->nsymbol; i++){
+ struct symbol *sp = lemp->symbols[i];
+ char *cp;
+ if( sp==lemp->errsym ){
+ sp->dtnum = arraysize+1;
+ continue;
+ }
+ if( sp->type!=NONTERMINAL || (sp->datatype==0 && lemp->vartype==0) ){
+ sp->dtnum = 0;
+ continue;
+ }
+ cp = sp->datatype;
+ if( cp==0 ) cp = lemp->vartype;
+ j = 0;
+ while( isspace(*cp) ) cp++;
+ while( *cp ) stddt[j++] = *cp++;
+ while( j>0 && isspace(stddt[j-1]) ) j--;
+ stddt[j] = 0;
+ if( lemp->tokentype && strcmp(stddt, lemp->tokentype)==0 ){
+ sp->dtnum = 0;
+ continue;
+ }
+ hash = 0;
+ for(j=0; stddt[j]; j++){
+ hash = hash*53 + stddt[j];
+ }
+ hash = (hash & 0x7fffffff)%arraysize;
+ while( types[hash] ){
+ if( strcmp(types[hash],stddt)==0 ){
+ sp->dtnum = hash + 1;
+ break;
+ }
+ hash++;
+ if( hash>=(unsigned)arraysize ) hash = 0;
+ }
+ if( types[hash]==0 ){
+ sp->dtnum = hash + 1;
+ types[hash] = (char*)malloc( lemonStrlen(stddt)+1 );
+ if( types[hash]==0 ){
+ fprintf(stderr,"Out of memory.\n");
+ exit(1);
+ }
+ lemon_strcpy(types[hash],stddt);
+ }
+ }
+
+ /* Print out the definition of YYTOKENTYPE and YYMINORTYPE */
+ name = lemp->name ? lemp->name : "Parse";
+ lineno = *plineno;
+ if( mhflag ){ fprintf(out,"#if INTERFACE\n"); lineno++; }
+ fprintf(out,"#define %sTOKENTYPE %s\n",name,
+ lemp->tokentype?lemp->tokentype:"void*"); lineno++;
+ if( mhflag ){ fprintf(out,"#endif\n"); lineno++; }
+ fprintf(out,"typedef union {\n"); lineno++;
+ fprintf(out," int yyinit;\n"); lineno++;
+ fprintf(out," %sTOKENTYPE yy0;\n",name); lineno++;
+ for(i=0; i<arraysize; i++){
+ if( types[i]==0 ) continue;
+ fprintf(out," %s yy%d;\n",types[i],i+1); lineno++;
+ free(types[i]);
+ }
+ if( lemp->errsym->useCnt ){
+ fprintf(out," int yy%d;\n",lemp->errsym->dtnum); lineno++;
+ }
+ free(stddt);
+ free(types);
+ fprintf(out,"} YYMINORTYPE;\n"); lineno++;
+ *plineno = lineno;
+}
+
+/*
+** Return the name of a C datatype able to represent values between
+** lwr and upr, inclusive.
+*/
+static const char *minimum_size_type(int lwr, int upr){
+ if( lwr>=0 ){
+ if( upr<=255 ){
+ return "unsigned char";
+ }else if( upr<65535 ){
+ return "unsigned short int";
+ }else{
+ return "unsigned int";
+ }
+ }else if( lwr>=-127 && upr<=127 ){
+ return "signed char";
+ }else if( lwr>=-32767 && upr<32767 ){
+ return "short";
+ }else{
+ return "int";
+ }
+}
+
+/*
+** Each state contains a set of token transaction and a set of
+** nonterminal transactions. Each of these sets makes an instance
+** of the following structure. An array of these structures is used
+** to order the creation of entries in the yy_action[] table.
+*/
+struct axset {
+ struct state *stp; /* A pointer to a state */
+ int isTkn; /* True to use tokens. False for non-terminals */
+ int nAction; /* Number of actions */
+ int iOrder; /* Original order of action sets */
+};
+
+/*
+** Compare to axset structures for sorting purposes
+*/
+static int axset_compare(const void *a, const void *b){
+ struct axset *p1 = (struct axset*)a;
+ struct axset *p2 = (struct axset*)b;
+ int c;
+ c = p2->nAction - p1->nAction;
+ if( c==0 ){
+ c = p2->iOrder - p1->iOrder;
+ }
+ assert( c!=0 || p1==p2 );
+ return c;
+}
+
+/*
+** Write text on "out" that describes the rule "rp".
+*/
+static void writeRuleText(FILE *out, struct rule *rp){
+ int j;
+ fprintf(out,"%s ::=", rp->lhs->name);
+ for(j=0; j<rp->nrhs; j++){
+ struct symbol *sp = rp->rhs[j];
+ if( sp->type!=MULTITERMINAL ){
+ fprintf(out," %s", sp->name);
+ }else{
+ int k;
+ fprintf(out," %s", sp->subsym[0]->name);
+ for(k=1; k<sp->nsubsym; k++){
+ fprintf(out,"|%s",sp->subsym[k]->name);
+ }
+ }
+ }
+}
+
+
+/* Generate C source code for the parser */
+void ReportTable(
+ struct lemon *lemp,
+ int mhflag /* Output in makeheaders format if true */
+){
+ FILE *out, *in;
+ char line[LINESIZE];
+ int lineno;
+ struct state *stp;
+ struct action *ap;
+ struct rule *rp;
+ struct acttab *pActtab;
+ int i, j, n;
+ const char *name;
+ int mnTknOfst, mxTknOfst;
+ int mnNtOfst, mxNtOfst;
+ struct axset *ax;
+
+ in = tplt_open(lemp);
+ if( in==0 ) return;
+ out = file_open(lemp,".c","wb");
+ if( out==0 ){
+ fclose(in);
+ return;
+ }
+ lineno = 1;
+ tplt_xfer(lemp->name,in,out,&lineno);
+
+ /* Generate the include code, if any */
+ tplt_print(out,lemp,lemp->include,&lineno);
+ if( mhflag ){
+ char *name = file_makename(lemp, ".h");
+ fprintf(out,"#include \"%s\"\n", name); lineno++;
+ free(name);
+ }
+ tplt_xfer(lemp->name,in,out,&lineno);
+
+ /* Generate #defines for all tokens */
+ if( mhflag ){
+ const char *prefix;
+ fprintf(out,"#if INTERFACE\n"); lineno++;
+ if( lemp->tokenprefix ) prefix = lemp->tokenprefix;
+ else prefix = "";
+ for(i=1; i<lemp->nterminal; i++){
+ fprintf(out,"#define %s%-30s %2d\n",prefix,lemp->symbols[i]->name,i);
+ lineno++;
+ }
+ fprintf(out,"#endif\n"); lineno++;
+ }
+ tplt_xfer(lemp->name,in,out,&lineno);
+
+ /* Generate the defines */
+ fprintf(out,"#define YYCODETYPE %s\n",
+ minimum_size_type(0, lemp->nsymbol+1)); lineno++;
+ fprintf(out,"#define YYNOCODE %d\n",lemp->nsymbol+1); lineno++;
+ fprintf(out,"#define YYACTIONTYPE %s\n",
+ minimum_size_type(0, lemp->nstate+lemp->nrule+5)); lineno++;
+ if( lemp->wildcard ){
+ fprintf(out,"#define YYWILDCARD %d\n",
+ lemp->wildcard->index); lineno++;
+ }
+ print_stack_union(out,lemp,&lineno,mhflag);
+ fprintf(out, "#ifndef YYSTACKDEPTH\n"); lineno++;
+ if( lemp->stacksize ){
+ fprintf(out,"#define YYSTACKDEPTH %s\n",lemp->stacksize); lineno++;
+ }else{
+ fprintf(out,"#define YYSTACKDEPTH 100\n"); lineno++;
+ }
+ fprintf(out, "#endif\n"); lineno++;
+ if( mhflag ){
+ fprintf(out,"#if INTERFACE\n"); lineno++;
+ }
+ name = lemp->name ? lemp->name : "Parse";
+ if( lemp->arg && lemp->arg[0] ){
+ int i;
+ i = lemonStrlen(lemp->arg);
+ while( i>=1 && isspace(lemp->arg[i-1]) ) i--;
+ while( i>=1 && (isalnum(lemp->arg[i-1]) || lemp->arg[i-1]=='_') ) i--;
+ fprintf(out,"#define %sARG_SDECL %s;\n",name,lemp->arg); lineno++;
+ fprintf(out,"#define %sARG_PDECL ,%s\n",name,lemp->arg); lineno++;
+ fprintf(out,"#define %sARG_FETCH %s = yypParser->%s\n",
+ name,lemp->arg,&lemp->arg[i]); lineno++;
+ fprintf(out,"#define %sARG_STORE yypParser->%s = %s\n",
+ name,&lemp->arg[i],&lemp->arg[i]); lineno++;
+ }else{
+ fprintf(out,"#define %sARG_SDECL\n",name); lineno++;
+ fprintf(out,"#define %sARG_PDECL\n",name); lineno++;
+ fprintf(out,"#define %sARG_FETCH\n",name); lineno++;
+ fprintf(out,"#define %sARG_STORE\n",name); lineno++;
+ }
+ if( mhflag ){
+ fprintf(out,"#endif\n"); lineno++;
+ }
+ fprintf(out,"#define YYNSTATE %d\n",lemp->nstate); lineno++;
+ fprintf(out,"#define YYNRULE %d\n",lemp->nrule); lineno++;
+ if( lemp->errsym->useCnt ){
+ fprintf(out,"#define YYERRORSYMBOL %d\n",lemp->errsym->index); lineno++;
+ fprintf(out,"#define YYERRSYMDT yy%d\n",lemp->errsym->dtnum); lineno++;
+ }
+ if( lemp->has_fallback ){
+ fprintf(out,"#define YYFALLBACK 1\n"); lineno++;
+ }
+ tplt_xfer(lemp->name,in,out,&lineno);
+
+ /* Generate the action table and its associates:
+ **
+ ** yy_action[] A single table containing all actions.
+ ** yy_lookahead[] A table containing the lookahead for each entry in
+ ** yy_action. Used to detect hash collisions.
+ ** yy_shift_ofst[] For each state, the offset into yy_action for
+ ** shifting terminals.
+ ** yy_reduce_ofst[] For each state, the offset into yy_action for
+ ** shifting non-terminals after a reduce.
+ ** yy_default[] Default action for each state.
+ */
+
+ /* Compute the actions on all states and count them up */
+ ax = (struct axset *) calloc(lemp->nstate*2, sizeof(ax[0]));
+ if( ax==0 ){
+ fprintf(stderr,"malloc failed\n");
+ exit(1);
+ }
+ for(i=0; i<lemp->nstate; i++){
+ stp = lemp->sorted[i];
+ ax[i*2].stp = stp;
+ ax[i*2].isTkn = 1;
+ ax[i*2].nAction = stp->nTknAct;
+ ax[i*2+1].stp = stp;
+ ax[i*2+1].isTkn = 0;
+ ax[i*2+1].nAction = stp->nNtAct;
+ }
+ mxTknOfst = mnTknOfst = 0;
+ mxNtOfst = mnNtOfst = 0;
+
+ /* Compute the action table. In order to try to keep the size of the
+ ** action table to a minimum, the heuristic of placing the largest action
+ ** sets first is used.
+ */
+ for(i=0; i<lemp->nstate*2; i++) ax[i].iOrder = i;
+ qsort(ax, lemp->nstate*2, sizeof(ax[0]), axset_compare);
+ pActtab = acttab_alloc();
+ for(i=0; i<lemp->nstate*2 && ax[i].nAction>0; i++){
+ stp = ax[i].stp;
+ if( ax[i].isTkn ){
+ for(ap=stp->ap; ap; ap=ap->next){
+ int action;
+ if( ap->sp->index>=lemp->nterminal ) continue;
+ action = compute_action(lemp, ap);
+ if( action<0 ) continue;
+ acttab_action(pActtab, ap->sp->index, action);
+ }
+ stp->iTknOfst = acttab_insert(pActtab);
+ if( stp->iTknOfst<mnTknOfst ) mnTknOfst = stp->iTknOfst;
+ if( stp->iTknOfst>mxTknOfst ) mxTknOfst = stp->iTknOfst;
+ }else{
+ for(ap=stp->ap; ap; ap=ap->next){
+ int action;
+ if( ap->sp->index<lemp->nterminal ) continue;
+ if( ap->sp->index==lemp->nsymbol ) continue;
+ action = compute_action(lemp, ap);
+ if( action<0 ) continue;
+ acttab_action(pActtab, ap->sp->index, action);
+ }
+ stp->iNtOfst = acttab_insert(pActtab);
+ if( stp->iNtOfst<mnNtOfst ) mnNtOfst = stp->iNtOfst;
+ if( stp->iNtOfst>mxNtOfst ) mxNtOfst = stp->iNtOfst;
+ }
+ }
+ free(ax);
+
+ /* Output the yy_action table */
+ n = acttab_size(pActtab);
+ fprintf(out,"#define YY_ACTTAB_COUNT (%d)\n", n); lineno++;
+ fprintf(out,"static const YYACTIONTYPE yy_action[] = {\n"); lineno++;
+ for(i=j=0; i<n; i++){
+ int action = acttab_yyaction(pActtab, i);
+ if( action<0 ) action = lemp->nstate + lemp->nrule + 2;
+ if( j==0 ) fprintf(out," /* %5d */ ", i);
+ fprintf(out, " %4d,", action);
+ if( j==9 || i==n-1 ){
+ fprintf(out, "\n"); lineno++;
+ j = 0;
+ }else{
+ j++;
+ }
+ }
+ fprintf(out, "};\n"); lineno++;
+
+ /* Output the yy_lookahead table */
+ fprintf(out,"static const YYCODETYPE yy_lookahead[] = {\n"); lineno++;
+ for(i=j=0; i<n; i++){
+ int la = acttab_yylookahead(pActtab, i);
+ if( la<0 ) la = lemp->nsymbol;
+ if( j==0 ) fprintf(out," /* %5d */ ", i);
+ fprintf(out, " %4d,", la);
+ if( j==9 || i==n-1 ){
+ fprintf(out, "\n"); lineno++;
+ j = 0;
+ }else{
+ j++;
+ }
+ }
+ fprintf(out, "};\n"); lineno++;
+
+ /* Output the yy_shift_ofst[] table */
+ fprintf(out, "#define YY_SHIFT_USE_DFLT (%d)\n", mnTknOfst-1); lineno++;
+ n = lemp->nstate;
+ while( n>0 && lemp->sorted[n-1]->iTknOfst==NO_OFFSET ) n--;
+ fprintf(out, "#define YY_SHIFT_COUNT (%d)\n", n-1); lineno++;
+ fprintf(out, "#define YY_SHIFT_MIN (%d)\n", mnTknOfst); lineno++;
+ fprintf(out, "#define YY_SHIFT_MAX (%d)\n", mxTknOfst); lineno++;
+ fprintf(out, "static const %s yy_shift_ofst[] = {\n",
+ minimum_size_type(mnTknOfst-1, mxTknOfst)); lineno++;
+ for(i=j=0; i<n; i++){
+ int ofst;
+ stp = lemp->sorted[i];
+ ofst = stp->iTknOfst;
+ if( ofst==NO_OFFSET ) ofst = mnTknOfst - 1;
+ if( j==0 ) fprintf(out," /* %5d */ ", i);
+ fprintf(out, " %4d,", ofst);
+ if( j==9 || i==n-1 ){
+ fprintf(out, "\n"); lineno++;
+ j = 0;
+ }else{
+ j++;
+ }
+ }
+ fprintf(out, "};\n"); lineno++;
+
+ /* Output the yy_reduce_ofst[] table */
+ fprintf(out, "#define YY_REDUCE_USE_DFLT (%d)\n", mnNtOfst-1); lineno++;
+ n = lemp->nstate;
+ while( n>0 && lemp->sorted[n-1]->iNtOfst==NO_OFFSET ) n--;
+ fprintf(out, "#define YY_REDUCE_COUNT (%d)\n", n-1); lineno++;
+ fprintf(out, "#define YY_REDUCE_MIN (%d)\n", mnNtOfst); lineno++;
+ fprintf(out, "#define YY_REDUCE_MAX (%d)\n", mxNtOfst); lineno++;
+ fprintf(out, "static const %s yy_reduce_ofst[] = {\n",
+ minimum_size_type(mnNtOfst-1, mxNtOfst)); lineno++;
+ for(i=j=0; i<n; i++){
+ int ofst;
+ stp = lemp->sorted[i];
+ ofst = stp->iNtOfst;
+ if( ofst==NO_OFFSET ) ofst = mnNtOfst - 1;
+ if( j==0 ) fprintf(out," /* %5d */ ", i);
+ fprintf(out, " %4d,", ofst);
+ if( j==9 || i==n-1 ){
+ fprintf(out, "\n"); lineno++;
+ j = 0;
+ }else{
+ j++;
+ }
+ }
+ fprintf(out, "};\n"); lineno++;
+
+ /* Output the default action table */
+ fprintf(out, "static const YYACTIONTYPE yy_default[] = {\n"); lineno++;
+ n = lemp->nstate;
+ for(i=j=0; i<n; i++){
+ stp = lemp->sorted[i];
+ if( j==0 ) fprintf(out," /* %5d */ ", i);
+ fprintf(out, " %4d,", stp->iDflt);
+ if( j==9 || i==n-1 ){
+ fprintf(out, "\n"); lineno++;
+ j = 0;
+ }else{
+ j++;
+ }
+ }
+ fprintf(out, "};\n"); lineno++;
+ tplt_xfer(lemp->name,in,out,&lineno);
+
+ /* Generate the table of fallback tokens.
+ */
+ if( lemp->has_fallback ){
+ int mx = lemp->nterminal - 1;
+ while( mx>0 && lemp->symbols[mx]->fallback==0 ){ mx--; }
+ for(i=0; i<=mx; i++){
+ struct symbol *p = lemp->symbols[i];
+ if( p->fallback==0 ){
+ fprintf(out, " 0, /* %10s => nothing */\n", p->name);
+ }else{
+ fprintf(out, " %3d, /* %10s => %s */\n", p->fallback->index,
+ p->name, p->fallback->name);
+ }
+ lineno++;
+ }
+ }
+ tplt_xfer(lemp->name, in, out, &lineno);
+
+ /* Generate a table containing the symbolic name of every symbol
+ */
+ for(i=0; i<lemp->nsymbol; i++){
+ lemon_sprintf(line,"\"%s\",",lemp->symbols[i]->name);
+ fprintf(out," %-15s",line);
+ if( (i&3)==3 ){ fprintf(out,"\n"); lineno++; }
+ }
+ if( (i&3)!=0 ){ fprintf(out,"\n"); lineno++; }
+ tplt_xfer(lemp->name,in,out,&lineno);
+
+ /* Generate a table containing a text string that describes every
+ ** rule in the rule set of the grammar. This information is used
+ ** when tracing REDUCE actions.
+ */
+ for(i=0, rp=lemp->rule; rp; rp=rp->next, i++){
+ assert( rp->index==i );
+ fprintf(out," /* %3d */ \"", i);
+ writeRuleText(out, rp);
+ fprintf(out,"\",\n"); lineno++;
+ }
+ tplt_xfer(lemp->name,in,out,&lineno);
+
+ /* Generate code which executes every time a symbol is popped from
+ ** the stack while processing errors or while destroying the parser.
+ ** (In other words, generate the %destructor actions)
+ */
+ if( lemp->tokendest ){
+ int once = 1;
+ for(i=0; i<lemp->nsymbol; i++){
+ struct symbol *sp = lemp->symbols[i];
+ if( sp==0 || sp->type!=TERMINAL ) continue;
+ if( once ){
+ fprintf(out, " /* TERMINAL Destructor */\n"); lineno++;
+ once = 0;
+ }
+ fprintf(out," case %d: /* %s */\n", sp->index, sp->name); lineno++;
+ }
+ for(i=0; i<lemp->nsymbol && lemp->symbols[i]->type!=TERMINAL; i++);
+ if( i<lemp->nsymbol ){
+ emit_destructor_code(out,lemp->symbols[i],lemp,&lineno);
+ fprintf(out," break;\n"); lineno++;
+ }
+ }
+ if( lemp->vardest ){
+ struct symbol *dflt_sp = 0;
+ int once = 1;
+ for(i=0; i<lemp->nsymbol; i++){
+ struct symbol *sp = lemp->symbols[i];
+ if( sp==0 || sp->type==TERMINAL ||
+ sp->index<=0 || sp->destructor!=0 ) continue;
+ if( once ){
+ fprintf(out, " /* Default NON-TERMINAL Destructor */\n"); lineno++;
+ once = 0;
+ }
+ fprintf(out," case %d: /* %s */\n", sp->index, sp->name); lineno++;
+ dflt_sp = sp;
+ }
+ if( dflt_sp!=0 ){
+ emit_destructor_code(out,dflt_sp,lemp,&lineno);
+ }
+ fprintf(out," break;\n"); lineno++;
+ }
+ for(i=0; i<lemp->nsymbol; i++){
+ struct symbol *sp = lemp->symbols[i];
+ if( sp==0 || sp->type==TERMINAL || sp->destructor==0 ) continue;
+ fprintf(out," case %d: /* %s */\n", sp->index, sp->name); lineno++;
+
+ /* Combine duplicate destructors into a single case */
+ for(j=i+1; j<lemp->nsymbol; j++){
+ struct symbol *sp2 = lemp->symbols[j];
+ if( sp2 && sp2->type!=TERMINAL && sp2->destructor
+ && sp2->dtnum==sp->dtnum
+ && strcmp(sp->destructor,sp2->destructor)==0 ){
+ fprintf(out," case %d: /* %s */\n",
+ sp2->index, sp2->name); lineno++;
+ sp2->destructor = 0;
+ }
+ }
+
+ emit_destructor_code(out,lemp->symbols[i],lemp,&lineno);
+ fprintf(out," break;\n"); lineno++;
+ }
+ tplt_xfer(lemp->name,in,out,&lineno);
+
+ /* Generate code which executes whenever the parser stack overflows */
+ tplt_print(out,lemp,lemp->overflow,&lineno);
+ tplt_xfer(lemp->name,in,out,&lineno);
+
+ /* Generate the table of rule information
+ **
+ ** Note: This code depends on the fact that rules are number
+ ** sequentually beginning with 0.
+ */
+ for(rp=lemp->rule; rp; rp=rp->next){
+ fprintf(out," { %d, %d },\n",rp->lhs->index,rp->nrhs); lineno++;
+ }
+ tplt_xfer(lemp->name,in,out,&lineno);
+
+ /* Generate code which execution during each REDUCE action */
+ for(rp=lemp->rule; rp; rp=rp->next){
+ translate_code(lemp, rp);
+ }
+ /* First output rules other than the default: rule */
+ for(rp=lemp->rule; rp; rp=rp->next){
+ struct rule *rp2; /* Other rules with the same action */
+ if( rp->code==0 ) continue;
+ if( rp->code[0]=='\n' && rp->code[1]==0 ) continue; /* Will be default: */
+ fprintf(out," case %d: /* ", rp->index);
+ writeRuleText(out, rp);
+ fprintf(out, " */\n"); lineno++;
+ for(rp2=rp->next; rp2; rp2=rp2->next){
+ if( rp2->code==rp->code ){
+ fprintf(out," case %d: /* ", rp2->index);
+ writeRuleText(out, rp2);
+ fprintf(out," */ yytestcase(yyruleno==%d);\n", rp2->index); lineno++;
+ rp2->code = 0;
+ }
+ }
+ emit_code(out,rp,lemp,&lineno);
+ fprintf(out," break;\n"); lineno++;
+ rp->code = 0;
+ }
+ /* Finally, output the default: rule. We choose as the default: all
+ ** empty actions. */
+ fprintf(out," default:\n"); lineno++;
+ for(rp=lemp->rule; rp; rp=rp->next){
+ if( rp->code==0 ) continue;
+ assert( rp->code[0]=='\n' && rp->code[1]==0 );
+ fprintf(out," /* (%d) ", rp->index);
+ writeRuleText(out, rp);
+ fprintf(out, " */ yytestcase(yyruleno==%d);\n", rp->index); lineno++;
+ }
+ fprintf(out," break;\n"); lineno++;
+ tplt_xfer(lemp->name,in,out,&lineno);
+
+ /* Generate code which executes if a parse fails */
+ tplt_print(out,lemp,lemp->failure,&lineno);
+ tplt_xfer(lemp->name,in,out,&lineno);
+
+ /* Generate code which executes when a syntax error occurs */
+ tplt_print(out,lemp,lemp->error,&lineno);
+ tplt_xfer(lemp->name,in,out,&lineno);
+
+ /* Generate code which executes when the parser accepts its input */
+ tplt_print(out,lemp,lemp->accept,&lineno);
+ tplt_xfer(lemp->name,in,out,&lineno);
+
+ /* Append any addition code the user desires */
+ tplt_print(out,lemp,lemp->extracode,&lineno);
+
+ fclose(in);
+ fclose(out);
+ return;
+}
+
+/* Generate a header file for the parser */
+void ReportHeader(struct lemon *lemp)
+{
+ FILE *out, *in;
+ const char *prefix;
+ char line[LINESIZE];
+ char pattern[LINESIZE];
+ int i;
+
+ if( lemp->tokenprefix ) prefix = lemp->tokenprefix;
+ else prefix = "";
+ in = file_open(lemp,".h","rb");
+ if( in ){
+ int nextChar;
+ for(i=1; i<lemp->nterminal && fgets(line,LINESIZE,in); i++){
+ lemon_sprintf(pattern,"#define %s%-30s %3d\n",
+ prefix,lemp->symbols[i]->name,i);
+ if( strcmp(line,pattern) ) break;
+ }
+ nextChar = fgetc(in);
+ fclose(in);
+ if( i==lemp->nterminal && nextChar==EOF ){
+ /* No change in the file. Don't rewrite it. */
+ return;
+ }
+ }
+ out = file_open(lemp,".h","wb");
+ if( out ){
+ for(i=1; i<lemp->nterminal; i++){
+ fprintf(out,"#define %s%-30s %3d\n",prefix,lemp->symbols[i]->name,i);
+ }
+ fclose(out);
+ }
+ return;
+}
+
+/* Reduce the size of the action tables, if possible, by making use
+** of defaults.
+**
+** In this version, we take the most frequent REDUCE action and make
+** it the default. Except, there is no default if the wildcard token
+** is a possible look-ahead.
+*/
+void CompressTables(struct lemon *lemp)
+{
+ struct state *stp;
+ struct action *ap, *ap2;
+ struct rule *rp, *rp2, *rbest;
+ int nbest, n;
+ int i;
+ int usesWildcard;
+
+ for(i=0; i<lemp->nstate; i++){
+ stp = lemp->sorted[i];
+ nbest = 0;
+ rbest = 0;
+ usesWildcard = 0;
+
+ for(ap=stp->ap; ap; ap=ap->next){
+ if( ap->type==SHIFT && ap->sp==lemp->wildcard ){
+ usesWildcard = 1;
+ }
+ if( ap->type!=REDUCE ) continue;
+ rp = ap->x.rp;
+ if( rp->lhsStart ) continue;
+ if( rp==rbest ) continue;
+ n = 1;
+ for(ap2=ap->next; ap2; ap2=ap2->next){
+ if( ap2->type!=REDUCE ) continue;
+ rp2 = ap2->x.rp;
+ if( rp2==rbest ) continue;
+ if( rp2==rp ) n++;
+ }
+ if( n>nbest ){
+ nbest = n;
+ rbest = rp;
+ }
+ }
+
+ /* Do not make a default if the number of rules to default
+ ** is not at least 1 or if the wildcard token is a possible
+ ** lookahead.
+ */
+ if( nbest<1 || usesWildcard ) continue;
+
+
+ /* Combine matching REDUCE actions into a single default */
+ for(ap=stp->ap; ap; ap=ap->next){
+ if( ap->type==REDUCE && ap->x.rp==rbest ) break;
+ }
+ assert( ap );
+ ap->sp = Symbol_new("{default}");
+ for(ap=ap->next; ap; ap=ap->next){
+ if( ap->type==REDUCE && ap->x.rp==rbest ) ap->type = NOT_USED;
+ }
+ stp->ap = Action_sort(stp->ap);
+ }
+}
+
+
+/*
+** Compare two states for sorting purposes. The smaller state is the
+** one with the most non-terminal actions. If they have the same number
+** of non-terminal actions, then the smaller is the one with the most
+** token actions.
+*/
+static int stateResortCompare(const void *a, const void *b){
+ const struct state *pA = *(const struct state**)a;
+ const struct state *pB = *(const struct state**)b;
+ int n;
+
+ n = pB->nNtAct - pA->nNtAct;
+ if( n==0 ){
+ n = pB->nTknAct - pA->nTknAct;
+ if( n==0 ){
+ n = pB->statenum - pA->statenum;
+ }
+ }
+ assert( n!=0 );
+ return n;
+}
+
+
+/*
+** Renumber and resort states so that states with fewer choices
+** occur at the end. Except, keep state 0 as the first state.
+*/
+void ResortStates(struct lemon *lemp)
+{
+ int i;
+ struct state *stp;
+ struct action *ap;
+
+ for(i=0; i<lemp->nstate; i++){
+ stp = lemp->sorted[i];
+ stp->nTknAct = stp->nNtAct = 0;
+ stp->iDflt = lemp->nstate + lemp->nrule;
+ stp->iTknOfst = NO_OFFSET;
+ stp->iNtOfst = NO_OFFSET;
+ for(ap=stp->ap; ap; ap=ap->next){
+ if( compute_action(lemp,ap)>=0 ){
+ if( ap->sp->index<lemp->nterminal ){
+ stp->nTknAct++;
+ }else if( ap->sp->index<lemp->nsymbol ){
+ stp->nNtAct++;
+ }else{
+ stp->iDflt = compute_action(lemp, ap);
+ }
+ }
+ }
+ }
+ qsort(&lemp->sorted[1], lemp->nstate-1, sizeof(lemp->sorted[0]),
+ stateResortCompare);
+ for(i=0; i<lemp->nstate; i++){
+ lemp->sorted[i]->statenum = i;
+ }
+}
+
+
+/***************** From the file "set.c" ************************************/
+/*
+** Set manipulation routines for the LEMON parser generator.
+*/
+
+static int size = 0;
+
+/* Set the set size */
+void SetSize(int n)
+{
+ size = n+1;
+}
+
+/* Allocate a new set */
+char *SetNew(){
+ char *s;
+ s = (char*)calloc( size, 1);
+ if( s==0 ){
+ extern void memory_error();
+ memory_error();
+ }
+ return s;
+}
+
+/* Deallocate a set */
+void SetFree(char *s)
+{
+ free(s);
+}
+
+/* Add a new element to the set. Return TRUE if the element was added
+** and FALSE if it was already there. */
+int SetAdd(char *s, int e)
+{
+ int rv;
+ assert( e>=0 && e<size );
+ rv = s[e];
+ s[e] = 1;
+ return !rv;
+}
+
+/* Add every element of s2 to s1. Return TRUE if s1 changes. */
+int SetUnion(char *s1, char *s2)
+{
+ int i, progress;
+ progress = 0;
+ for(i=0; i<size; i++){
+ if( s2[i]==0 ) continue;
+ if( s1[i]==0 ){
+ progress = 1;
+ s1[i] = 1;
+ }
+ }
+ return progress;
+}
+/********************** From the file "table.c" ****************************/
+/*
+** All code in this file has been automatically generated
+** from a specification in the file
+** "table.q"
+** by the associative array code building program "aagen".
+** Do not edit this file! Instead, edit the specification
+** file, then rerun aagen.
+*/
+/*
+** Code for processing tables in the LEMON parser generator.
+*/
+
+PRIVATE unsigned strhash(const char *x)
+{
+ unsigned h = 0;
+ while( *x ) h = h*13 + *(x++);
+ return h;
+}
+
+/* Works like strdup, sort of. Save a string in malloced memory, but
+** keep strings in a table so that the same string is not in more
+** than one place.
+*/
+const char *Strsafe(const char *y)
+{
+ const char *z;
+ char *cpy;
+
+ if( y==0 ) return 0;
+ z = Strsafe_find(y);
+ if( z==0 && (cpy=(char *)malloc( lemonStrlen(y)+1 ))!=0 ){
+ lemon_strcpy(cpy,y);
+ z = cpy;
+ Strsafe_insert(z);
+ }
+ MemoryCheck(z);
+ return z;
+}
+
+/* There is one instance of the following structure for each
+** associative array of type "x1".
+*/
+struct s_x1 {
+ int size; /* The number of available slots. */
+ /* Must be a power of 2 greater than or */
+ /* equal to 1 */
+ int count; /* Number of currently slots filled */
+ struct s_x1node *tbl; /* The data stored here */
+ struct s_x1node **ht; /* Hash table for lookups */
+};
+
+/* There is one instance of this structure for every data element
+** in an associative array of type "x1".
+*/
+typedef struct s_x1node {
+ const char *data; /* The data */
+ struct s_x1node *next; /* Next entry with the same hash */
+ struct s_x1node **from; /* Previous link */
+} x1node;
+
+/* There is only one instance of the array, which is the following */
+static struct s_x1 *x1a;
+
+/* Allocate a new associative array */
+void Strsafe_init(){
+ if( x1a ) return;
+ x1a = (struct s_x1*)malloc( sizeof(struct s_x1) );
+ if( x1a ){
+ x1a->size = 1024;
+ x1a->count = 0;
+ x1a->tbl = (x1node*)calloc(1024, sizeof(x1node) + sizeof(x1node*));
+ if( x1a->tbl==0 ){
+ free(x1a);
+ x1a = 0;
+ }else{
+ int i;
+ x1a->ht = (x1node**)&(x1a->tbl[1024]);
+ for(i=0; i<1024; i++) x1a->ht[i] = 0;
+ }
+ }
+}
+/* Insert a new record into the array. Return TRUE if successful.
+** Prior data with the same key is NOT overwritten */
+int Strsafe_insert(const char *data)
+{
+ x1node *np;
+ unsigned h;
+ unsigned ph;
+
+ if( x1a==0 ) return 0;
+ ph = strhash(data);
+ h = ph & (x1a->size-1);
+ np = x1a->ht[h];
+ while( np ){
+ if( strcmp(np->data,data)==0 ){
+ /* An existing entry with the same key is found. */
+ /* Fail because overwrite is not allows. */
+ return 0;
+ }
+ np = np->next;
+ }
+ if( x1a->count>=x1a->size ){
+ /* Need to make the hash table bigger */
+ int i,size;
+ struct s_x1 array;
+ array.size = size = x1a->size*2;
+ array.count = x1a->count;
+ array.tbl = (x1node*)calloc(size, sizeof(x1node) + sizeof(x1node*));
+ if( array.tbl==0 ) return 0; /* Fail due to malloc failure */
+ array.ht = (x1node**)&(array.tbl[size]);
+ for(i=0; i<size; i++) array.ht[i] = 0;
+ for(i=0; i<x1a->count; i++){
+ x1node *oldnp, *newnp;
+ oldnp = &(x1a->tbl[i]);
+ h = strhash(oldnp->data) & (size-1);
+ newnp = &(array.tbl[i]);
+ if( array.ht[h] ) array.ht[h]->from = &(newnp->next);
+ newnp->next = array.ht[h];
+ newnp->data = oldnp->data;
+ newnp->from = &(array.ht[h]);
+ array.ht[h] = newnp;
+ }
+ free(x1a->tbl);
+ *x1a = array;
+ }
+ /* Insert the new data */
+ h = ph & (x1a->size-1);
+ np = &(x1a->tbl[x1a->count++]);
+ np->data = data;
+ if( x1a->ht[h] ) x1a->ht[h]->from = &(np->next);
+ np->next = x1a->ht[h];
+ x1a->ht[h] = np;
+ np->from = &(x1a->ht[h]);
+ return 1;
+}
+
+/* Return a pointer to data assigned to the given key. Return NULL
+** if no such key. */
+const char *Strsafe_find(const char *key)
+{
+ unsigned h;
+ x1node *np;
+
+ if( x1a==0 ) return 0;
+ h = strhash(key) & (x1a->size-1);
+ np = x1a->ht[h];
+ while( np ){
+ if( strcmp(np->data,key)==0 ) break;
+ np = np->next;
+ }
+ return np ? np->data : 0;
+}
+
+/* Return a pointer to the (terminal or nonterminal) symbol "x".
+** Create a new symbol if this is the first time "x" has been seen.
+*/
+struct symbol *Symbol_new(const char *x)
+{
+ struct symbol *sp;
+
+ sp = Symbol_find(x);
+ if( sp==0 ){
+ sp = (struct symbol *)calloc(1, sizeof(struct symbol) );
+ MemoryCheck(sp);
+ sp->name = Strsafe(x);
+ sp->type = isupper(*x) ? TERMINAL : NONTERMINAL;
+ sp->rule = 0;
+ sp->fallback = 0;
+ sp->prec = -1;
+ sp->assoc = UNK;
+ sp->firstset = 0;
+ sp->lambda = LEMON_FALSE;
+ sp->destructor = 0;
+ sp->destLineno = 0;
+ sp->datatype = 0;
+ sp->useCnt = 0;
+ Symbol_insert(sp,sp->name);
+ }
+ sp->useCnt++;
+ return sp;
+}
+
+/* Compare two symbols for sorting purposes. Return negative,
+** zero, or positive if a is less then, equal to, or greater
+** than b.
+**
+** Symbols that begin with upper case letters (terminals or tokens)
+** must sort before symbols that begin with lower case letters
+** (non-terminals). And MULTITERMINAL symbols (created using the
+** %token_class directive) must sort at the very end. Other than
+** that, the order does not matter.
+**
+** We find experimentally that leaving the symbols in their original
+** order (the order they appeared in the grammar file) gives the
+** smallest parser tables in SQLite.
+*/
+int Symbolcmpp(const void *_a, const void *_b)
+{
+ const struct symbol *a = *(const struct symbol **) _a;
+ const struct symbol *b = *(const struct symbol **) _b;
+ int i1 = a->type==MULTITERMINAL ? 3 : a->name[0]>'Z' ? 2 : 1;
+ int i2 = b->type==MULTITERMINAL ? 3 : b->name[0]>'Z' ? 2 : 1;
+ return i1==i2 ? a->index - b->index : i1 - i2;
+}
+
+/* There is one instance of the following structure for each
+** associative array of type "x2".
+*/
+struct s_x2 {
+ int size; /* The number of available slots. */
+ /* Must be a power of 2 greater than or */
+ /* equal to 1 */
+ int count; /* Number of currently slots filled */
+ struct s_x2node *tbl; /* The data stored here */
+ struct s_x2node **ht; /* Hash table for lookups */
+};
+
+/* There is one instance of this structure for every data element
+** in an associative array of type "x2".
+*/
+typedef struct s_x2node {
+ struct symbol *data; /* The data */
+ const char *key; /* The key */
+ struct s_x2node *next; /* Next entry with the same hash */
+ struct s_x2node **from; /* Previous link */
+} x2node;
+
+/* There is only one instance of the array, which is the following */
+static struct s_x2 *x2a;
+
+/* Allocate a new associative array */
+void Symbol_init(){
+ if( x2a ) return;
+ x2a = (struct s_x2*)malloc( sizeof(struct s_x2) );
+ if( x2a ){
+ x2a->size = 128;
+ x2a->count = 0;
+ x2a->tbl = (x2node*)calloc(128, sizeof(x2node) + sizeof(x2node*));
+ if( x2a->tbl==0 ){
+ free(x2a);
+ x2a = 0;
+ }else{
+ int i;
+ x2a->ht = (x2node**)&(x2a->tbl[128]);
+ for(i=0; i<128; i++) x2a->ht[i] = 0;
+ }
+ }
+}
+/* Insert a new record into the array. Return TRUE if successful.
+** Prior data with the same key is NOT overwritten */
+int Symbol_insert(struct symbol *data, const char *key)
+{
+ x2node *np;
+ unsigned h;
+ unsigned ph;
+
+ if( x2a==0 ) return 0;
+ ph = strhash(key);
+ h = ph & (x2a->size-1);
+ np = x2a->ht[h];
+ while( np ){
+ if( strcmp(np->key,key)==0 ){
+ /* An existing entry with the same key is found. */
+ /* Fail because overwrite is not allows. */
+ return 0;
+ }
+ np = np->next;
+ }
+ if( x2a->count>=x2a->size ){
+ /* Need to make the hash table bigger */
+ int i,size;
+ struct s_x2 array;
+ array.size = size = x2a->size*2;
+ array.count = x2a->count;
+ array.tbl = (x2node*)calloc(size, sizeof(x2node) + sizeof(x2node*));
+ if( array.tbl==0 ) return 0; /* Fail due to malloc failure */
+ array.ht = (x2node**)&(array.tbl[size]);
+ for(i=0; i<size; i++) array.ht[i] = 0;
+ for(i=0; i<x2a->count; i++){
+ x2node *oldnp, *newnp;
+ oldnp = &(x2a->tbl[i]);
+ h = strhash(oldnp->key) & (size-1);
+ newnp = &(array.tbl[i]);
+ if( array.ht[h] ) array.ht[h]->from = &(newnp->next);
+ newnp->next = array.ht[h];
+ newnp->key = oldnp->key;
+ newnp->data = oldnp->data;
+ newnp->from = &(array.ht[h]);
+ array.ht[h] = newnp;
+ }
+ free(x2a->tbl);
+ *x2a = array;
+ }
+ /* Insert the new data */
+ h = ph & (x2a->size-1);
+ np = &(x2a->tbl[x2a->count++]);
+ np->key = key;
+ np->data = data;
+ if( x2a->ht[h] ) x2a->ht[h]->from = &(np->next);
+ np->next = x2a->ht[h];
+ x2a->ht[h] = np;
+ np->from = &(x2a->ht[h]);
+ return 1;
+}
+
+/* Return a pointer to data assigned to the given key. Return NULL
+** if no such key. */
+struct symbol *Symbol_find(const char *key)
+{
+ unsigned h;
+ x2node *np;
+
+ if( x2a==0 ) return 0;
+ h = strhash(key) & (x2a->size-1);
+ np = x2a->ht[h];
+ while( np ){
+ if( strcmp(np->key,key)==0 ) break;
+ np = np->next;
+ }
+ return np ? np->data : 0;
+}
+
+/* Return the n-th data. Return NULL if n is out of range. */
+struct symbol *Symbol_Nth(int n)
+{
+ struct symbol *data;
+ if( x2a && n>0 && n<=x2a->count ){
+ data = x2a->tbl[n-1].data;
+ }else{
+ data = 0;
+ }
+ return data;
+}
+
+/* Return the size of the array */
+int Symbol_count()
+{
+ return x2a ? x2a->count : 0;
+}
+
+/* Return an array of pointers to all data in the table.
+** The array is obtained from malloc. Return NULL if memory allocation
+** problems, or if the array is empty. */
+struct symbol **Symbol_arrayof()
+{
+ struct symbol **array;
+ int i,size;
+ if( x2a==0 ) return 0;
+ size = x2a->count;
+ array = (struct symbol **)calloc(size, sizeof(struct symbol *));
+ if( array ){
+ for(i=0; i<size; i++) array[i] = x2a->tbl[i].data;
+ }
+ return array;
+}
+
+/* Compare two configurations */
+int Configcmp(const char *_a,const char *_b)
+{
+ const struct config *a = (struct config *) _a;
+ const struct config *b = (struct config *) _b;
+ int x;
+ x = a->rp->index - b->rp->index;
+ if( x==0 ) x = a->dot - b->dot;
+ return x;
+}
+
+/* Compare two states */
+PRIVATE int statecmp(struct config *a, struct config *b)
+{
+ int rc;
+ for(rc=0; rc==0 && a && b; a=a->bp, b=b->bp){
+ rc = a->rp->index - b->rp->index;
+ if( rc==0 ) rc = a->dot - b->dot;
+ }
+ if( rc==0 ){
+ if( a ) rc = 1;
+ if( b ) rc = -1;
+ }
+ return rc;
+}
+
+/* Hash a state */
+PRIVATE unsigned statehash(struct config *a)
+{
+ unsigned h=0;
+ while( a ){
+ h = h*571 + a->rp->index*37 + a->dot;
+ a = a->bp;
+ }
+ return h;
+}
+
+/* Allocate a new state structure */
+struct state *State_new()
+{
+ struct state *newstate;
+ newstate = (struct state *)calloc(1, sizeof(struct state) );
+ MemoryCheck(newstate);
+ return newstate;
+}
+
+/* There is one instance of the following structure for each
+** associative array of type "x3".
+*/
+struct s_x3 {
+ int size; /* The number of available slots. */
+ /* Must be a power of 2 greater than or */
+ /* equal to 1 */
+ int count; /* Number of currently slots filled */
+ struct s_x3node *tbl; /* The data stored here */
+ struct s_x3node **ht; /* Hash table for lookups */
+};
+
+/* There is one instance of this structure for every data element
+** in an associative array of type "x3".
+*/
+typedef struct s_x3node {
+ struct state *data; /* The data */
+ struct config *key; /* The key */
+ struct s_x3node *next; /* Next entry with the same hash */
+ struct s_x3node **from; /* Previous link */
+} x3node;
+
+/* There is only one instance of the array, which is the following */
+static struct s_x3 *x3a;
+
+/* Allocate a new associative array */
+void State_init(){
+ if( x3a ) return;
+ x3a = (struct s_x3*)malloc( sizeof(struct s_x3) );
+ if( x3a ){
+ x3a->size = 128;
+ x3a->count = 0;
+ x3a->tbl = (x3node*)calloc(128, sizeof(x3node) + sizeof(x3node*));
+ if( x3a->tbl==0 ){
+ free(x3a);
+ x3a = 0;
+ }else{
+ int i;
+ x3a->ht = (x3node**)&(x3a->tbl[128]);
+ for(i=0; i<128; i++) x3a->ht[i] = 0;
+ }
+ }
+}
+/* Insert a new record into the array. Return TRUE if successful.
+** Prior data with the same key is NOT overwritten */
+int State_insert(struct state *data, struct config *key)
+{
+ x3node *np;
+ unsigned h;
+ unsigned ph;
+
+ if( x3a==0 ) return 0;
+ ph = statehash(key);
+ h = ph & (x3a->size-1);
+ np = x3a->ht[h];
+ while( np ){
+ if( statecmp(np->key,key)==0 ){
+ /* An existing entry with the same key is found. */
+ /* Fail because overwrite is not allows. */
+ return 0;
+ }
+ np = np->next;
+ }
+ if( x3a->count>=x3a->size ){
+ /* Need to make the hash table bigger */
+ int i,size;
+ struct s_x3 array;
+ array.size = size = x3a->size*2;
+ array.count = x3a->count;
+ array.tbl = (x3node*)calloc(size, sizeof(x3node) + sizeof(x3node*));
+ if( array.tbl==0 ) return 0; /* Fail due to malloc failure */
+ array.ht = (x3node**)&(array.tbl[size]);
+ for(i=0; i<size; i++) array.ht[i] = 0;
+ for(i=0; i<x3a->count; i++){
+ x3node *oldnp, *newnp;
+ oldnp = &(x3a->tbl[i]);
+ h = statehash(oldnp->key) & (size-1);
+ newnp = &(array.tbl[i]);
+ if( array.ht[h] ) array.ht[h]->from = &(newnp->next);
+ newnp->next = array.ht[h];
+ newnp->key = oldnp->key;
+ newnp->data = oldnp->data;
+ newnp->from = &(array.ht[h]);
+ array.ht[h] = newnp;
+ }
+ free(x3a->tbl);
+ *x3a = array;
+ }
+ /* Insert the new data */
+ h = ph & (x3a->size-1);
+ np = &(x3a->tbl[x3a->count++]);
+ np->key = key;
+ np->data = data;
+ if( x3a->ht[h] ) x3a->ht[h]->from = &(np->next);
+ np->next = x3a->ht[h];
+ x3a->ht[h] = np;
+ np->from = &(x3a->ht[h]);
+ return 1;
+}
+
+/* Return a pointer to data assigned to the given key. Return NULL
+** if no such key. */
+struct state *State_find(struct config *key)
+{
+ unsigned h;
+ x3node *np;
+
+ if( x3a==0 ) return 0;
+ h = statehash(key) & (x3a->size-1);
+ np = x3a->ht[h];
+ while( np ){
+ if( statecmp(np->key,key)==0 ) break;
+ np = np->next;
+ }
+ return np ? np->data : 0;
+}
+
+/* Return an array of pointers to all data in the table.
+** The array is obtained from malloc. Return NULL if memory allocation
+** problems, or if the array is empty. */
+struct state **State_arrayof()
+{
+ struct state **array;
+ int i,size;
+ if( x3a==0 ) return 0;
+ size = x3a->count;
+ array = (struct state **)calloc(size, sizeof(struct state *));
+ if( array ){
+ for(i=0; i<size; i++) array[i] = x3a->tbl[i].data;
+ }
+ return array;
+}
+
+/* Hash a configuration */
+PRIVATE unsigned confighash(struct config *a)
+{
+ unsigned h=0;
+ h = h*571 + a->rp->index*37 + a->dot;
+ return h;
+}
+
+/* There is one instance of the following structure for each
+** associative array of type "x4".
+*/
+struct s_x4 {
+ int size; /* The number of available slots. */
+ /* Must be a power of 2 greater than or */
+ /* equal to 1 */
+ int count; /* Number of currently slots filled */
+ struct s_x4node *tbl; /* The data stored here */
+ struct s_x4node **ht; /* Hash table for lookups */
+};
+
+/* There is one instance of this structure for every data element
+** in an associative array of type "x4".
+*/
+typedef struct s_x4node {
+ struct config *data; /* The data */
+ struct s_x4node *next; /* Next entry with the same hash */
+ struct s_x4node **from; /* Previous link */
+} x4node;
+
+/* There is only one instance of the array, which is the following */
+static struct s_x4 *x4a;
+
+/* Allocate a new associative array */
+void Configtable_init(){
+ if( x4a ) return;
+ x4a = (struct s_x4*)malloc( sizeof(struct s_x4) );
+ if( x4a ){
+ x4a->size = 64;
+ x4a->count = 0;
+ x4a->tbl = (x4node*)calloc(64, sizeof(x4node) + sizeof(x4node*));
+ if( x4a->tbl==0 ){
+ free(x4a);
+ x4a = 0;
+ }else{
+ int i;
+ x4a->ht = (x4node**)&(x4a->tbl[64]);
+ for(i=0; i<64; i++) x4a->ht[i] = 0;
+ }
+ }
+}
+/* Insert a new record into the array. Return TRUE if successful.
+** Prior data with the same key is NOT overwritten */
+int Configtable_insert(struct config *data)
+{
+ x4node *np;
+ unsigned h;
+ unsigned ph;
+
+ if( x4a==0 ) return 0;
+ ph = confighash(data);
+ h = ph & (x4a->size-1);
+ np = x4a->ht[h];
+ while( np ){
+ if( Configcmp((const char *) np->data,(const char *) data)==0 ){
+ /* An existing entry with the same key is found. */
+ /* Fail because overwrite is not allows. */
+ return 0;
+ }
+ np = np->next;
+ }
+ if( x4a->count>=x4a->size ){
+ /* Need to make the hash table bigger */
+ int i,size;
+ struct s_x4 array;
+ array.size = size = x4a->size*2;
+ array.count = x4a->count;
+ array.tbl = (x4node*)calloc(size, sizeof(x4node) + sizeof(x4node*));
+ if( array.tbl==0 ) return 0; /* Fail due to malloc failure */
+ array.ht = (x4node**)&(array.tbl[size]);
+ for(i=0; i<size; i++) array.ht[i] = 0;
+ for(i=0; i<x4a->count; i++){
+ x4node *oldnp, *newnp;
+ oldnp = &(x4a->tbl[i]);
+ h = confighash(oldnp->data) & (size-1);
+ newnp = &(array.tbl[i]);
+ if( array.ht[h] ) array.ht[h]->from = &(newnp->next);
+ newnp->next = array.ht[h];
+ newnp->data = oldnp->data;
+ newnp->from = &(array.ht[h]);
+ array.ht[h] = newnp;
+ }
+ free(x4a->tbl);
+ *x4a = array;
+ }
+ /* Insert the new data */
+ h = ph & (x4a->size-1);
+ np = &(x4a->tbl[x4a->count++]);
+ np->data = data;
+ if( x4a->ht[h] ) x4a->ht[h]->from = &(np->next);
+ np->next = x4a->ht[h];
+ x4a->ht[h] = np;
+ np->from = &(x4a->ht[h]);
+ return 1;
+}
+
+/* Return a pointer to data assigned to the given key. Return NULL
+** if no such key. */
+struct config *Configtable_find(struct config *key)
+{
+ int h;
+ x4node *np;
+
+ if( x4a==0 ) return 0;
+ h = confighash(key) & (x4a->size-1);
+ np = x4a->ht[h];
+ while( np ){
+ if( Configcmp((const char *) np->data,(const char *) key)==0 ) break;
+ np = np->next;
+ }
+ return np ? np->data : 0;
+}
+
+/* Remove all data from the table. Pass each data to the function "f"
+** as it is removed. ("f" may be null to avoid this step.) */
+void Configtable_clear(int(*f)(struct config *))
+{
+ int i;
+ if( x4a==0 || x4a->count==0 ) return;
+ if( f ) for(i=0; i<x4a->count; i++) (*f)(x4a->tbl[i].data);
+ for(i=0; i<x4a->size; i++) x4a->ht[i] = 0;
+ x4a->count = 0;
+ return;
+}
diff --git a/modules/luci-base/src/contrib/lempar.c b/modules/luci-base/src/contrib/lempar.c
new file mode 100644
index 0000000000..a4e3c07ddb
--- /dev/null
+++ b/modules/luci-base/src/contrib/lempar.c
@@ -0,0 +1,851 @@
+/* Driver template for the LEMON parser generator.
+** The author disclaims copyright to this source code.
+*/
+/* First off, code is included that follows the "include" declaration
+** in the input grammar file. */
+#include <stdio.h>
+%%
+/* Next is all token values, in a form suitable for use by makeheaders.
+** This section will be null unless lemon is run with the -m switch.
+*/
+/*
+** These constants (all generated automatically by the parser generator)
+** specify the various kinds of tokens (terminals) that the parser
+** understands.
+**
+** Each symbol here is a terminal symbol in the grammar.
+*/
+%%
+/* Make sure the INTERFACE macro is defined.
+*/
+#ifndef INTERFACE
+# define INTERFACE 1
+#endif
+/* The next thing included is series of defines which control
+** various aspects of the generated parser.
+** YYCODETYPE is the data type used for storing terminal
+** and nonterminal numbers. "unsigned char" is
+** used if there are fewer than 250 terminals
+** and nonterminals. "int" is used otherwise.
+** YYNOCODE is a number of type YYCODETYPE which corresponds
+** to no legal terminal or nonterminal number. This
+** number is used to fill in empty slots of the hash
+** table.
+** YYFALLBACK If defined, this indicates that one or more tokens
+** have fall-back values which should be used if the
+** original value of the token will not parse.
+** YYACTIONTYPE is the data type used for storing terminal
+** and nonterminal numbers. "unsigned char" is
+** used if there are fewer than 250 rules and
+** states combined. "int" is used otherwise.
+** ParseTOKENTYPE is the data type used for minor tokens given
+** directly to the parser from the tokenizer.
+** YYMINORTYPE is the data type used for all minor tokens.
+** This is typically a union of many types, one of
+** which is ParseTOKENTYPE. The entry in the union
+** for base tokens is called "yy0".
+** YYSTACKDEPTH is the maximum depth of the parser's stack. If
+** zero the stack is dynamically sized using realloc()
+** ParseARG_SDECL A static variable declaration for the %extra_argument
+** ParseARG_PDECL A parameter declaration for the %extra_argument
+** ParseARG_STORE Code to store %extra_argument into yypParser
+** ParseARG_FETCH Code to extract %extra_argument from yypParser
+** YYNSTATE the combined number of states.
+** YYNRULE the number of rules in the grammar
+** YYERRORSYMBOL is the code number of the error symbol. If not
+** defined, then do no error processing.
+*/
+%%
+#define YY_NO_ACTION (YYNSTATE+YYNRULE+2)
+#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1)
+#define YY_ERROR_ACTION (YYNSTATE+YYNRULE)
+
+/* The yyzerominor constant is used to initialize instances of
+** YYMINORTYPE objects to zero. */
+static const YYMINORTYPE yyzerominor = { 0 };
+
+/* Define the yytestcase() macro to be a no-op if is not already defined
+** otherwise.
+**
+** Applications can choose to define yytestcase() in the %include section
+** to a macro that can assist in verifying code coverage. For production
+** code the yytestcase() macro should be turned off. But it is useful
+** for testing.
+*/
+#ifndef yytestcase
+# define yytestcase(X)
+#endif
+
+
+/* Next are the tables used to determine what action to take based on the
+** current state and lookahead token. These tables are used to implement
+** functions that take a state number and lookahead value and return an
+** action integer.
+**
+** Suppose the action integer is N. Then the action is determined as
+** follows
+**
+** 0 <= N < YYNSTATE Shift N. That is, push the lookahead
+** token onto the stack and goto state N.
+**
+** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE.
+**
+** N == YYNSTATE+YYNRULE A syntax error has occurred.
+**
+** N == YYNSTATE+YYNRULE+1 The parser accepts its input.
+**
+** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused
+** slots in the yy_action[] table.
+**
+** The action table is constructed as a single large table named yy_action[].
+** Given state S and lookahead X, the action is computed as
+**
+** yy_action[ yy_shift_ofst[S] + X ]
+**
+** If the index value yy_shift_ofst[S]+X is out of range or if the value
+** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S]
+** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table
+** and that yy_default[S] should be used instead.
+**
+** The formula above is for computing the action when the lookahead is
+** a terminal symbol. If the lookahead is a non-terminal (as occurs after
+** a reduce action) then the yy_reduce_ofst[] array is used in place of
+** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of
+** YY_SHIFT_USE_DFLT.
+**
+** The following are the tables generated in this section:
+**
+** yy_action[] A single table containing all actions.
+** yy_lookahead[] A table containing the lookahead for each entry in
+** yy_action. Used to detect hash collisions.
+** yy_shift_ofst[] For each state, the offset into yy_action for
+** shifting terminals.
+** yy_reduce_ofst[] For each state, the offset into yy_action for
+** shifting non-terminals after a reduce.
+** yy_default[] Default action for each state.
+*/
+%%
+
+/* The next table maps tokens into fallback tokens. If a construct
+** like the following:
+**
+** %fallback ID X Y Z.
+**
+** appears in the grammar, then ID becomes a fallback token for X, Y,
+** and Z. Whenever one of the tokens X, Y, or Z is input to the parser
+** but it does not parse, the type of the token is changed to ID and
+** the parse is retried before an error is thrown.
+*/
+#ifdef YYFALLBACK
+static const YYCODETYPE yyFallback[] = {
+%%
+};
+#endif /* YYFALLBACK */
+
+/* The following structure represents a single element of the
+** parser's stack. Information stored includes:
+**
+** + The state number for the parser at this level of the stack.
+**
+** + The value of the token stored at this level of the stack.
+** (In other words, the "major" token.)
+**
+** + The semantic value stored at this level of the stack. This is
+** the information used by the action routines in the grammar.
+** It is sometimes called the "minor" token.
+*/
+struct yyStackEntry {
+ YYACTIONTYPE stateno; /* The state-number */
+ YYCODETYPE major; /* The major token value. This is the code
+ ** number for the token at this stack level */
+ YYMINORTYPE minor; /* The user-supplied minor token value. This
+ ** is the value of the token */
+};
+typedef struct yyStackEntry yyStackEntry;
+
+/* The state of the parser is completely contained in an instance of
+** the following structure */
+struct yyParser {
+ int yyidx; /* Index of top element in stack */
+#ifdef YYTRACKMAXSTACKDEPTH
+ int yyidxMax; /* Maximum value of yyidx */
+#endif
+ int yyerrcnt; /* Shifts left before out of the error */
+ ParseARG_SDECL /* A place to hold %extra_argument */
+#if YYSTACKDEPTH<=0
+ int yystksz; /* Current side of the stack */
+ yyStackEntry *yystack; /* The parser's stack */
+#else
+ yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */
+#endif
+};
+typedef struct yyParser yyParser;
+
+#ifndef NDEBUG
+#include <stdio.h>
+static FILE *yyTraceFILE = 0;
+static char *yyTracePrompt = 0;
+#endif /* NDEBUG */
+
+#ifndef NDEBUG
+/*
+** Turn parser tracing on by giving a stream to which to write the trace
+** and a prompt to preface each trace message. Tracing is turned off
+** by making either argument NULL
+**
+** Inputs:
+** <ul>
+** <li> A FILE* to which trace output should be written.
+** If NULL, then tracing is turned off.
+** <li> A prefix string written at the beginning of every
+** line of trace output. If NULL, then tracing is
+** turned off.
+** </ul>
+**
+** Outputs:
+** None.
+*/
+void ParseTrace(FILE *TraceFILE, char *zTracePrompt);
+void ParseTrace(FILE *TraceFILE, char *zTracePrompt){
+ yyTraceFILE = TraceFILE;
+ yyTracePrompt = zTracePrompt;
+ if( yyTraceFILE==0 ) yyTracePrompt = 0;
+ else if( yyTracePrompt==0 ) yyTraceFILE = 0;
+}
+#endif /* NDEBUG */
+
+#ifndef NDEBUG
+/* For tracing shifts, the names of all terminals and nonterminals
+** are required. The following table supplies these names */
+static const char *const yyTokenName[] = {
+%%
+};
+#endif /* NDEBUG */
+
+#ifndef NDEBUG
+/* For tracing reduce actions, the names of all rules are required.
+*/
+static const char *const yyRuleName[] = {
+%%
+};
+#endif /* NDEBUG */
+
+
+#if YYSTACKDEPTH<=0
+/*
+** Try to increase the size of the parser stack.
+*/
+static void yyGrowStack(yyParser *p){
+ int newSize;
+ yyStackEntry *pNew;
+
+ newSize = p->yystksz*2 + 100;
+ pNew = realloc(p->yystack, newSize*sizeof(pNew[0]));
+ if( pNew ){
+ p->yystack = pNew;
+ p->yystksz = newSize;
+#ifndef NDEBUG
+ if( yyTraceFILE ){
+ fprintf(yyTraceFILE,"%sStack grows to %d entries!\n",
+ yyTracePrompt, p->yystksz);
+ }
+#endif
+ }
+}
+#endif
+
+/*
+** This function allocates a new parser.
+** The only argument is a pointer to a function which works like
+** malloc.
+**
+** Inputs:
+** A pointer to the function used to allocate memory.
+**
+** Outputs:
+** A pointer to a parser. This pointer is used in subsequent calls
+** to Parse and ParseFree.
+*/
+void *ParseAlloc(void *(*mallocProc)(size_t)){
+ yyParser *pParser;
+ pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) );
+ if( pParser ){
+ pParser->yyidx = -1;
+#ifdef YYTRACKMAXSTACKDEPTH
+ pParser->yyidxMax = 0;
+#endif
+#if YYSTACKDEPTH<=0
+ pParser->yystack = NULL;
+ pParser->yystksz = 0;
+ yyGrowStack(pParser);
+#endif
+ }
+ return pParser;
+}
+
+/* The following function deletes the value associated with a
+** symbol. The symbol can be either a terminal or nonterminal.
+** "yymajor" is the symbol code, and "yypminor" is a pointer to
+** the value.
+*/
+static void yy_destructor(
+ yyParser *yypParser, /* The parser */
+ YYCODETYPE yymajor, /* Type code for object to destroy */
+ YYMINORTYPE *yypminor /* The object to be destroyed */
+){
+ ParseARG_FETCH;
+ switch( yymajor ){
+ /* Here is inserted the actions which take place when a
+ ** terminal or non-terminal is destroyed. This can happen
+ ** when the symbol is popped from the stack during a
+ ** reduce or during error processing or when a parser is
+ ** being destroyed before it is finished parsing.
+ **
+ ** Note: during a reduce, the only symbols destroyed are those
+ ** which appear on the RHS of the rule, but which are not used
+ ** inside the C code.
+ */
+%%
+ default: break; /* If no destructor action specified: do nothing */
+ }
+}
+
+/*
+** Pop the parser's stack once.
+**
+** If there is a destructor routine associated with the token which
+** is popped from the stack, then call it.
+**
+** Return the major token number for the symbol popped.
+*/
+static int yy_pop_parser_stack(yyParser *pParser){
+ YYCODETYPE yymajor;
+ yyStackEntry *yytos = &pParser->yystack[pParser->yyidx];
+
+ if( pParser->yyidx<0 ) return 0;
+#ifndef NDEBUG
+ if( yyTraceFILE && pParser->yyidx>=0 ){
+ fprintf(yyTraceFILE,"%sPopping %s\n",
+ yyTracePrompt,
+ yyTokenName[yytos->major]);
+ }
+#endif
+ yymajor = yytos->major;
+ yy_destructor(pParser, yymajor, &yytos->minor);
+ pParser->yyidx--;
+ return yymajor;
+}
+
+/*
+** Deallocate and destroy a parser. Destructors are all called for
+** all stack elements before shutting the parser down.
+**
+** Inputs:
+** <ul>
+** <li> A pointer to the parser. This should be a pointer
+** obtained from ParseAlloc.
+** <li> A pointer to a function used to reclaim memory obtained
+** from malloc.
+** </ul>
+*/
+void ParseFree(
+ void *p, /* The parser to be deleted */
+ void (*freeProc)(void*) /* Function used to reclaim memory */
+){
+ yyParser *pParser = (yyParser*)p;
+ if( pParser==0 ) return;
+ while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser);
+#if YYSTACKDEPTH<=0
+ free(pParser->yystack);
+#endif
+ (*freeProc)((void*)pParser);
+}
+
+/*
+** Return the peak depth of the stack for a parser.
+*/
+#ifdef YYTRACKMAXSTACKDEPTH
+int ParseStackPeak(void *p){
+ yyParser *pParser = (yyParser*)p;
+ return pParser->yyidxMax;
+}
+#endif
+
+/*
+** Find the appropriate action for a parser given the terminal
+** look-ahead token iLookAhead.
+**
+** If the look-ahead token is YYNOCODE, then check to see if the action is
+** independent of the look-ahead. If it is, return the action, otherwise
+** return YY_NO_ACTION.
+*/
+static int yy_find_shift_action(
+ yyParser *pParser, /* The parser */
+ YYCODETYPE iLookAhead /* The look-ahead token */
+){
+ int i;
+ int stateno = pParser->yystack[pParser->yyidx].stateno;
+
+ if( stateno>YY_SHIFT_COUNT
+ || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){
+ return yy_default[stateno];
+ }
+ assert( iLookAhead!=YYNOCODE );
+ i += iLookAhead;
+ if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){
+ if( iLookAhead>0 ){
+#ifdef YYFALLBACK
+ YYCODETYPE iFallback; /* Fallback token */
+ if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
+ && (iFallback = yyFallback[iLookAhead])!=0 ){
+#ifndef NDEBUG
+ if( yyTraceFILE ){
+ fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
+ yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
+ }
+#endif
+ return yy_find_shift_action(pParser, iFallback);
+ }
+#endif
+#ifdef YYWILDCARD
+ {
+ int j = i - iLookAhead + YYWILDCARD;
+ if(
+#if YY_SHIFT_MIN+YYWILDCARD<0
+ j>=0 &&
+#endif
+#if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT
+ j<YY_ACTTAB_COUNT &&
+#endif
+ yy_lookahead[j]==YYWILDCARD
+ ){
+#ifndef NDEBUG
+ if( yyTraceFILE ){
+ fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n",
+ yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]);
+ }
+#endif /* NDEBUG */
+ return yy_action[j];
+ }
+ }
+#endif /* YYWILDCARD */
+ }
+ return yy_default[stateno];
+ }else{
+ return yy_action[i];
+ }
+}
+
+/*
+** Find the appropriate action for a parser given the non-terminal
+** look-ahead token iLookAhead.
+**
+** If the look-ahead token is YYNOCODE, then check to see if the action is
+** independent of the look-ahead. If it is, return the action, otherwise
+** return YY_NO_ACTION.
+*/
+static int yy_find_reduce_action(
+ int stateno, /* Current state number */
+ YYCODETYPE iLookAhead /* The look-ahead token */
+){
+ int i;
+#ifdef YYERRORSYMBOL
+ if( stateno>YY_REDUCE_COUNT ){
+ return yy_default[stateno];
+ }
+#else
+ assert( stateno<=YY_REDUCE_COUNT );
+#endif
+ i = yy_reduce_ofst[stateno];
+ assert( i!=YY_REDUCE_USE_DFLT );
+ assert( iLookAhead!=YYNOCODE );
+ i += iLookAhead;
+#ifdef YYERRORSYMBOL
+ if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){
+ return yy_default[stateno];
+ }
+#else
+ assert( i>=0 && i<YY_ACTTAB_COUNT );
+ assert( yy_lookahead[i]==iLookAhead );
+#endif
+ return yy_action[i];
+}
+
+/*
+** The following routine is called if the stack overflows.
+*/
+static void yyStackOverflow(yyParser *yypParser, YYMINORTYPE *yypMinor){
+ ParseARG_FETCH;
+ yypParser->yyidx--;
+#ifndef NDEBUG
+ if( yyTraceFILE ){
+ fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
+ }
+#endif
+ while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
+ /* Here code is inserted which will execute if the parser
+ ** stack every overflows */
+%%
+ ParseARG_STORE; /* Suppress warning about unused %extra_argument var */
+}
+
+/*
+** Perform a shift action.
+*/
+static void yy_shift(
+ yyParser *yypParser, /* The parser to be shifted */
+ int yyNewState, /* The new state to shift in */
+ int yyMajor, /* The major token to shift in */
+ YYMINORTYPE *yypMinor /* Pointer to the minor token to shift in */
+){
+ yyStackEntry *yytos;
+ yypParser->yyidx++;
+#ifdef YYTRACKMAXSTACKDEPTH
+ if( yypParser->yyidx>yypParser->yyidxMax ){
+ yypParser->yyidxMax = yypParser->yyidx;
+ }
+#endif
+#if YYSTACKDEPTH>0
+ if( yypParser->yyidx>=YYSTACKDEPTH ){
+ yyStackOverflow(yypParser, yypMinor);
+ return;
+ }
+#else
+ if( yypParser->yyidx>=yypParser->yystksz ){
+ yyGrowStack(yypParser);
+ if( yypParser->yyidx>=yypParser->yystksz ){
+ yyStackOverflow(yypParser, yypMinor);
+ return;
+ }
+ }
+#endif
+ yytos = &yypParser->yystack[yypParser->yyidx];
+ yytos->stateno = (YYACTIONTYPE)yyNewState;
+ yytos->major = (YYCODETYPE)yyMajor;
+ yytos->minor = *yypMinor;
+#ifndef NDEBUG
+ if( yyTraceFILE && yypParser->yyidx>0 ){
+ int i;
+ fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState);
+ fprintf(yyTraceFILE,"%sStack:",yyTracePrompt);
+ for(i=1; i<=yypParser->yyidx; i++)
+ fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]);
+ fprintf(yyTraceFILE,"\n");
+ }
+#endif
+}
+
+/* The following table contains information about every rule that
+** is used during the reduce.
+*/
+static const struct {
+ YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */
+ unsigned char nrhs; /* Number of right-hand side symbols in the rule */
+} yyRuleInfo[] = {
+%%
+};
+
+static void yy_accept(yyParser*); /* Forward Declaration */
+
+/*
+** Perform a reduce action and the shift that must immediately
+** follow the reduce.
+*/
+static void yy_reduce(
+ yyParser *yypParser, /* The parser */
+ int yyruleno /* Number of the rule by which to reduce */
+){
+ int yygoto; /* The next state */
+ int yyact; /* The next action */
+ YYMINORTYPE yygotominor; /* The LHS of the rule reduced */
+ yyStackEntry *yymsp; /* The top of the parser's stack */
+ int yysize; /* Amount to pop the stack */
+ ParseARG_FETCH;
+ yymsp = &yypParser->yystack[yypParser->yyidx];
+#ifndef NDEBUG
+ if( yyTraceFILE && yyruleno>=0
+ && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){
+ fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
+ yyRuleName[yyruleno]);
+ }
+#endif /* NDEBUG */
+
+ /* Silence complaints from purify about yygotominor being uninitialized
+ ** in some cases when it is copied into the stack after the following
+ ** switch. yygotominor is uninitialized when a rule reduces that does
+ ** not set the value of its left-hand side nonterminal. Leaving the
+ ** value of the nonterminal uninitialized is utterly harmless as long
+ ** as the value is never used. So really the only thing this code
+ ** accomplishes is to quieten purify.
+ **
+ ** 2007-01-16: The wireshark project (www.wireshark.org) reports that
+ ** without this code, their parser segfaults. I'm not sure what there
+ ** parser is doing to make this happen. This is the second bug report
+ ** from wireshark this week. Clearly they are stressing Lemon in ways
+ ** that it has not been previously stressed... (SQLite ticket #2172)
+ */
+ /*memset(&yygotominor, 0, sizeof(yygotominor));*/
+ yygotominor = yyzerominor;
+
+
+ switch( yyruleno ){
+ /* Beginning here are the reduction cases. A typical example
+ ** follows:
+ ** case 0:
+ ** #line <lineno> <grammarfile>
+ ** { ... } // User supplied code
+ ** #line <lineno> <thisfile>
+ ** break;
+ */
+%%
+ };
+ yygoto = yyRuleInfo[yyruleno].lhs;
+ yysize = yyRuleInfo[yyruleno].nrhs;
+ yypParser->yyidx -= yysize;
+ yyact = yy_find_reduce_action(yymsp[-yysize].stateno,(YYCODETYPE)yygoto);
+ if( yyact < YYNSTATE ){
+#ifdef NDEBUG
+ /* If we are not debugging and the reduce action popped at least
+ ** one element off the stack, then we can push the new element back
+ ** onto the stack here, and skip the stack overflow test in yy_shift().
+ ** That gives a significant speed improvement. */
+ if( yysize ){
+ yypParser->yyidx++;
+ yymsp -= yysize-1;
+ yymsp->stateno = (YYACTIONTYPE)yyact;
+ yymsp->major = (YYCODETYPE)yygoto;
+ yymsp->minor = yygotominor;
+ }else
+#endif
+ {
+ yy_shift(yypParser,yyact,yygoto,&yygotominor);
+ }
+ }else{
+ assert( yyact == YYNSTATE + YYNRULE + 1 );
+ yy_accept(yypParser);
+ }
+}
+
+/*
+** The following code executes when the parse fails
+*/
+#ifndef YYNOERRORRECOVERY
+static void yy_parse_failed(
+ yyParser *yypParser /* The parser */
+){
+ ParseARG_FETCH;
+#ifndef NDEBUG
+ if( yyTraceFILE ){
+ fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
+ }
+#endif
+ while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
+ /* Here code is inserted which will be executed whenever the
+ ** parser fails */
+%%
+ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */
+}
+#endif /* YYNOERRORRECOVERY */
+
+/*
+** The following code executes when a syntax error first occurs.
+*/
+static void yy_syntax_error(
+ yyParser *yypParser, /* The parser */
+ int yymajor, /* The major type of the error token */
+ YYMINORTYPE yyminor /* The minor type of the error token */
+){
+ ParseARG_FETCH;
+#define TOKEN (yyminor.yy0)
+%%
+ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */
+}
+
+/*
+** The following is executed when the parser accepts
+*/
+static void yy_accept(
+ yyParser *yypParser /* The parser */
+){
+ ParseARG_FETCH;
+#ifndef NDEBUG
+ if( yyTraceFILE ){
+ fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
+ }
+#endif
+ while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
+ /* Here code is inserted which will be executed whenever the
+ ** parser accepts */
+%%
+ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */
+}
+
+/* The main parser program.
+** The first argument is a pointer to a structure obtained from
+** "ParseAlloc" which describes the current state of the parser.
+** The second argument is the major token number. The third is
+** the minor token. The fourth optional argument is whatever the
+** user wants (and specified in the grammar) and is available for
+** use by the action routines.
+**
+** Inputs:
+** <ul>
+** <li> A pointer to the parser (an opaque structure.)
+** <li> The major token number.
+** <li> The minor token number.
+** <li> An option argument of a grammar-specified type.
+** </ul>
+**
+** Outputs:
+** None.
+*/
+void Parse(
+ void *yyp, /* The parser */
+ int yymajor, /* The major token code number */
+ ParseTOKENTYPE yyminor /* The value for the token */
+ ParseARG_PDECL /* Optional %extra_argument parameter */
+){
+ YYMINORTYPE yyminorunion;
+ int yyact; /* The parser action. */
+ int yyendofinput; /* True if we are at the end of input */
+#ifdef YYERRORSYMBOL
+ int yyerrorhit = 0; /* True if yymajor has invoked an error */
+#endif
+ yyParser *yypParser; /* The parser */
+
+ /* (re)initialize the parser, if necessary */
+ yypParser = (yyParser*)yyp;
+ if( yypParser->yyidx<0 ){
+#if YYSTACKDEPTH<=0
+ if( yypParser->yystksz <=0 ){
+ /*memset(&yyminorunion, 0, sizeof(yyminorunion));*/
+ yyminorunion = yyzerominor;
+ yyStackOverflow(yypParser, &yyminorunion);
+ return;
+ }
+#endif
+ yypParser->yyidx = 0;
+ yypParser->yyerrcnt = -1;
+ yypParser->yystack[0].stateno = 0;
+ yypParser->yystack[0].major = 0;
+ }
+ yyminorunion.yy0 = yyminor;
+ yyendofinput = (yymajor==0);
+ ParseARG_STORE;
+
+#ifndef NDEBUG
+ if( yyTraceFILE ){
+ fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]);
+ }
+#endif
+
+ do{
+ yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor);
+ if( yyact<YYNSTATE ){
+ assert( !yyendofinput ); /* Impossible to shift the $ token */
+ yy_shift(yypParser,yyact,yymajor,&yyminorunion);
+ yypParser->yyerrcnt--;
+ yymajor = YYNOCODE;
+ }else if( yyact < YYNSTATE + YYNRULE ){
+ yy_reduce(yypParser,yyact-YYNSTATE);
+ }else{
+ assert( yyact == YY_ERROR_ACTION );
+#ifdef YYERRORSYMBOL
+ int yymx;
+#endif
+#ifndef NDEBUG
+ if( yyTraceFILE ){
+ fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
+ }
+#endif
+#ifdef YYERRORSYMBOL
+ /* A syntax error has occurred.
+ ** The response to an error depends upon whether or not the
+ ** grammar defines an error token "ERROR".
+ **
+ ** This is what we do if the grammar does define ERROR:
+ **
+ ** * Call the %syntax_error function.
+ **
+ ** * Begin popping the stack until we enter a state where
+ ** it is legal to shift the error symbol, then shift
+ ** the error symbol.
+ **
+ ** * Set the error count to three.
+ **
+ ** * Begin accepting and shifting new tokens. No new error
+ ** processing will occur until three tokens have been
+ ** shifted successfully.
+ **
+ */
+ if( yypParser->yyerrcnt<0 ){
+ yy_syntax_error(yypParser,yymajor,yyminorunion);
+ }
+ yymx = yypParser->yystack[yypParser->yyidx].major;
+ if( yymx==YYERRORSYMBOL || yyerrorhit ){
+#ifndef NDEBUG
+ if( yyTraceFILE ){
+ fprintf(yyTraceFILE,"%sDiscard input token %s\n",
+ yyTracePrompt,yyTokenName[yymajor]);
+ }
+#endif
+ yy_destructor(yypParser, (YYCODETYPE)yymajor,&yyminorunion);
+ yymajor = YYNOCODE;
+ }else{
+ while(
+ yypParser->yyidx >= 0 &&
+ yymx != YYERRORSYMBOL &&
+ (yyact = yy_find_reduce_action(
+ yypParser->yystack[yypParser->yyidx].stateno,
+ YYERRORSYMBOL)) >= YYNSTATE
+ ){
+ yy_pop_parser_stack(yypParser);
+ }
+ if( yypParser->yyidx < 0 || yymajor==0 ){
+ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
+ yy_parse_failed(yypParser);
+ yymajor = YYNOCODE;
+ }else if( yymx!=YYERRORSYMBOL ){
+ YYMINORTYPE u2;
+ u2.YYERRSYMDT = 0;
+ yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2);
+ }
+ }
+ yypParser->yyerrcnt = 3;
+ yyerrorhit = 1;
+#elif defined(YYNOERRORRECOVERY)
+ /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to
+ ** do any kind of error recovery. Instead, simply invoke the syntax
+ ** error routine and continue going as if nothing had happened.
+ **
+ ** Applications can set this macro (for example inside %include) if
+ ** they intend to abandon the parse upon the first syntax error seen.
+ */
+ yy_syntax_error(yypParser,yymajor,yyminorunion);
+ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
+ yymajor = YYNOCODE;
+
+#else /* YYERRORSYMBOL is not defined */
+ /* This is what we do if the grammar does not define ERROR:
+ **
+ ** * Report an error message, and throw away the input token.
+ **
+ ** * If the input token is $, then fail the parse.
+ **
+ ** As before, subsequent error messages are suppressed until
+ ** three input tokens have been successfully shifted.
+ */
+ if( yypParser->yyerrcnt<=0 ){
+ yy_syntax_error(yypParser,yymajor,yyminorunion);
+ }
+ yypParser->yyerrcnt = 3;
+ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
+ if( yyendofinput ){
+ yy_parse_failed(yypParser);
+ }
+ yymajor = YYNOCODE;
+#endif
+ }
+ }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
+ return;
+}
diff --git a/modules/luci-base/src/plural_formula.y b/modules/luci-base/src/plural_formula.y
new file mode 100644
index 0000000000..1623f8b282
--- /dev/null
+++ b/modules/luci-base/src/plural_formula.y
@@ -0,0 +1,43 @@
+%name pluralParse
+%token_type {int}
+%extra_argument {struct parse_state *s}
+
+%right T_QMARK.
+%left T_OR.
+%left T_AND.
+%left T_EQ T_NE.
+%left T_LT T_LE T_GT T_GE.
+%left T_ADD T_SUB.
+%left T_MUL T_DIV T_MOD.
+%right T_NOT.
+%nonassoc T_COLON T_N T_LPAREN T_RPAREN.
+
+%include {
+#include <assert.h>
+
+struct parse_state {
+ int num;
+ int res;
+};
+}
+
+input ::= expr(A). { s->res = A; }
+
+expr(A) ::= expr(B) T_QMARK expr(C) T_COLON expr(D). { A = B ? C : D; }
+expr(A) ::= expr(B) T_OR expr(C). { A = B || C; }
+expr(A) ::= expr(B) T_AND expr(C). { A = B && C; }
+expr(A) ::= expr(B) T_EQ expr(C). { A = B == C; }
+expr(A) ::= expr(B) T_NE expr(C). { A = B != C; }
+expr(A) ::= expr(B) T_LT expr(C). { A = B < C; }
+expr(A) ::= expr(B) T_LE expr(C). { A = B <= C; }
+expr(A) ::= expr(B) T_GT expr(C). { A = B > C; }
+expr(A) ::= expr(B) T_GE expr(C). { A = B >= C; }
+expr(A) ::= expr(B) T_ADD expr(C). { A = B + C; }
+expr(A) ::= expr(B) T_SUB expr(C). { A = B - C; }
+expr(A) ::= expr(B) T_MUL expr(C). { A = B * C; }
+expr(A) ::= expr(B) T_DIV expr(C). { A = B / C; }
+expr(A) ::= expr(B) T_MOD expr(C). { A = B % C; }
+expr(A) ::= T_NOT expr(B). { A = !B; }
+expr(A) ::= T_N. { A = s->num; }
+expr(A) ::= T_NUM(B). { A = B; }
+expr(A) ::= T_LPAREN expr(B) T_RPAREN. { A = B; }
diff --git a/modules/luci-base/src/po2lmo.c b/modules/luci-base/src/po2lmo.c
index fd927cb52f..930ea12c7d 100644
--- a/modules/luci-base/src/po2lmo.c
+++ b/modules/luci-base/src/po2lmo.c
@@ -116,19 +116,30 @@ static void print_index(void *array, int n, FILE *out)
}
}
+enum fieldtype {
+ UNSPEC = 0,
+ MSG_CTXT = 1,
+ MSG_ID = 2,
+ MSG_ID_PLURAL = 3,
+ MSG_STR = 4
+};
+
int main(int argc, char *argv[])
{
char line[4096];
char key[4096];
char val[4096];
char tmp[4096];
- int state = 0;
int offset = 0;
int length = 0;
int n_entries = 0;
void *array = NULL;
lmo_entry_t *entry = NULL;
uint32_t key_id, val_id;
+ enum fieldtype type = UNSPEC, prev_type = UNSPEC;
+ int plural_num = -1, prev_plural_num = -1;
+ char *ctxt = NULL, *id = NULL, *p;
+ int eof, esc;
FILE *in;
FILE *out;
@@ -136,108 +147,154 @@ int main(int argc, char *argv[])
if( (argc != 3) || ((in = fopen(argv[1], "r")) == NULL) || ((out = fopen(argv[2], "w")) == NULL) )
usage(argv[0]);
- memset(line, 0, sizeof(key));
- memset(key, 0, sizeof(val));
- memset(val, 0, sizeof(val));
+ while (1) {
+ line[0] = 0;
+ eof = !fgets(line, sizeof(line), in);
- while( (NULL != fgets(line, sizeof(line), in)) || (state >= 2 && feof(in)) )
- {
- if( state == 0 && strstr(line, "msgid \"") == line )
- {
- switch(extract_string(line, key, sizeof(key)))
- {
- case -1:
- die("Syntax error in msgid");
- case 0:
- state = 1;
- break;
- default:
- state = 2;
- }
+ if (!strncmp(line, "msgctxt \"", 9)) {
+ free(ctxt);
+ type = MSG_CTXT;
+ ctxt = NULL;
}
- else if( state == 1 || state == 2 )
- {
- if( strstr(line, "msgstr \"") == line || state == 2 )
- {
- switch(extract_string(line, val, sizeof(val)))
- {
- case -1:
- state = 4;
- break;
- default:
- state = 3;
- }
- }
- else
- {
- switch(extract_string(line, tmp, sizeof(tmp)))
- {
- case -1:
- state = 2;
- break;
- default:
- strcat(key, tmp);
- }
+ else if (!strncmp(line, "msgid \"", 7)) {
+ if (prev_type != MSG_CTXT) {
+ free(ctxt);
+ ctxt = NULL;
}
+
+ free(id);
+ type = MSG_ID;
+ id = NULL;
}
- else if( state == 3 )
- {
- switch(extract_string(line, tmp, sizeof(tmp)))
- {
- case -1:
- state = 4;
- break;
- default:
- strcat(val, tmp);
- }
+ else if (!strncmp(line, "msgid_plural \"", 14)) {
+ type = MSG_ID_PLURAL;
}
+ else if (!strncmp(line, "msgstr \"", 8) || !strncmp(line, "msgstr[", 7)) {
+ type = MSG_STR;
- if( state == 4 )
- {
- if( strlen(key) > 0 && strlen(val) > 0 )
- {
- key_id = sfh_hash(key, strlen(key));
- val_id = sfh_hash(val, strlen(val));
+ if (line[6] == '[')
+ plural_num = strtoul(line + 7, NULL, 10);
+ else
+ plural_num = -1;
+ }
- if( key_id != val_id )
- {
- n_entries++;
- array = realloc(array, n_entries * sizeof(lmo_entry_t));
- entry = (lmo_entry_t *)array + n_entries - 1;
+ if (type != prev_type || plural_num != prev_plural_num || eof) {
+ switch (prev_type) {
+ case MSG_CTXT:
+ ctxt = strdup(val);
+ break;
- if (!array)
- die("Out of memory");
+ case MSG_ID:
+ id = strdup(val);
+ break;
+
+ case MSG_STR:
+ if (id && id[0] && val[0]) {
+ if (ctxt && ctxt[0] && prev_plural_num > -1)
+ snprintf(key, sizeof(key), "%s\1%s\2%d", ctxt, id, prev_plural_num);
+ else if (ctxt && ctxt[0])
+ snprintf(key, sizeof(key), "%s\1%s", ctxt, id);
+ else if (prev_plural_num > -1)
+ snprintf(key, sizeof(key), "%s\2%d", id, prev_plural_num);
+ else
+ snprintf(key, sizeof(key), "%s", id);
+
+ key_id = sfh_hash(key, strlen(key));
+ val_id = sfh_hash(val, strlen(val));
+
+ if (key_id != val_id) {
+ n_entries++;
+ array = realloc(array, n_entries * sizeof(lmo_entry_t));
+ entry = (lmo_entry_t *)array + n_entries - 1;
- entry->key_id = key_id;
- entry->val_id = val_id;
- entry->offset = offset;
- entry->length = strlen(val);
+ if (!array)
+ die("Out of memory");
- length = strlen(val) + ((4 - (strlen(val) % 4)) % 4);
+ entry->key_id = key_id;
+ entry->val_id = prev_plural_num + 1;
+ entry->offset = offset;
+ entry->length = strlen(val);
- print(val, length, 1, out);
- offset += length;
+ length = strlen(val) + ((4 - (strlen(val) % 4)) % 4);
+
+ print(val, length, 1, out);
+ offset += length;
+ }
}
+ else if (id && id[0] == 0) {
+ for (id = val, p = val; *p; p++) {
+ if (esc) {
+ if (*p == 'n') {
+ p[-1] = 0;
+
+ if (!strncasecmp(id, "Plural-Forms: ", 14)) {
+ id += 14;
+
+ n_entries++;
+ array = realloc(array, n_entries * sizeof(lmo_entry_t));
+ entry = (lmo_entry_t *)array + n_entries - 1;
+
+ if (!array)
+ die("Out of memory");
+
+ entry->key_id = 0;
+ entry->val_id = 0;
+ entry->offset = offset;
+ entry->length = strlen(id);
+
+ length = strlen(id) + ((4 - (strlen(id) % 4)) % 4);
+
+ print(id, length, 1, out);
+ offset += length;
+ }
+ }
+
+ id = p + 1;
+ esc = 0;
+ }
+ else if (*p == '\\') {
+ esc = 1;
+ }
+ }
+
+ id = NULL;
+ }
+
+ break;
+
+ default:
+ break;
}
- state = 0;
- memset(key, 0, sizeof(key));
- memset(val, 0, sizeof(val));
+ val[0] = 0;
+ prev_type = type;
+ prev_plural_num = plural_num;
}
- memset(line, 0, sizeof(line));
+ if (eof)
+ break;
+
+ if (prev_type != UNSPEC) {
+ switch (extract_string(line, tmp, sizeof(tmp))) {
+ case -1:
+ type = UNSPEC;
+ plural_num = -1;
+ break;
+
+ default:
+ strcat(val, tmp);
+ }
+ }
}
print_index(array, n_entries, out);
- if( offset > 0 )
- {
+ if (offset > 0) {
print_uint32(offset, out);
fsync(fileno(out));
fclose(out);
}
- else
- {
+ else {
fclose(out);
unlink(argv[2]);
}
diff --git a/modules/luci-base/src/template_lmo.c b/modules/luci-base/src/template_lmo.c
index f7a118c9bb..8634bc4bf3 100644
--- a/modules/luci-base/src/template_lmo.c
+++ b/modules/luci-base/src/template_lmo.c
@@ -17,6 +17,7 @@
*/
#include "template_lmo.h"
+#include "plural_formula.h"
/*
* Hash function from http://www.azillionmonkeys.com/qed/hash.html
@@ -69,17 +70,51 @@ uint32_t sfh_hash(const char *data, int len)
return hash;
}
-uint32_t lmo_canon_hash(const char *str, int len)
+uint32_t lmo_canon_hash(const char *str, int len,
+ const char *ctx, int ctxlen, int plural)
{
char res[4096];
- char *ptr, prev;
+ char *ptr, *end, prev;
int off;
- if (!str || len >= sizeof(res))
+ if (!str)
return 0;
- for (prev = ' ', ptr = res, off = 0; off < len; prev = *str, off++, str++)
+ ptr = res;
+ end = res + sizeof(res);
+
+ if (ctx)
+ {
+ for (prev = ' ', off = 0; off < ctxlen; prev = *ctx, off++, ctx++)
+ {
+ if (ptr >= end)
+ return 0;
+
+ if (isspace(*ctx))
+ {
+ if (!isspace(prev))
+ *ptr++ = ' ';
+ }
+ else
+ {
+ *ptr++ = *ctx;
+ }
+ }
+
+ if ((ptr > res) && isspace(*(ptr-1)))
+ ptr--;
+
+ if (ptr >= end)
+ return 0;
+
+ *ptr++ = '\1';
+ }
+
+ for (prev = ' ', off = 0; off < len; prev = *str, off++, str++)
{
+ if (ptr >= end)
+ return 0;
+
if (isspace(*str))
{
if (!isspace(prev))
@@ -94,6 +129,14 @@ uint32_t lmo_canon_hash(const char *str, int len)
if ((ptr > res) && isspace(*(ptr-1)))
ptr--;
+ if (plural > -1)
+ {
+ if (plural >= 100 || ptr + 3 >= end)
+ return 0;
+
+ ptr += snprintf(ptr, 3, "\2%d", plural);
+ }
+
return sfh_hash(res, ptr - res);
}
@@ -277,8 +320,194 @@ static lmo_entry_t * lmo_find_entry(lmo_archive_t *ar, uint32_t hash)
return NULL;
}
+void *pluralParseAlloc(void *(*)(size_t));
+void pluralParse(void *, int, int, void *);
+void pluralParseFree(void *, void (*)(void *));
+
+static int lmo_eval_plural(const char *expr, int len, int val)
+{
+ struct { int num; int res; } s = { .num = val, .res = -1 };
+ const char *p = NULL;
+ void *pParser = NULL;
+ int t, n;
+ char c;
+
+ while (len > 7) {
+ if (*expr == 'p') {
+ if (!strncmp(expr, "plural=", 7)) {
+ p = expr + 7;
+ len -= 7;
+ break;
+ }
+ }
+
+ expr++;
+ len--;
+ }
+
+ if (!p)
+ goto out;
+
+ pParser = pluralParseAlloc(malloc);
+
+ if (!pParser)
+ goto out;
+
+ while (len-- > 0) {
+ c = *p++;
+ t = -1;
+ n = 0;
+
+ switch (c) {
+ case ' ':
+ case '\t':
+ continue;
+
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ t = T_NUM;
+ n = c - '0';
+
+ while (*p >= '0' && *p <= '9') {
+ n *= 10;
+ n += *p - '0';
+ p++;
+ }
+
+ break;
+
+ case '=':
+ if (*p == '=') {
+ t = T_EQ;
+ p++;
+ }
+
+ break;
+
+ case '!':
+ if (*p == '=') {
+ t = T_NE;
+ p++;
+ }
+ else {
+ t = T_NOT;
+ }
+
+ break;
+
+ case '&':
+ if (*p == '&') {
+ t = T_AND;
+ p++;
+ }
+
+ break;
+
+ case '|':
+ if (*p == '|') {
+ t = T_OR;
+ p++;
+ }
+
+ break;
+
+ case '<':
+ if (*p == '=') {
+ t = T_LE;
+ p++;
+ }
+ else {
+ t = T_LT;
+ }
+
+ break;
+
+ case '>':
+ if (*p == '=') {
+ t = T_GE;
+ p++;
+ }
+ else {
+ t = T_GT;
+ }
+
+ break;
+
+ case '*':
+ t = T_MUL;
+ break;
+
+ case '/':
+ t = T_DIV;
+ break;
+
+ case '%':
+ t = T_MOD;
+ break;
+
+ case '+':
+ t = T_ADD;
+ break;
+
+ case '-':
+ t = T_SUB;
+ break;
+
+ case 'n':
+ t = T_N;
+ break;
+
+ case '?':
+ t = T_QMARK;
+ break;
+
+ case ':':
+ t = T_COLON;
+ break;
+
+ case '(':
+ t = T_LPAREN;
+ break;
+
+ case ')':
+ t = T_RPAREN;
+ break;
+
+ case ';':
+ case '\n':
+ case '\0':
+ t = 0;
+ break;
+ }
+
+ /* syntax error */
+ if (t < 0)
+ goto out;
+
+ pluralParse(pParser, t, n, &s);
+
+ /* eof */
+ if (t == 0)
+ break;
+ }
+
+ pluralParse(pParser, 0, 0, &s);
+
+out:
+ pluralParseFree(pParser, free);
+
+ return s.res;
+}
+
int lmo_translate(const char *key, int keylen, char **out, int *outlen)
{
+ return lmo_translate_ctxt(key, keylen, NULL, 0, out, outlen);
+}
+
+int lmo_translate_ctxt(const char *key, int keylen,
+ const char *ctx, int ctxlen,
+ char **out, int *outlen)
+{
uint32_t hash;
lmo_entry_t *e;
lmo_archive_t *ar;
@@ -286,7 +515,62 @@ int lmo_translate(const char *key, int keylen, char **out, int *outlen)
if (!key || !_lmo_active_catalog)
return -2;
- hash = lmo_canon_hash(key, keylen);
+ hash = lmo_canon_hash(key, keylen, ctx, ctxlen, -1);
+
+ if (hash > 0)
+ {
+ for (ar = _lmo_active_catalog->archives; ar; ar = ar->next)
+ {
+ if ((e = lmo_find_entry(ar, hash)) != NULL)
+ {
+ *out = ar->mmap + ntohl(e->offset);
+ *outlen = ntohl(e->length);
+ return 0;
+ }
+ }
+ }
+
+ return -1;
+}
+
+int lmo_translate_plural(int n, const char *skey, int skeylen,
+ const char *pkey, int pkeylen,
+ char **out, int *outlen)
+{
+ return lmo_translate_plural_ctxt(n, skey, skeylen, pkey, pkeylen,
+ NULL, 0, out, outlen);
+}
+
+int lmo_translate_plural_ctxt(int n, const char *skey, int skeylen,
+ const char *pkey, int pkeylen,
+ const char *ctx, int ctxlen,
+ char **out, int *outlen)
+{
+ int pid = -1;
+ uint32_t hash;
+ lmo_entry_t *e;
+ lmo_archive_t *ar;
+ const char *plural_formula;
+
+ if (!skey || !pkey || !_lmo_active_catalog)
+ return -2;
+
+ for (ar = _lmo_active_catalog->archives; ar; ar = ar->next) {
+ e = lmo_find_entry(ar, 0);
+
+ if (e != NULL) {
+ pid = lmo_eval_plural(ar->mmap + ntohl(e->offset), ntohl(e->length), n);
+ break;
+ }
+ }
+
+ if (pid == -1)
+ pid = (n != 1);
+
+ hash = lmo_canon_hash(skey, skeylen, ctx, ctxlen, pid);
+
+ if (hash == 0)
+ return -1;
for (ar = _lmo_active_catalog->archives; ar; ar = ar->next)
{
@@ -298,7 +582,18 @@ int lmo_translate(const char *key, int keylen, char **out, int *outlen)
}
}
- return -1;
+ if (n != 1)
+ {
+ *out = (char *)pkey;
+ *outlen = pkeylen;
+ }
+ else
+ {
+ *out = (char *)skey;
+ *outlen = skeylen;
+ }
+
+ return 0;
}
void lmo_iterate(lmo_iterate_cb_t cb, void *priv)
diff --git a/modules/luci-base/src/template_lmo.h b/modules/luci-base/src/template_lmo.h
index 587884ea3a..d6cba7bf49 100644
--- a/modules/luci-base/src/template_lmo.h
+++ b/modules/luci-base/src/template_lmo.h
@@ -76,7 +76,8 @@ typedef struct lmo_catalog lmo_catalog_t;
typedef void (*lmo_iterate_cb_t)(uint32_t, const char *, int, void *);
uint32_t sfh_hash(const char *data, int len);
-uint32_t lmo_canon_hash(const char *data, int len);
+uint32_t lmo_canon_hash(const char *data, int len,
+ const char *ctx, int ctxlen, int plural);
lmo_archive_t * lmo_open(const char *file);
void lmo_close(lmo_archive_t *ar);
@@ -88,6 +89,15 @@ extern lmo_catalog_t *_lmo_active_catalog;
int lmo_load_catalog(const char *lang, const char *dir);
int lmo_change_catalog(const char *lang);
int lmo_translate(const char *key, int keylen, char **out, int *outlen);
+int lmo_translate_ctxt(const char *key, int keylen,
+ const char *ctx, int ctxlen, char **out, int *outlen);
+int lmo_translate_plural(int n, const char *skey, int skeylen,
+ const char *pkey, int pkeylen,
+ char **out, int *outlen);
+int lmo_translate_plural_ctxt(int n, const char *skey, int skeylen,
+ const char *pkey, int pkeylen,
+ const char *ctx, int ctxlen,
+ char **out, int *outlen);
void lmo_iterate(lmo_iterate_cb_t cb, void *priv);
void lmo_close_catalog(const char *lang);
diff --git a/modules/luci-base/src/template_lualib.c b/modules/luci-base/src/template_lualib.c
index fbab2ccf6e..4efd9f1de6 100644
--- a/modules/luci-base/src/template_lualib.c
+++ b/modules/luci-base/src/template_lualib.c
@@ -148,12 +148,37 @@ static int template_L_get_translations(lua_State *L) {
}
static int template_L_translate(lua_State *L) {
- size_t len;
+ size_t len, ctxlen = 0;
char *tr;
int trlen;
const char *key = luaL_checklstring(L, 1, &len);
+ const char *ctx = luaL_optlstring(L, 2, NULL, &ctxlen);
+
+ switch (lmo_translate_ctxt(key, len, ctx, ctxlen, &tr, &trlen))
+ {
+ case 0:
+ lua_pushlstring(L, tr, trlen);
+ return 1;
+
+ case -1:
+ return 0;
+ }
+
+ lua_pushnil(L);
+ lua_pushstring(L, "no catalog loaded");
+ return 2;
+}
+
+static int template_L_ntranslate(lua_State *L) {
+ size_t slen, plen, ctxlen = 0;
+ char *tr;
+ int trlen;
+ int n = luaL_checkinteger(L, 1);
+ const char *skey = luaL_checklstring(L, 2, &slen);
+ const char *pkey = luaL_checklstring(L, 3, &plen);
+ const char *ctx = luaL_optlstring(L, 4, NULL, &ctxlen);
- switch (lmo_translate(key, len, &tr, &trlen))
+ switch (lmo_translate_plural_ctxt(n, skey, slen, pkey, plen, ctx, ctxlen, &tr, &trlen))
{
case 0:
lua_pushlstring(L, tr, trlen);
@@ -188,6 +213,7 @@ static const luaL_reg R[] = {
{ "change_catalog", template_L_change_catalog },
{ "get_translations", template_L_get_translations },
{ "translate", template_L_translate },
+ { "ntranslate", template_L_ntranslate },
{ "hash", template_L_hash },
{ NULL, NULL }
};
diff --git a/modules/luci-base/src/template_utils.c b/modules/luci-base/src/template_utils.c
index 0411932ce9..8580405e32 100644
--- a/modules/luci-base/src/template_utils.c
+++ b/modules/luci-base/src/template_utils.c
@@ -474,10 +474,26 @@ void luastr_escape(struct template_buffer *out, const char *s, unsigned int l,
void luastr_translate(struct template_buffer *out, const char *s, unsigned int l,
int escape_xml)
{
+ int trlen, idlen = l, ctxtlen = 0, esc = 0;
+ const char *p, *msgid = s, *msgctxt = NULL;
char *tr;
- int trlen;
- if (!lmo_translate(s, l, &tr, &trlen))
+ for (p = s; p < s + l; p++) {
+ if (esc) {
+ esc = 0;
+ }
+ else if (*p == '\\') {
+ esc = 1;
+ }
+ else if (*p == '|') {
+ idlen = p - s;
+ msgctxt = p + 1;
+ ctxtlen = s + l - msgctxt;
+ break;
+ }
+ }
+
+ if (!lmo_translate_ctxt(msgid, idlen, msgctxt, ctxtlen, &tr, &trlen))
luastr_escape(out, tr, trlen, escape_xml);
else
luastr_escape(out, s, l, escape_xml);
diff --git a/modules/luci-compat/luasrc/view/cbi/upload.htm b/modules/luci-compat/luasrc/view/cbi/upload.htm
index e610495380..9dbce9b047 100644
--- a/modules/luci-compat/luasrc/view/cbi/upload.htm
+++ b/modules/luci-compat/luasrc/view/cbi/upload.htm
@@ -7,7 +7,8 @@
show_hidden = self.show_hidden,
enable_remove = self.enable_remove,
enable_upload = self.enable_upload,
- root_directory = "/" --self.root_directory
+ root_directory = self.root_directory or "/",
+ initial_directory = self.initial_directory
}
}))%>></div>
diff --git a/modules/luci-mod-status/src/Makefile b/modules/luci-mod-status/src/Makefile
index d6ed8c6e46..90dcf74536 100644
--- a/modules/luci-mod-status/src/Makefile
+++ b/modules/luci-mod-status/src/Makefile
@@ -1,5 +1,5 @@
%.o: %.c
- $(CC) $(CPPFLAGS) $(CFLAGS) $(FPIC) -c -o $@ $<
+ $(CC) $(CPPFLAGS) $(CFLAGS) $(FPIC) -Wall -c -o $@ $<
clean:
rm -f luci-bwc *.o
diff --git a/modules/luci-mod-status/src/luci-bwc.c b/modules/luci-mod-status/src/luci-bwc.c
index dc68a2e4db..9a57fa23a8 100644
--- a/modules/luci-mod-status/src/luci-bwc.c
+++ b/modules/luci-mod-status/src/luci-bwc.c
@@ -29,9 +29,11 @@
#include <unistd.h>
#include <signal.h>
#include <endian.h>
+#include <dirent.h>
#include <sys/stat.h>
#include <sys/mman.h>
+#include <sys/types.h>
#include <arpa/inet.h>
#include <dlfcn.h>
@@ -49,11 +51,6 @@
#define DB_CN_FILE DB_PATH "/connections"
#define DB_LD_FILE DB_PATH "/load"
-#define IF_SCAN_PATTERN \
- " %[^ :]:%" SCNu64 " %" SCNu64 \
- " %*u %*u %*u %*u %*u %*u" \
- " %" SCNu64 " %" SCNu64
-
#define LD_SCAN_PATTERN \
"%f %f %f"
@@ -415,6 +412,7 @@ static int update_ldstat(uint16_t load1, uint16_t load5, uint16_t load15)
static int run_daemon(void)
{
+ DIR *dir;
FILE *info;
uint64_t rxb, txb, rxp, txp;
uint32_t udp, tcp, other;
@@ -422,15 +420,27 @@ static int run_daemon(void)
uint8_t rssi, noise;
float lf1, lf5, lf15;
char line[1024];
- char ifname[16];
+ char path[64];
+ char buf[32];
int i;
void *iw;
struct sigaction sa;
+ struct dirent *e;
struct stat s;
const char *ipc = stat("/proc/net/nf_conntrack", &s)
? "/proc/net/ip_conntrack" : "/proc/net/nf_conntrack";
+ const struct {
+ const char *file;
+ uint64_t *value;
+ } sysfs_stats[] = {
+ { "rx_packets", &rxp },
+ { "tx_packets", &txp },
+ { "rx_bytes", &rxb },
+ { "tx_bytes", &txb }
+ };
+
switch (fork())
{
case -1:
@@ -476,41 +486,39 @@ static int run_daemon(void)
memset(progname, 0, prognamelen);
snprintf(progname, prognamelen, "luci-bwc %d", countdown);
- if ((info = fopen("/proc/net/dev", "r")) != NULL)
+ dir = opendir("/sys/class/net");
+
+ if (dir)
{
- while (fgets(line, sizeof(line), info))
+ while ((e = readdir(dir)) != NULL)
{
- if (strchr(line, '|'))
+ if (iw && iw_update(iw, e->d_name, &rate, &rssi, &noise))
+ update_radiostat(e->d_name, rate, rssi, noise);
+
+ if (!strcmp(e->d_name, "lo"))
continue;
- if (sscanf(line, IF_SCAN_PATTERN, ifname, &rxb, &rxp, &txb, &txp))
+ for (i = 0; i < sizeof(sysfs_stats)/sizeof(sysfs_stats[0]); i++)
{
- if (strncmp(ifname, "lo", sizeof(ifname)))
- update_ifstat(ifname, rxb, rxp, txb, txp);
- }
- }
+ *sysfs_stats[i].value = 0;
- fclose(info);
- }
+ snprintf(path, sizeof(path), "/sys/class/net/%s/statistics/%s",
+ e->d_name, sysfs_stats[i].file);
- if (iw)
- {
- for (i = 0; i < 5; i++)
- {
-#define iw_checkif(pattern) \
- do { \
- snprintf(ifname, sizeof(ifname), pattern, i); \
- if (iw_update(iw, ifname, &rate, &rssi, &noise)) \
- { \
- update_radiostat(ifname, rate, rssi, noise); \
- continue; \
- } \
- } while(0)
-
- iw_checkif("wlan%d");
- iw_checkif("ath%d");
- iw_checkif("wl%d");
+ if ((info = fopen(path, "r")) != NULL)
+ {
+ memset(buf, 0, sizeof(buf));
+ fread(buf, 1, sizeof(buf) - 1, info);
+ fclose(info);
+
+ *sysfs_stats[i].value = (uint64_t)strtoull(buf, NULL, 10);
+ }
+ }
+
+ update_ifstat(e->d_name, rxb, rxp, txb, txp);
}
+
+ closedir(dir);
}
if ((info = fopen(ipc, "r")) != NULL)
@@ -528,11 +536,11 @@ static int run_daemon(void)
|| (strstr(line, "src=::1 ") && strstr(line, "dst=::1 ")))
continue;
- if (sscanf(line, "%*s %*d %s", ifname) || sscanf(line, "%s %*d", ifname))
+ if (sscanf(line, "%*s %*d %s", buf) || sscanf(line, "%s %*d", buf))
{
- if (!strcmp(ifname, "tcp"))
+ if (!strcmp(buf, "tcp"))
tcp++;
- else if (!strcmp(ifname, "udp"))
+ else if (!strcmp(buf, "udp"))
udp++;
else
other++;
diff --git a/modules/luci-mod-system/luasrc/controller/admin/system.lua b/modules/luci-mod-system/luasrc/controller/admin/system.lua
index 1e0bebb4f9..3563349f2a 100644
--- a/modules/luci-mod-system/luasrc/controller/admin/system.lua
+++ b/modules/luci-mod-system/luasrc/controller/admin/system.lua
@@ -22,7 +22,7 @@ function index()
entry({"admin", "system", "mounts"}, view("system/mounts"), _("Mount Points"), 50)
.file_depends = { "/sbin/block" }
- entry({"admin", "system", "leds"}, view("system/leds"), _("<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"), 60)
+ entry({"admin", "system", "leds"}, view("system/leds"), _("LED Configuration"), 60)
.file_depends = { "/sys/class/leds" }
entry({"admin", "system", "flash"}, view("system/flash"), _("Backup / Flash Firmware"), 70)