diff options
149 files changed, 5687 insertions, 7035 deletions
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm b/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm index b4b62db5f4..424a72f6fd 100644 --- a/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm +++ b/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm @@ -51,37 +51,37 @@ table.cbi-section-table td, <%- end %> <div class="cbi-section-descr"><%=self.description%></div> <div class="cbi-section-node"> - <table class="cbi-section-table"> - <tr class="cbi-section-table-titles"> + <div class="table cbi-section-table"> + <div class="tr cbi-section-table-titles"> <%- if self.sectionhead then -%> - <th class="cbi-section-table-cell"><%=self.sectionhead%></th> + <div class="th cbi-section-table-cell"><%=self.sectionhead%></div> <%- else -%> - <th> </th> + <div class="th"> </div> <%- end -%> <%- for i, k in pairs(self.children) do -%> - <th class="cbi-section-table-cell"<%=width(k)%>> + <div class="th cbi-section-table-cell"<%=width(k)%>> <%-=k.title-%> - </th> + </div> <%- end -%> - </tr> + </div> <%- local isempty = true for i, k in ipairs(self:cfgsections()) do section = k isempty = false scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" } -%> - <tr class="cbi-section-table-row" id="cbi-<%=self.config%>-<%=section%>"> - <th><%=k%></th> + <div class="tr cbi-section-table-row" id="cbi-<%=self.config%>-<%=section%>"> + <div class="th"><%=k%></div> <%- for k, node in ipairs(self.children) do node:render(section, scope or {}) end if not scope.cbid:match("adb_src_cat") then -%> - <td class="cbi-value-field"> </td> + <div class="td cbi-value-field"> </div> <%- end -%> - </tr> + </div> <%- end -%> - </table> + </div> </div> </fieldset> diff --git a/applications/luci-app-adblock/po/it/adblock.po b/applications/luci-app-adblock/po/it/adblock.po index 0a1b65ac36..7c64468e6a 100644 --- a/applications/luci-app-adblock/po/it/adblock.po +++ b/applications/luci-app-adblock/po/it/adblock.po @@ -17,6 +17,11 @@ msgstr "" msgid "-------" msgstr "" +msgid "" +"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less " +"than 64 MB free RAM, please only select a few of them!" +msgstr "" + msgid "Adblock" msgstr "Adblock" @@ -35,9 +40,6 @@ msgstr "Tempo addizionale in secondi di attesa prima che adblock si avvii." msgid "Advanced" msgstr "Avanzato" -msgid "Available blocklist sources." -msgstr "Fonti lista di blocco disponibili." - msgid "Backup Directory" msgstr "Directory del Backup" @@ -52,9 +54,7 @@ msgid "" "domains except those listed in the whitelist file.<br />" msgstr "" -msgid "" -"Caution: To prevent OOM exceptions on low memory devices with less than 64 " -"MB free RAM, please do not select more than five blocklist sources!" +msgid "Categories" msgstr "" msgid "" @@ -100,12 +100,6 @@ msgstr "" msgid "Download Utility (SSL Library)" msgstr "" -msgid "" -"During opkg package installation use the '--force-maintainer' option to " -"overwrite the pre-existing config file or download a fresh default config " -"from <a href=\"%s\" target=\"_blank\">here</a>" -msgstr "" - msgid "Edit Blacklist" msgstr "Modifica Lista Nera" @@ -182,13 +176,6 @@ msgid "Last Run" msgstr "Ultimo Avvio" msgid "" -"List URLs and Shallalist category selections are configurable in the " -"'Advanced' section.<br />" -msgstr "" -"Le selezioni degli URL delle liste e categorie Shallalist sono configurabili " -"nella sezione 'Avanzato'.<br />" - -msgid "" "List of available network interfaces. Usually the startup will be triggered " "by the 'wan' interface.<br />" msgstr "" @@ -239,9 +226,6 @@ msgid "" "Please note: this needs additional 'msmtp' package installation and setup." msgstr "" -msgid "Please update your adblock config file to use this package.<br />" -msgstr "" - msgid "Query" msgstr "Interrogazione" @@ -296,10 +280,8 @@ msgstr "" msgid "Target directory for the generated blocklist 'adb_list.overall'." msgstr "Directory per la lista di blocco generata 'adb_list.overall'." -msgid "The file size is too large for online editing in LuCI (> 512 KB)." +msgid "The file size is too large for online editing in LuCI (≥ 100 KB)." msgstr "" -"La grandezza del file è troppo grande per modificarla online in LuCI (> " -"512 KB)." msgid "" "This form allows you to modify the content of the adblock blacklist (%s)." @@ -336,9 +318,6 @@ msgstr "" "Questo form mostra l'output del registro, prefiltrato per messaggi relativi " "solo ad adblock." -msgid "This section contains no values yet" -msgstr "" - msgid "" "To overwrite the default path use the 'DNS Directory' option in the extra " "section below." @@ -392,6 +371,21 @@ msgstr "in pausa" msgid "running" msgstr "" +#~ msgid "Available blocklist sources." +#~ msgstr "Fonti lista di blocco disponibili." + +#~ msgid "" +#~ "List URLs and Shallalist category selections are configurable in the " +#~ "'Advanced' section.<br />" +#~ msgstr "" +#~ "Le selezioni degli URL delle liste e categorie Shallalist sono " +#~ "configurabili nella sezione 'Avanzato'.<br />" + +#~ msgid "The file size is too large for online editing in LuCI (> 512 KB)." +#~ msgstr "" +#~ "La grandezza del file è troppo grande per modificarla online in LuCI " +#~ "(> 512 KB)." + #~ msgid "" #~ "For SSL protected blocklist sources you need a suitable SSL library, e.g. " #~ "'libustream-ssl' or the wget 'built-in'." diff --git a/applications/luci-app-adblock/po/ja/adblock.po b/applications/luci-app-adblock/po/ja/adblock.po index dfd72cbf6c..5276f69626 100644 --- a/applications/luci-app-adblock/po/ja/adblock.po +++ b/applications/luci-app-adblock/po/ja/adblock.po @@ -8,7 +8,7 @@ msgstr "" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.0.7\n" "Language: ja\n" msgid "'Jail' Blocklist Creation" @@ -17,6 +17,13 @@ msgstr "'Jail' ブãƒãƒƒã‚¯ãƒªã‚¹ãƒˆã®ä½œæˆ" msgid "-------" msgstr "(利用ä¸å¯ï¼‰" +msgid "" +"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less " +"than 64 MB free RAM, please only select a few of them!" +msgstr "" +"<b>è¦å‘Š:</b> RAM ã®ç©ºã容é‡ãŒ 64MB ã«æº€ãŸãªã„メモリー容é‡ã®å°ã•ã„デãƒã‚¤ã‚¹ã§" +"ã¯ã€ OutOfMemory (OOM) 例外を防ããŸã‚ã«å°‘æ•°ã®ã¿ã‚’é¸æŠžã—ã¦ãã ã•ã„。" + msgid "Adblock" msgstr "Adblock" @@ -35,9 +42,6 @@ msgstr "Adblock ã®å‡¦ç†ãŒé–‹å§‹ã•ã‚Œã‚‹ã¾ã§ã®ã€è¿½åŠ ã®é…延時間(ç msgid "Advanced" msgstr "詳細è¨å®š" -msgid "Available blocklist sources." -msgstr "利用å¯èƒ½ãªãƒ–ãƒãƒƒã‚¯ãƒªã‚¹ãƒˆæ供元ã§ã™ã€‚" - msgid "Backup Directory" msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—å…ˆ ディレクトリ" @@ -54,13 +58,8 @@ msgstr "" "ホワイトリストã«å˜åœ¨ã—ãªã„全ドメインã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’ブãƒãƒƒã‚¯ã™ã‚‹ãŸã‚ã«ã€è¿½åŠ 㧠" "'Jail' リスト (/tmp/adb_list.jail) を作æˆã—ã¾ã™ã€‚<br />" -msgid "" -"Caution: To prevent OOM exceptions on low memory devices with less than 64 " -"MB free RAM, please do not select more than five blocklist sources!" -msgstr "" -"è¦å‘Š: RAM ã®ç©ºã容é‡ãŒ 64MB ã«æº€ãŸãªã„メモリー容é‡ã®å°ã•ã„デãƒã‚¤ã‚¹ã§ã¯ã€ " -"OutOfMemory (OOM) 例外を防ããŸã‚ã«ã€5個よりも多ãã®ãƒªã‚¹ãƒˆã‚’é¸æŠžã—ãªã„よã†ã«ã—" -"ã¦ãã ã•ã„。" +msgid "Categories" +msgstr "カテゴリー" msgid "" "Choose 'none' to disable automatic startups, 'timed' to use a classic " @@ -109,15 +108,6 @@ msgstr "ダウンãƒãƒ¼ãƒ‰ ユーティリティ" msgid "Download Utility (SSL Library)" msgstr "ダウンãƒãƒ¼ãƒ‰ ユーティリティ(SSL ライブラリ)" -msgid "" -"During opkg package installation use the '--force-maintainer' option to " -"overwrite the pre-existing config file or download a fresh default config " -"from <a href=\"%s\" target=\"_blank\">here</a>" -msgstr "" -"opkg ã§ãƒ‘ッケージをインストールã™ã‚‹éš›ã« '--force-maintainer' オプションを使用" -"ã—ã¦æ—¢å˜ã®è¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’上書ãã™ã‚‹ã‹ã€ <a href=\"%s\" target=\"_blank\">ã“ã“" -"</a> ã‹ã‚‰ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®è¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¦ãã ã•ã„。" - msgid "Edit Blacklist" msgstr "ブラックリストã®ç·¨é›†" @@ -202,13 +192,6 @@ msgid "Last Run" msgstr "最終実行" msgid "" -"List URLs and Shallalist category selections are configurable in the " -"'Advanced' section.<br />" -msgstr "" -"リスト㮠URL åŠã³ \"Shalla\" リストã®ã‚«ãƒ†ã‚´ãƒªãƒ¼è¨å®šã¯ã€'詳細è¨å®š' セクション" -"ã§è¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚<br />" - -msgid "" "List of available network interfaces. Usually the startup will be triggered " "by the 'wan' interface.<br />" msgstr "" @@ -260,11 +243,6 @@ msgid "" msgstr "" "注æ„: ã“ã‚Œã«ã¯ã€è¿½åŠ 㧠'msmtp' ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¨ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ãŒå¿…è¦ã§ã™ã€‚" -msgid "Please update your adblock config file to use this package.<br />" -msgstr "" -"ã“ã®ãƒ‘ッケージを使用ã™ã‚‹ã«ã¯ã€æ—¢å˜ã® Adblock è¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’æ›´æ–°ã—ã¦ãã ã•ã„。" -"<br />" - msgid "Query" msgstr "検索" @@ -326,10 +304,10 @@ msgstr "" msgid "Target directory for the generated blocklist 'adb_list.overall'." msgstr "生æˆã•ã‚ŒãŸãƒ–ãƒãƒƒã‚¯ãƒªã‚¹ãƒˆ 'adb_list.overall' ã®ä¿å˜å…ˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã™ã€‚" -msgid "The file size is too large for online editing in LuCI (> 512 KB)." +msgid "The file size is too large for online editing in LuCI (≥ 100 KB)." msgstr "" -"ファイル サイズãŒå¤§ãã™ãŽã‚‹ï¼ˆ512 KB超)ãŸã‚〠LuCI 上ã§ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ç·¨é›†ã§ãã¾ã›" -"ん。" +"LuCI上ã§ã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ç·¨é›†ã‚’è¡Œã†ã«ã¯ã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºãŒå¤§ãã™ãŽã¾ã™ (≥ 100 " +"KB)。" msgid "" "This form allows you to modify the content of the adblock blacklist (%s)." @@ -366,9 +344,6 @@ msgstr "" "ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã«ã¯ã€ã‚·ã‚¹ãƒ†ãƒ ãƒã‚°å†…ã® Adblock ã«é–¢é€£ã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ã¿ãŒè¡¨ç¤ºã•ã‚Œ" "ã¾ã™ã€‚" -msgid "This section contains no values yet" -msgstr "ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã«ã¯ã€ã¾ã 値ãŒã‚ã‚Šã¾ã›ã‚“" - msgid "" "To overwrite the default path use the 'DNS Directory' option in the extra " "section below." diff --git a/applications/luci-app-adblock/po/pt-br/adblock.po b/applications/luci-app-adblock/po/pt-br/adblock.po index c0d9d816db..6e8098a395 100644 --- a/applications/luci-app-adblock/po/pt-br/adblock.po +++ b/applications/luci-app-adblock/po/pt-br/adblock.po @@ -18,6 +18,11 @@ msgstr "" msgid "-------" msgstr "" +msgid "" +"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less " +"than 64 MB free RAM, please only select a few of them!" +msgstr "" + msgid "Adblock" msgstr "Adblock" @@ -38,9 +43,6 @@ msgstr "" msgid "Advanced" msgstr "Avançado" -msgid "Available blocklist sources." -msgstr "Fontes de listas de bloqueio disponÃveis." - msgid "Backup Directory" msgstr "Diretório da cópia de segurança" @@ -55,9 +57,7 @@ msgid "" "domains except those listed in the whitelist file.<br />" msgstr "" -msgid "" -"Caution: To prevent OOM exceptions on low memory devices with less than 64 " -"MB free RAM, please do not select more than five blocklist sources!" +msgid "Categories" msgstr "" msgid "" @@ -101,12 +101,6 @@ msgstr "" msgid "Download Utility (SSL Library)" msgstr "Utilitário de Download (Biblioteca SSL)" -msgid "" -"During opkg package installation use the '--force-maintainer' option to " -"overwrite the pre-existing config file or download a fresh default config " -"from <a href=\"%s\" target=\"_blank\">here</a>" -msgstr "" - msgid "Edit Blacklist" msgstr "Editar Lista de Bloqueio" @@ -182,11 +176,6 @@ msgid "Last Run" msgstr "" msgid "" -"List URLs and Shallalist category selections are configurable in the " -"'Advanced' section.<br />" -msgstr "" - -msgid "" "List of available network interfaces. Usually the startup will be triggered " "by the 'wan' interface.<br />" msgstr "" @@ -232,9 +221,6 @@ msgid "" "Please note: this needs additional 'msmtp' package installation and setup." msgstr "" -msgid "Please update your adblock config file to use this package.<br />" -msgstr "" - msgid "Query" msgstr "Consulta" @@ -288,9 +274,8 @@ msgstr "" msgid "Target directory for the generated blocklist 'adb_list.overall'." msgstr "" -msgid "The file size is too large for online editing in LuCI (> 512 KB)." +msgid "The file size is too large for online editing in LuCI (≥ 100 KB)." msgstr "" -"O tamanho do arquivo é muito grande para edição online no LuCI (> 512 KB)." msgid "" "This form allows you to modify the content of the adblock blacklist (%s)." @@ -327,9 +312,6 @@ msgstr "" "Esse formulário mostra a saÃda do syslog, pré-filtrado para mensagens do " "adblock apenas." -msgid "This section contains no values yet" -msgstr "" - msgid "" "To overwrite the default path use the 'DNS Directory' option in the extra " "section below." @@ -381,6 +363,14 @@ msgstr "" msgid "running" msgstr "" +#~ msgid "Available blocklist sources." +#~ msgstr "Fontes de listas de bloqueio disponÃveis." + +#~ msgid "The file size is too large for online editing in LuCI (> 512 KB)." +#~ msgstr "" +#~ "O tamanho do arquivo é muito grande para edição online no LuCI (> 512 " +#~ "KB)." + #~ msgid "" #~ "For SSL protected blocklist sources you need a suitable SSL library, e.g. " #~ "'libustream-ssl' or the wget 'built-in'." diff --git a/applications/luci-app-adblock/po/ru/adblock.po b/applications/luci-app-adblock/po/ru/adblock.po index 17f39fdd87..24f42a7760 100644 --- a/applications/luci-app-adblock/po/ru/adblock.po +++ b/applications/luci-app-adblock/po/ru/adblock.po @@ -21,6 +21,11 @@ msgstr "Создание Черного<br />ÑпиÑка 'Jail'" msgid "-------" msgstr "-------" +msgid "" +"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less " +"than 64 MB free RAM, please only select a few of them!" +msgstr "" + msgid "Adblock" msgstr "AdBlock" @@ -39,9 +44,6 @@ msgstr "Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð·Ð°Ð´ÐµÑ€Ð¶ÐºÐ° в Ñекундах до Ð msgid "Advanced" msgstr "Дополнительно" -msgid "Available blocklist sources." -msgstr "ИÑточники ÑпиÑков блокировки. " - msgid "Backup Directory" msgstr "Папка Ð´Ð»Ñ Ð±Ñкапа" @@ -59,13 +61,8 @@ msgstr "" "заблокировать доÑтуп ко вÑем доменам, кроме тех что перечиÑлены в файле " "Белого ÑпиÑка.<br />" -msgid "" -"Caution: To prevent OOM exceptions on low memory devices with less than 64 " -"MB free RAM, please do not select more than five blocklist sources!" +msgid "Categories" msgstr "" -"Ð’ÐИМÐÐИЕ: Ð”Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ð³Ð¾ программного ÑÐ±Ð¾Ñ Ð¸ перезагрузки, на " -"уÑтройÑтвах Ñ Ð¾Ð±ÑŠÐµÐ¼Ð¾Ð¼ оперативной памÑти менее 64MB, не выбирайте больше 5 " -"ÑпиÑков." msgid "" "Choose 'none' to disable automatic startups, 'timed' to use a classic " @@ -113,15 +110,6 @@ msgstr "Скачать утилиту" msgid "Download Utility (SSL Library)" msgstr "Загрузить утилиту (библиотека SSL)" -msgid "" -"During opkg package installation use the '--force-maintainer' option to " -"overwrite the pre-existing config file or download a fresh default config " -"from <a href=\"%s\" target=\"_blank\">here</a>" -msgstr "" -"УÑÑ‚Ð°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°Ñ Ð¿Ð°ÐºÐµÑ‚ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ opkg, иÑпользуйте '--force-maintainer', чтобы " -"перезапиÑать ÑущеÑтвующий config файл или загрузить новый дефолтный config " -"файл <a href=\"%s\" target=\"_blank\">здеÑÑŒ</a>" - msgid "Edit Blacklist" msgstr "Редактировать Черный ÑпиÑок" @@ -205,13 +193,6 @@ msgid "Last Run" msgstr "ПоÑледнее Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð¿ÑƒÑка" msgid "" -"List URLs and Shallalist category selections are configurable in the " -"'Advanced' section.<br />" -msgstr "" -"СпиÑок URL-адреÑов и наÑтройка ÑпиÑка иÑпользованиÑ, наÑтраиваютÑÑ Ð½Ð° " -"Ñтранице 'Дополнительно'.<br />" - -msgid "" "List of available network interfaces. Usually the startup will be triggered " "by the 'wan' interface.<br />" msgstr "" @@ -263,9 +244,6 @@ msgid "" "Please note: this needs additional 'msmtp' package installation and setup." msgstr "Внимание: Ñто потребует дополнительной уÑтановки пакета 'msmtp'." -msgid "Please update your adblock config file to use this package.<br />" -msgstr "Обновите config файл Adblock, чтобы иÑпользовать Ñтот пакет.<br />" - msgid "Query" msgstr "ЗапроÑ" @@ -328,9 +306,8 @@ msgstr "" msgid "Target directory for the generated blocklist 'adb_list.overall'." msgstr "Ðазначить папку Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑпиÑка блокировки 'adb_list.overall'." -msgid "The file size is too large for online editing in LuCI (> 512 KB)." +msgid "The file size is too large for online editing in LuCI (≥ 100 KB)." msgstr "" -"Размер файла Ñлишком большой, Ð´Ð»Ñ Ð¾Ð½Ð»Ð°Ð¹Ð½ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² LuCI (> 512 KB)." msgid "" "This form allows you to modify the content of the adblock blacklist (%s)." @@ -363,9 +340,6 @@ msgid "" "only." msgstr "Страница ÑиÑтемного журнала. Только ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÑвÑзанные Ñ Adblock." -msgid "This section contains no values yet" -msgstr "ЗдеÑÑŒ не ÑодержатÑÑ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ñ‹Ðµ значениÑ" - msgid "" "To overwrite the default path use the 'DNS Directory' option in the extra " "section below." @@ -422,3 +396,41 @@ msgstr "оÑтановлено" msgid "running" msgstr "работает" + +#~ msgid "Available blocklist sources." +#~ msgstr "ИÑточники ÑпиÑков блокировки. " + +#~ msgid "" +#~ "Caution: To prevent OOM exceptions on low memory devices with less than " +#~ "64 MB free RAM, please do not select more than five blocklist sources!" +#~ msgstr "" +#~ "Ð’ÐИМÐÐИЕ: Ð”Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ð³Ð¾ программного ÑÐ±Ð¾Ñ Ð¸ перезагрузки, " +#~ "на уÑтройÑтвах Ñ Ð¾Ð±ÑŠÐµÐ¼Ð¾Ð¼ оперативной памÑти менее 64MB, не выбирайте " +#~ "больше 5 ÑпиÑков." + +#~ msgid "" +#~ "During opkg package installation use the '--force-maintainer' option to " +#~ "overwrite the pre-existing config file or download a fresh default config " +#~ "from <a href=\"%s\" target=\"_blank\">here</a>" +#~ msgstr "" +#~ "УÑÑ‚Ð°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°Ñ Ð¿Ð°ÐºÐµÑ‚ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ opkg, иÑпользуйте '--force-maintainer', " +#~ "чтобы перезапиÑать ÑущеÑтвующий config файл или загрузить новый дефолтный " +#~ "config файл <a href=\"%s\" target=\"_blank\">здеÑÑŒ</a>" + +#~ msgid "" +#~ "List URLs and Shallalist category selections are configurable in the " +#~ "'Advanced' section.<br />" +#~ msgstr "" +#~ "СпиÑок URL-адреÑов и наÑтройка ÑпиÑка иÑпользованиÑ, наÑтраиваютÑÑ Ð½Ð° " +#~ "Ñтранице 'Дополнительно'.<br />" + +#~ msgid "Please update your adblock config file to use this package.<br />" +#~ msgstr "Обновите config файл Adblock, чтобы иÑпользовать Ñтот пакет.<br />" + +#~ msgid "The file size is too large for online editing in LuCI (> 512 KB)." +#~ msgstr "" +#~ "Размер файла Ñлишком большой, Ð´Ð»Ñ Ð¾Ð½Ð»Ð°Ð¹Ð½ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² LuCI (> 512 " +#~ "KB)." + +#~ msgid "This section contains no values yet" +#~ msgstr "ЗдеÑÑŒ не ÑодержатÑÑ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ñ‹Ðµ значениÑ" diff --git a/applications/luci-app-adblock/po/sv/adblock.po b/applications/luci-app-adblock/po/sv/adblock.po index d875a69f96..349d0cc490 100644 --- a/applications/luci-app-adblock/po/sv/adblock.po +++ b/applications/luci-app-adblock/po/sv/adblock.po @@ -7,6 +7,11 @@ msgstr "" msgid "-------" msgstr "-------" +msgid "" +"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less " +"than 64 MB free RAM, please only select a few of them!" +msgstr "" + msgid "Adblock" msgstr "Adblock" @@ -25,9 +30,6 @@ msgstr "" msgid "Advanced" msgstr "Avancerat" -msgid "Available blocklist sources." -msgstr "Tillgängliga källor för blockeringslistor" - msgid "Backup Directory" msgstr "Säkerhetskopiera mapp" @@ -42,9 +44,7 @@ msgid "" "domains except those listed in the whitelist file.<br />" msgstr "" -msgid "" -"Caution: To prevent OOM exceptions on low memory devices with less than 64 " -"MB free RAM, please do not select more than five blocklist sources!" +msgid "Categories" msgstr "" msgid "" @@ -91,12 +91,6 @@ msgstr "" msgid "Download Utility (SSL Library)" msgstr "Nerladdningsprogram (SSL-bibliotek)" -msgid "" -"During opkg package installation use the '--force-maintainer' option to " -"overwrite the pre-existing config file or download a fresh default config " -"from <a href=\"%s\" target=\"_blank\">here</a>" -msgstr "" - msgid "Edit Blacklist" msgstr "Redigera svartlista" @@ -173,11 +167,6 @@ msgid "Last Run" msgstr "Kördes senast" msgid "" -"List URLs and Shallalist category selections are configurable in the " -"'Advanced' section.<br />" -msgstr "" - -msgid "" "List of available network interfaces. Usually the startup will be triggered " "by the 'wan' interface.<br />" msgstr "" @@ -221,9 +210,6 @@ msgid "" "Please note: this needs additional 'msmtp' package installation and setup." msgstr "" -msgid "Please update your adblock config file to use this package.<br />" -msgstr "" - msgid "Query" msgstr "FrÃ¥ga" @@ -256,8 +242,8 @@ msgid "" msgstr "" msgid "" -"Size of the download queue to handle downloads & list processing in parallel " -"(default '4').<br />" +"Size of the download queue to handle downloads & list processing in " +"parallel (default '4').<br />" msgstr "" msgid "Startup Trigger" @@ -277,8 +263,8 @@ msgstr "" msgid "Target directory for the generated blocklist 'adb_list.overall'." msgstr "" -msgid "The file size is too large for online editing in LuCI (> 512 KB)." -msgstr "Filstorleken är för stor för online-redigering i LuCi (> 512 KB)." +msgid "The file size is too large for online editing in LuCI (≥ 100 KB)." +msgstr "" msgid "" "This form allows you to modify the content of the adblock blacklist (%s)." @@ -311,9 +297,6 @@ msgid "" "only." msgstr "" -msgid "This section contains no values yet" -msgstr "" - msgid "" "To overwrite the default path use the 'DNS Directory' option in the extra " "section below." @@ -365,6 +348,13 @@ msgstr "pausad" msgid "running" msgstr "" +#~ msgid "Available blocklist sources." +#~ msgstr "Tillgängliga källor för blockeringslistor" + +#~ msgid "The file size is too large for online editing in LuCI (> 512 KB)." +#~ msgstr "" +#~ "Filstorleken är för stor för online-redigering i LuCi (> 512 KB)." + #~ msgid "" #~ "Caution: Please don't select big lists or many lists at once on low " #~ "memory devices to prevent OOM exceptions!" diff --git a/applications/luci-app-adblock/po/templates/adblock.pot b/applications/luci-app-adblock/po/templates/adblock.pot index 6fbaa652ae..67c52eaacd 100644 --- a/applications/luci-app-adblock/po/templates/adblock.pot +++ b/applications/luci-app-adblock/po/templates/adblock.pot @@ -7,6 +7,11 @@ msgstr "" msgid "-------" msgstr "" +msgid "" +"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less " +"than 64 MB free RAM, please only select a few of them!" +msgstr "" + msgid "Adblock" msgstr "" @@ -25,9 +30,6 @@ msgstr "" msgid "Advanced" msgstr "" -msgid "Available blocklist sources." -msgstr "" - msgid "Backup Directory" msgstr "" @@ -42,9 +44,7 @@ msgid "" "domains except those listed in the whitelist file.<br />" msgstr "" -msgid "" -"Caution: To prevent OOM exceptions on low memory devices with less than 64 " -"MB free RAM, please do not select more than five blocklist sources!" +msgid "Categories" msgstr "" msgid "" @@ -84,12 +84,6 @@ msgstr "" msgid "Download Utility (SSL Library)" msgstr "" -msgid "" -"During opkg package installation use the '--force-maintainer' option to " -"overwrite the pre-existing config file or download a fresh default config " -"from <a href=\"%s\" target=\"_blank\">here</a>" -msgstr "" - msgid "Edit Blacklist" msgstr "" @@ -165,11 +159,6 @@ msgid "Last Run" msgstr "" msgid "" -"List URLs and Shallalist category selections are configurable in the " -"'Advanced' section.<br />" -msgstr "" - -msgid "" "List of available network interfaces. Usually the startup will be triggered " "by the 'wan' interface.<br />" msgstr "" @@ -213,9 +202,6 @@ msgid "" "Please note: this needs additional 'msmtp' package installation and setup." msgstr "" -msgid "Please update your adblock config file to use this package.<br />" -msgstr "" - msgid "Query" msgstr "" @@ -269,7 +255,7 @@ msgstr "" msgid "Target directory for the generated blocklist 'adb_list.overall'." msgstr "" -msgid "The file size is too large for online editing in LuCI (> 512 KB)." +msgid "The file size is too large for online editing in LuCI (≥ 100 KB)." msgstr "" msgid "" @@ -297,9 +283,6 @@ msgid "" "only." msgstr "" -msgid "This section contains no values yet" -msgstr "" - msgid "" "To overwrite the default path use the 'DNS Directory' option in the extra " "section below." diff --git a/applications/luci-app-adblock/po/zh-cn/adblock.po b/applications/luci-app-adblock/po/zh-cn/adblock.po index e26c44c4da..42bf0c04b9 100644 --- a/applications/luci-app-adblock/po/zh-cn/adblock.po +++ b/applications/luci-app-adblock/po/zh-cn/adblock.po @@ -21,6 +21,11 @@ msgstr "" msgid "-------" msgstr "-------" +msgid "" +"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less " +"than 64 MB free RAM, please only select a few of them!" +msgstr "" + msgid "Adblock" msgstr "Adblock" @@ -39,9 +44,6 @@ msgstr "è§¦å‘ Adblock 开始处ç†å‰çš„é¢å¤–延迟(以秒为å•ä½ï¼‰ã€‚" msgid "Advanced" msgstr "高级" -msgid "Available blocklist sources." -msgstr "å¯ç”¨çš„ blocklist æ¥æºã€‚" - msgid "Backup Directory" msgstr "备份目录" @@ -56,9 +58,7 @@ msgid "" "domains except those listed in the whitelist file.<br />" msgstr "" -msgid "" -"Caution: To prevent OOM exceptions on low memory devices with less than 64 " -"MB free RAM, please do not select more than five blocklist sources!" +msgid "Categories" msgstr "" msgid "" @@ -100,12 +100,6 @@ msgstr "" msgid "Download Utility (SSL Library)" msgstr "下载实用程åºï¼ˆSSL 库)" -msgid "" -"During opkg package installation use the '--force-maintainer' option to " -"overwrite the pre-existing config file or download a fresh default config " -"from <a href=\"%s\" target=\"_blank\">here</a>" -msgstr "" - msgid "Edit Blacklist" msgstr "编辑黑åå•" @@ -181,11 +175,6 @@ msgid "Last Run" msgstr "最åŽè¿è¡Œ" msgid "" -"List URLs and Shallalist category selections are configurable in the " -"'Advanced' section.<br />" -msgstr "列表 URL å’Œ Shallalist 类别选择å¯åœ¨â€œé«˜çº§â€é€‰é¡¹å¡ä¸é…置。<br />" - -msgid "" "List of available network interfaces. Usually the startup will be triggered " "by the 'wan' interface.<br />" msgstr "" @@ -231,9 +220,6 @@ msgid "" "Please note: this needs additional 'msmtp' package installation and setup." msgstr "" -msgid "Please update your adblock config file to use this package.<br />" -msgstr "" - msgid "Query" msgstr "查询" @@ -266,8 +252,8 @@ msgid "" msgstr "" msgid "" -"Size of the download queue to handle downloads & list processing in parallel " -"(default '4').<br />" +"Size of the download queue to handle downloads & list processing in " +"parallel (default '4').<br />" msgstr "" msgid "Startup Trigger" @@ -287,8 +273,8 @@ msgstr "" msgid "Target directory for the generated blocklist 'adb_list.overall'." msgstr "生æˆçš„ blocklist 'adb_list.overall'çš„ç›®æ ‡ç›®å½•ã€‚" -msgid "The file size is too large for online editing in LuCI (> 512 KB)." -msgstr "文件大å°å¤ªå¤§ï¼Œæ— 法在 LuCI(> 512 KB)ä¸è¿›è¡Œåœ¨çº¿ç¼–辑。" +msgid "The file size is too large for online editing in LuCI (≥ 100 KB)." +msgstr "" msgid "" "This form allows you to modify the content of the adblock blacklist (%s)." @@ -315,9 +301,6 @@ msgid "" "only." msgstr "æ¤è¡¨å•æ˜¾ç¤ºç³»ç»Ÿæ—¥å¿—输出,仅针对 adblock 相关的消æ¯è¿›è¡Œäº†é¢„ç›é€‰ã€‚" -msgid "This section contains no values yet" -msgstr "" - msgid "" "To overwrite the default path use the 'DNS Directory' option in the extra " "section below." @@ -369,3 +352,13 @@ msgstr "已暂åœ" msgid "running" msgstr "" +#~ msgid "Available blocklist sources." +#~ msgstr "å¯ç”¨çš„ blocklist æ¥æºã€‚" + +#~ msgid "" +#~ "List URLs and Shallalist category selections are configurable in the " +#~ "'Advanced' section.<br />" +#~ msgstr "列表 URL å’Œ Shallalist 类别选择å¯åœ¨â€œé«˜çº§â€é€‰é¡¹å¡ä¸é…置。<br />" + +#~ msgid "The file size is too large for online editing in LuCI (> 512 KB)." +#~ msgstr "文件大å°å¤ªå¤§ï¼Œæ— 法在 LuCI(> 512 KB)ä¸è¿›è¡Œåœ¨çº¿ç¼–辑。" diff --git a/applications/luci-app-adblock/po/zh-tw/adblock.po b/applications/luci-app-adblock/po/zh-tw/adblock.po index 417fc6bcc3..f42d1b3807 100644 --- a/applications/luci-app-adblock/po/zh-tw/adblock.po +++ b/applications/luci-app-adblock/po/zh-tw/adblock.po @@ -21,6 +21,11 @@ msgstr "" msgid "-------" msgstr "-------" +msgid "" +"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less " +"than 64 MB free RAM, please only select a few of them!" +msgstr "" + msgid "Adblock" msgstr "Adblock" @@ -39,9 +44,6 @@ msgstr "觸發 Adblock 開始處ç†å‰çš„é¡å¤–延é²ï¼ˆä»¥ç§’為單ä½ï¼‰ã€‚" msgid "Advanced" msgstr "高階" -msgid "Available blocklist sources." -msgstr "å¯ç”¨çš„ blocklist 來æºã€‚" - msgid "Backup Directory" msgstr "備份目錄" @@ -56,9 +58,7 @@ msgid "" "domains except those listed in the whitelist file.<br />" msgstr "" -msgid "" -"Caution: To prevent OOM exceptions on low memory devices with less than 64 " -"MB free RAM, please do not select more than five blocklist sources!" +msgid "Categories" msgstr "" msgid "" @@ -100,12 +100,6 @@ msgstr "" msgid "Download Utility (SSL Library)" msgstr "下載實用程å¼ï¼ˆSSL 庫)" -msgid "" -"During opkg package installation use the '--force-maintainer' option to " -"overwrite the pre-existing config file or download a fresh default config " -"from <a href=\"%s\" target=\"_blank\">here</a>" -msgstr "" - msgid "Edit Blacklist" msgstr "編輯黑åå–®" @@ -181,11 +175,6 @@ msgid "Last Run" msgstr "最後執行" msgid "" -"List URLs and Shallalist category selections are configurable in the " -"'Advanced' section.<br />" -msgstr "列表 URL å’Œ Shallalist 類別é¸æ“‡å¯åœ¨â€œé«˜éšŽâ€é¸é …å¡ä¸é…置。<br />" - -msgid "" "List of available network interfaces. Usually the startup will be triggered " "by the 'wan' interface.<br />" msgstr "" @@ -231,9 +220,6 @@ msgid "" "Please note: this needs additional 'msmtp' package installation and setup." msgstr "" -msgid "Please update your adblock config file to use this package.<br />" -msgstr "" - msgid "Query" msgstr "查詢" @@ -266,8 +252,8 @@ msgid "" msgstr "" msgid "" -"Size of the download queue to handle downloads & list processing in parallel " -"(default '4').<br />" +"Size of the download queue to handle downloads & list processing in " +"parallel (default '4').<br />" msgstr "" msgid "Startup Trigger" @@ -287,8 +273,8 @@ msgstr "" msgid "Target directory for the generated blocklist 'adb_list.overall'." msgstr "生æˆçš„ blocklist 'adb_list.overall'的目標目錄。" -msgid "The file size is too large for online editing in LuCI (> 512 KB)." -msgstr "檔案大å°å¤ªå¤§ï¼Œç„¡æ³•åœ¨ LuCI(> 512 KB)ä¸é€²è¡Œç·šä¸Šç·¨è¼¯ã€‚" +msgid "The file size is too large for online editing in LuCI (≥ 100 KB)." +msgstr "" msgid "" "This form allows you to modify the content of the adblock blacklist (%s)." @@ -315,9 +301,6 @@ msgid "" "only." msgstr "æ¤è¡¨å–®é¡¯ç¤ºç³»çµ±æ—¥èªŒè¼¸å‡ºï¼Œåƒ…é‡å° adblock 相關的訊æ¯é€²è¡Œäº†é 篩é¸ã€‚" -msgid "This section contains no values yet" -msgstr "" - msgid "" "To overwrite the default path use the 'DNS Directory' option in the extra " "section below." @@ -369,3 +352,13 @@ msgstr "已暫åœ" msgid "running" msgstr "" +#~ msgid "Available blocklist sources." +#~ msgstr "å¯ç”¨çš„ blocklist 來æºã€‚" + +#~ msgid "" +#~ "List URLs and Shallalist category selections are configurable in the " +#~ "'Advanced' section.<br />" +#~ msgstr "列表 URL å’Œ Shallalist 類別é¸æ“‡å¯åœ¨â€œé«˜éšŽâ€é¸é …å¡ä¸é…置。<br />" + +#~ msgid "The file size is too large for online editing in LuCI (> 512 KB)." +#~ msgstr "檔案大å°å¤ªå¤§ï¼Œç„¡æ³•åœ¨ LuCI(> 512 KB)ä¸é€²è¡Œç·šä¸Šç·¨è¼¯ã€‚" diff --git a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm index 0629c84b36..5f7429dfd1 100644 --- a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm +++ b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm @@ -21,24 +21,24 @@ <%- if device_name then -%> <fieldset class="cbi-section"> <legend><%=device_name%><%: Partitions%></legend> - <table class="cbi-section-table" id="partitions"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Partition%></th> - <th class="cbi-section-table-cell"><%:Status%></th> - <th class="cbi-section-table-cell"><%:Firmware/OS (Kernel)%></th> - <th class="cbi-section-table-cell"><%:Action%></th> - </tr> - <tr class="cbi-section-table-row"> - <td> + <div class="table cbi-section-table" id="partitions"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Partition%></div> + <div class="th cbi-section-table-cell"><%:Status%></div> + <div class="th cbi-section-table-cell"><%:Firmware/OS (Kernel)%></div> + <div class="th cbi-section-table-cell"><%:Action%></div> + </div> + <div class="tr cbi-section-table-row"> + <div class="td"> <%=string.format("%X", boot_envvar1_partition_one)%> - </td> - <td> + </div> + <div class="td"> <%- if boot_envvar1_partition_one == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%> - </td> - <td> + </div> + <div class="td"> <%=partition_one_os%> - </td> - <td> + </div> + <div class="td"> <%- if boot_envvar1_partition_one == current_partition then -%> <form method="post" action="<%=url('admin/system/advanced_reboot/reboot')%>"> <input type="hidden" name="token" value="<%=token%>" /> @@ -50,19 +50,19 @@ <input id="altreboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to alternative partition...%>" /> </form> <%- end -%> - </td> - </tr> - <tr class="cbi-section-table-row"> - <td> + </div> + </div> + <div class="tr cbi-section-table-row"> + <div class="td"> <%=string.format("%X", boot_envvar1_partition_two)%> - </td> - <td> + </div> + <div class="td"> <%- if boot_envvar1_partition_two == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%> - </td> - <td> + </div> + <div class="td"> <%=partition_two_os%> - </td> - <td> + </div> + <div class="td"> <%- if boot_envvar1_partition_two == current_partition then -%> <form method="post" action="<%=url('admin/system/advanced_reboot/reboot')%>"> <input type="hidden" name="token" value="<%=token%>" /> @@ -74,9 +74,9 @@ <input id="altreboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to alternative partition...%>" /> </form> <%- end -%> - </td> - </tr> - </table> + </div> + </div> + </div> </fieldset> <%- else -%> <p class="alert-message warning"><%:Warning: This system does not have two partitions!%></p> diff --git a/applications/luci-app-ahcp/luasrc/view/ahcp_status.htm b/applications/luci-app-ahcp/luasrc/view/ahcp_status.htm index 946828953e..ab25f862b8 100644 --- a/applications/luci-app-ahcp/luasrc/view/ahcp_status.htm +++ b/applications/luci-app-ahcp/luasrc/view/ahcp_status.htm @@ -7,29 +7,21 @@ if (st && tb && tx) { /* clear all rows */ - while( tb.rows.length > 1 ) - tb.deleteRow(1); + while (tb.firstElementChild !== tb.lastElementChild) + tb.removeChild(tb.lastElementChild); - for( var i = 0; i < st.leases.length; i++ ) + for (var i = 0; i < st.leases.length; i++) { - var tr = tb.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1); - - tr.insertCell(-1).innerHTML = st.leases[i].addr; - tr.insertCell(-1).innerHTML = String.format('%t', st.leases[i].age); + tb.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format((i % 2) + 1), [ + E('<div class="td">', st.leases[i].addr), + E('<div class="td">', '%t'.format(st.leases[i].age)) + ])); } - if( tb.rows.length == 1 ) - { - var tr = tb.insertRow(-1); - tr.className = 'cbi-section-table-row'; - - var td = tr.insertCell(-1); - td.colSpan = 2; - td.innerHTML = '<em><br /><%:There are no active leases.%></em>'; - } + if (tb.firstElementChild === tb.lastElementChild) + tb.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:There are no active leases.%></em></div></div>')); - if( st.uid == '00:00:00:00:00:00:00:00' ) + if (st.uid == '00:00:00:00:00:00:00:00') tx.innerHTML = '<%:The AHCP Service is not running.%>'; else tx.innerHTML = String.format('<%:The AHCP Service is running with ID %s.%>', st.uid); @@ -41,13 +33,13 @@ <fieldset class="cbi-section"> <legend><%:Active AHCP Leases%></legend> <p id="ahcpd_status_text"></p> - <table class="cbi-section-table" id="ahcpd_status_table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Address%></th> - <th class="cbi-section-table-cell"><%:Age%></th> - </tr> - <tr class="cbi-section-table-row"> - <td colspan="5"><em><br /><%:Collecting data...%></em></td> - </tr> - </table> + <div class="table cbi-section-table" id="ahcpd_status_table"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Address%></div> + <div class="th cbi-section-table-cell"><%:Age%></div> + </div> + <div class="tr cbi-section-table-row"> + <div class="td" colspan="5"><em><br /><%:Collecting data...%></em></div> + </div> + </div> </fieldset> diff --git a/applications/luci-app-asterisk/luasrc/view/asterisk/dialplans.htm b/applications/luci-app-asterisk/luasrc/view/asterisk/dialplans.htm index 9f644ba074..fb40335f99 100644 --- a/applications/luci-app-asterisk/luasrc/view/asterisk/dialplans.htm +++ b/applications/luci-app-asterisk/luasrc/view/asterisk/dialplans.htm @@ -79,23 +79,23 @@ <% for i, plan in pairs(ast.dialplan.plans()) do %> <div class="cbi-section-node"> - <table class="cbi-section-table"> - <tr class="cbi-section-table-titles"> - <th style="text-align: left; padding: 3px" class="cbi-section-table-cell"> + <div class="table cbi-section-table"> + <div class="tr cbi-section-table-titles"> + <div style="text-align: left; padding: 3px" class="th cbi-section-table-cell"> <big>Dialplan <em><%=plan.name%></em></big> - </th> - <td> + </div> + <div class="td"> <a href="<%=url('admin/asterisk/dialplans')%>?delplan=<%=plan.name%>"> <img style="border:none" alt="Remove this dialplan" title="Remove this dialplan" src="/luci-static/resources/cbi/remove.gif" /> </a> - </td> - </tr> + </div> + </div> <!-- dialzones --> <% local zones_used = { }; local row = 0 %> <% for i, zone in ipairs(plan.zones) do zones_used[zone.name] = true %> - <tr class="cbi-section-table-row <%=rowstyle(row)%>"> - <td style="text-align: left; padding: 3px" class="cbi-section-table-cell"> + <div class="tr cbi-section-table-row <%=rowstyle(row)%>"> + <div style="text-align: left; padding: 3px" class="td cbi-section-table-cell"> <strong>└ Dialzone <em><%=zone.name%></em></strong> (<%=zone.description%>) <p style="padding-left: 1em; margin-bottom:0"> Lines: @@ -107,24 +107,24 @@ Matches: <%=format_matches(zone)%> </p> - </td> - <td style="width:5%" class="cbi-value-field"> + </div> + <div style="width:5%" class="td cbi-value-field"> <a href="<%=url('admin/asterisk/dialplans/out', zone.name)%>"> <img style="border:none" alt="Edit dialzone" title="Edit dialzone" src="/luci-static/resources/cbi/edit.gif" /> </a> <a href="<%=url('admin/asterisk/dialplans')%>?delzone.<%=plan.name%>=<%=zone.name%>"> <img style="border:none" alt="Remove from this dialplan" title="Remove from this dialplan" src="/luci-static/resources/cbi/remove.gif" /> </a> - </td> - </tr> + </div> + </div> <% row = row + 1; end %> <!-- /dialzones --> <!-- voicemail --> <% local boxes_used = { } %> <% for ext, box in luci.util.kspairs(plan.voicemailboxes) do boxes_used[box.id] = true %> - <tr class="cbi-section-table-row <%=rowstyle(row)%>"> - <td style="text-align: left; padding: 3px" class="cbi-section-table-cell"> + <div class="tr cbi-section-table-row <%=rowstyle(row)%>"> + <div style="text-align: left; padding: 3px" class="td cbi-section-table-cell"> <strong>└ Voicemailbox <em><%=box.id%></em></strong> (<%=box.name%>) <p style="padding-left: 1em; margin-bottom:0"> Owner: <%=box.name%> | @@ -132,44 +132,44 @@ Pager: <%=#box.page > 0 and box.page or 'n/a'%><br /> Matches: <%=format_matches(ext)%> </p> - </td> - <td style="width:5%" class="cbi-value-field"> + </div> + <div style="width:5%" class="td cbi-value-field"> <a href="<%=url('admin/asterisk/voicemail/mailboxes')%>"> <img style="border:none" alt="Manage mailboxes ..." title="Manage mailboxes ..." src="/luci-static/resources/cbi/edit.gif" /> </a> <a href="<%=url('admin/asterisk/dialplans')%>?delvbox.<%=plan.name%>=<%=ext%>"> <img style="border:none" alt="Remove from this dialplan" title="Remove from this dialplan" src="/luci-static/resources/cbi/remove.gif" /> </a> - </td> - </tr> + </div> + </div> <% row = row + 1; end %> <!-- /voicemail --> <!-- meetme --> <% local rooms_used = { } %> <% for ext, room in luci.util.kspairs(plan.meetmerooms) do rooms_used[room.room] = true %> - <tr class="cbi-section-table-row <%=rowstyle(row)%>"> - <td style="text-align: left; padding: 3px" class="cbi-section-table-cell"> + <div class="tr cbi-section-table-row <%=rowstyle(row)%>"> + <div style="text-align: left; padding: 3px" class="td cbi-section-table-cell"> <strong>└ MeetMe Room <em><%=room.room%></em></strong> <% if room.description and #room.description > 0 then %> (<%=room.description%>)<% end %> <p style="padding-left: 1em; margin-bottom:0"> Matches: <%=format_matches(ext)%> </p> - </td> - <td style="width:5%" class="cbi-value-field"> + </div> + <div style="width:5%" class="td cbi-value-field"> <a href="<%=url('admin/asterisk/meetme/rooms')%>"> <img style="border:none" alt="Manage conferences ..." title="Manage conferences ..." src="/luci-static/resources/cbi/edit.gif" /> </a> <a href="<%=url('admin/asterisk/dialplans')%>?delmeetme.<%=plan.name%>=<%=ext%>"> <img style="border:none" alt="Remove from this dialplan" title="Remove from this dialplan" src="/luci-static/resources/cbi/remove.gif" /> </a> - </td> - </tr> + </div> + </div> <% row = row + 1; end %> <!-- /meetme --> - <tr class="cbi-section-table-row"> - <td style="text-align: left; padding: 3px" class="cbi-section-table-cell" colspan="2"> + <div class="tr cbi-section-table-row"> + <div style="text-align: left; padding: 3px" class="td cbi-section-table-cell" colspan="2"> <hr style="margin-bottom:0.5em; border-width:0 0 1px 0" /> Add Dialzone:<br /> @@ -213,10 +213,10 @@ <br /><br /> <input type="submit" class="cbi-button cbi-button-add" value="Add item »" title="Add item ..."/> - </td> - </tr> + </div> + </div> - </table> + </div> <div class="cbi-section-create cbi-tblsection-create"></div> </div> diff --git a/applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm b/applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm index ffdbbcf359..e48da608a6 100644 --- a/applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm +++ b/applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm @@ -66,59 +66,59 @@ <!-- tblsection --> <fieldset class="cbi-section" id="cbi-asterisk-sip"> <div class="cbi-section-node"> - <table class="cbi-section-table"> - <tr class="cbi-section-table-titles"> - <th style="text-align: left; padding: 3px" class="cbi-section-table-cell" colspan="6"> + <div class="table cbi-section-table"> + <div class="tr cbi-section-table-titles"> + <div style="text-align: left; padding: 3px" class="th cbi-section-table-cell" colspan="6"> <h3>Dialzone Overview</h3> - </th> - </tr> - - <tr class="cbi-section-table-descr"> - <th style="width: 5%; text-align:right" class="cbi-section-table-cell">Name</th> - <th style="width: 5%; text-align:right" class="cbi-section-table-cell">Prepend</th> - <th style="width: 20%; text-align:left" class="cbi-section-table-cell">- Match</th> - <th style="text-align:left" class="cbi-section-table-cell">Trunk</th> - <th style="width: 35%; text-align:left" class="cbi-section-table-cell">Description</th> - <th style="width: 4%; text-align:left" class="cbi-section-table-cell"></th> - </tr> + </div> + </div> + + <div class="tr cbi-section-table-descr"> + <div style="width: 5%; text-align:right" class="th cbi-section-table-cell">Name</div> + <div style="width: 5%; text-align:right" class="th cbi-section-table-cell">Prepend</div> + <div style="width: 20%; text-align:left" class="th cbi-section-table-cell">- Match</div> + <div style="text-align:left" class="th cbi-section-table-cell">Trunk</div> + <div style="width: 35%; text-align:left" class="th cbi-section-table-cell">Description</div> + <div style="width: 4%; text-align:left" class="th cbi-section-table-cell"></div> + </div> <% for i, rule in pairs(ast.dialzone.zones()) do %> - <tr class="cbi-section-table-row <%=rowstyle(i)%>"> - <td style="text-align:right" class="cbi-value-field"> + <div class="tr cbi-section-table-row <%=rowstyle(i)%>"> + <div style="text-align:right" class="td cbi-value-field"> <%=rule.name%> - </td> - <td style="text-align:right" class="cbi-value-field"> + </div> + <div style="text-align:right" class="td cbi-value-field"> <% for _ in ipairs(rule.matches) do %> <%=rule.addprefix and digit_pattern(rule.addprefix)%> <br /> <% end %> - </td> - <td style="text-align:left" class="cbi-value-field"> + </div> + <div style="text-align:left" class="td cbi-value-field"> <% for _, m in ipairs(rule.matches) do %> <%=rule.localprefix and "%s " % digit_pattern(rule.localprefix)%> <%=digit_pattern(m)%><br /> <% end %> - </td> - <td style="text-align:left" class="cbi-value-field"> + </div> + <div style="text-align:left" class="td cbi-value-field"> <%=ast.tools.hyperlinks( rule.trunks, function(v) return luci.dispatcher.build_url("admin", "asterisk", "trunks", "%s") % v:lower() end )%> - </td> - <td style="text-align:left" class="cbi-value-field"> + </div> + <div style="text-align:left" class="td cbi-value-field"> <%=rule.description or rule.name%> - </td> - <td style="text-align:left" class="cbi-value-field"> + </div> + <div style="text-align:left" class="td cbi-value-field"> <a href="<%=url('admin/asterisk/dialplans/out', rule.name)%>"> <img style="border:none" alt="Edit entry" title="Edit entry" src="/luci-static/resources/cbi/edit.gif" /> </a> <a href="<%=url('admin/asterisk/dialplans/zones')%>?delzone=<%=rule.name%>"> <img style="border:none" alt="Delete entry" title="Delete entry" src="/luci-static/resources/cbi/remove.gif" /> </a> - </td> - </tr> + </div> + </div> <% end %> - </table> + </div> <div class="cbi-section-create cbi-tblsection-create"></div> </div> <br /> @@ -133,26 +133,26 @@ <br /><span style="color:red">Invalid name given!</span><br /> <% end -%> - <table> - <tr> - <td style="padding:3px"> + <div class="table"> + <div class="tr"> + <div class="td" style="padding:3px"> <label for="create1">1) Name</label><br /> <input type="text" class="cbi-section-create-name" id="create1" name="newzone_name" style="width:200px" /> <br /><br /> <label for="create2">2) Number Match</label><br /> <input type="text" class="cbi-section-create-name" id="create2" name="newzone_match" style="width:200px" /> - </td> - <td style="padding:3px"> + </div> + <div class="td" style="padding:3px"> <label for="create3">3) Trunks</label><br /> <select class="cbi-input-select" multiple="multiple" id="create3" name="newzone_uses" size="4" style="width:200px"> <% for i, t in ipairs(find_trunks()) do %> <option value="<%=t[1]%>"><%=t[2]%></option> <% end %> </select> - </td> - </tr> - </table> + </div> + </div> + </div> <br /> <input type="submit" class="cbi-button cbi-button-add" name="newzone" value="Add entry" title="Add entry"/> diff --git a/applications/luci-app-ddns/Makefile b/applications/luci-app-ddns/Makefile index bd6ddeb1b3..886b266b04 100644 --- a/applications/luci-app-ddns/Makefile +++ b/applications/luci-app-ddns/Makefile @@ -16,7 +16,7 @@ PKG_VERSION:=2.4.9 # Release == build # increase on changes of translation files -PKG_RELEASE:=3 +PKG_RELEASE:=4 PKG_LICENSE:=Apache-2.0 PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com> diff --git a/applications/luci-app-ddns/luasrc/controller/ddns.lua b/applications/luci-app-ddns/luasrc/controller/ddns.lua index 5f4a5118c3..bfd7a2a414 100755 --- a/applications/luci-app-ddns/luasrc/controller/ddns.lua +++ b/applications/luci-app-ddns/luasrc/controller/ddns.lua @@ -21,7 +21,6 @@ luci_helper = "/usr/lib/ddns/dynamic_dns_lucihelper.sh" local srv_name = "ddns-scripts" local srv_ver_min = "2.7.7" -- minimum version of service required -local srv_ver_cmd = luci_helper .. [[ -V | awk {'print $2'}]] local app_name = "luci-app-ddns" local app_title = "Dynamic DNS" local app_version = "2.4.9-1" @@ -29,7 +28,6 @@ local app_version = "2.4.9-1" function index() local nxfs = require "nixio.fs" -- global definitions not available local sys = require "luci.sys" -- in function index() - local ddns = require "luci.tools.ddns" -- ddns multiused functions local muci = require "luci.model.uci" -- no config create an empty one @@ -81,26 +79,41 @@ end -- Standardized application/service functions function app_title_main() - return [[<a href="javascript:alert(']] - .. I18N.translate("Version Information") - .. [[\n\n]] .. app_name - .. [[\n\t]] .. I18N.translate("Version") .. [[:\t]] .. app_version - .. [[\n\n]] .. srv_name .. [[ ]] .. I18N.translate("required") .. [[:]] - .. [[\n\t]] .. I18N.translate("Version") .. [[:\t]] - .. srv_ver_min .. [[ ]] .. I18N.translate("or higher") - .. [[\n\n]] .. srv_name .. [[ ]] .. I18N.translate("installed") .. [[:]] - .. [[\n\t]] .. I18N.translate("Version") .. [[:\t]] - .. (service_version() or I18N.translate("NOT installed")) - .. [[\n\n]] - .. [[')">]] - .. I18N.translate(app_title) - .. [[</a>]] + tmp = {} + tmp[#tmp+1] = [[<a href="javascript:alert(']] + tmp[#tmp+1] = I18N.translate("Version Information") + tmp[#tmp+1] = [[\n\n]] .. app_name + tmp[#tmp+1] = [[\n\t]] .. I18N.translate("Version") .. [[:\t]] .. app_version + tmp[#tmp+1] = [[\n\n]] .. srv_name .. [[ ]] .. I18N.translate("required") .. [[:]] + tmp[#tmp+1] = [[\n\t]] .. I18N.translate("Version") .. [[:\t]] + tmp[#tmp+1] = srv_ver_min .. [[ ]] .. I18N.translate("or higher") + tmp[#tmp+1] = [[\n\n]] .. srv_name .. [[ ]] .. I18N.translate("installed") .. [[:]] + tmp[#tmp+1] = [[\n\t]] .. I18N.translate("Version") .. [[:\t]] + tmp[#tmp+1] = (service_version() or I18N.translate("NOT installed")) + tmp[#tmp+1] = [[\n\n]] + tmp[#tmp+1] = [[')">]] + tmp[#tmp+1] = I18N.translate(app_title) + tmp[#tmp+1] = [[</a>]] + + return table.concat(tmp) end function service_version() - local ver = nil + local nxfs = require "nixio.fs" + + local ver = nil + local ver_helper + + if nxfs.access("/bin/opkg") then + ver_helper = "/bin/opkg info " .. srv_name .. " | grep 'Version'" + else + ver_helper = luci_helper .. " -V" + end + + local srv_ver_cmd = ver_helper .. " | awk {'print $2'} " + ver = UTIL.exec(srv_ver_cmd) - if #ver > 0 then return ver end + if ver and #ver > 0 then return ver end IPKG.list_installed(srv_name, function(n, v, d) if v and (#v > 0) then ver = v end @@ -108,6 +121,7 @@ function service_version() ) return ver end + function service_ok() return IPKG.compare_versions((service_version() or "0"), ">=", srv_ver_min) end diff --git a/applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua b/applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua index 977dbe34b1..10d39c7183 100644 --- a/applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua +++ b/applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua @@ -292,6 +292,10 @@ function luh.parse(self, section, novld) end -- use_ipv6 -- ################################################################ + +--We call it globally as it's called 11 times even outside specific function, saves 11 os.execute slow command! +local has_ipv6 = DDNS.env_info("has_ipv6") + usev6 = ns:taboption("basic", ListValue, "use_ipv6", translate("IP address version"), translate("Defines which IP address 'IPv4/IPv6' is send to the DDNS provider") ) @@ -300,16 +304,16 @@ usev6.default = "0" usev6:value("0", translate("IPv4-Address") ) function usev6.cfgvalue(self, section) local value = AbstractValue.cfgvalue(self, section) or "0" - if DDNS.has_ipv6 or (value == "1" and not DDNS.has_ipv6) then + if has_ipv6 or (value == "1" and not has_ipv6) then self:value("1", translate("IPv6-Address") ) end - if value == "1" and not DDNS.has_ipv6 then + if value == "1" and not has_ipv6 then self.description = err_ipv6_basic end return value end function usev6.validate(self, value) - if (value == "1" and DDNS.has_ipv6) or value == "0" then + if (value == "1" and has_ipv6) or value == "0" then return value end return nil, err_tab_basic(self) .. err_ipv6_plain @@ -360,7 +364,7 @@ svc6 = ns:taboption("basic", ListValue, "ipv6_service_name", translate("DDNS Service provider") .. " [IPv6]" ) svc6.default = "-" svc6:depends("use_ipv6", "1") -- only show on IPv6 -if not DDNS.has_ipv6 then +if not has_ipv6 then svc6.description = err_ipv6_basic end function svc6.cfgvalue(self, section) @@ -374,7 +378,7 @@ function svc6.cfgvalue(self, section) end function svc6.validate(self, value) if usev6:formvalue(section) == "1" then -- do only on IPv6 - if DDNS.has_ipv6 then return value end + if has_ipv6 then return value end return nil, err_tab_basic(self) .. err_ipv6_plain else return "" -- suppress validate error @@ -586,13 +590,17 @@ end svc6:value("-", translate("-- custom --") ) -- IPv4/IPv6 - use_https -- ################################################### -if DDNS.has_ssl or ( ( m:get(section, "use_https") or "0" ) == "1" ) then + +--We call it globally as it's called 4 times outside specific function. +local has_ssl = DDNS.env_info("has_ssl") + +if has_ssl or ( ( m:get(section, "use_https") or "0" ) == "1" ) then https = ns:taboption("basic", Flag, "use_https", translate("Use HTTP Secure") ) https.orientation = "horizontal" function https.cfgvalue(self, section) local value = AbstractValue.cfgvalue(self, section) - if not DDNS.has_ssl and value == "1" then + if not has_ssl and value == "1" then self.description = bold_on .. font_red .. translate("HTTPS not supported") .. font_off .. "<br />" .. translate("please disable") .. " !" .. bold_off @@ -602,7 +610,7 @@ if DDNS.has_ssl or ( ( m:get(section, "use_https") or "0" ) == "1" ) then return value end function https.validate(self, value) - if (value == "1" and DDNS.has_ssl ) or value == "0" then return value end + if (value == "1" and has_ssl ) or value == "0" then return value end return nil, err_tab_basic(self) .. translate("HTTPS not supported") .. " !" end function https.write(self, section, value) @@ -616,7 +624,7 @@ if DDNS.has_ssl or ( ( m:get(section, "use_https") or "0" ) == "1" ) then end -- IPv4/IPv6 - cacert -- ###################################################### -if DDNS.has_ssl then +if has_ssl then cert = ns:taboption("basic", Value, "cacert", translate("Path to CA-Certificate"), translate("directory or path/file") .. "<br />" .. @@ -706,7 +714,7 @@ src6:value("network", translate("Network")) src6:value("web", translate("URL")) src6:value("interface", translate("Interface")) src6:value("script", translate("Script")) -if not DDNS.has_ipv6 then +if not has_ipv6 then src6.description = err_ipv6_other end function src6.cfgvalue(self, section) @@ -715,7 +723,7 @@ end function src6.validate(self, value) if usev6:formvalue(section) ~= "1" then return "" -- ignore on IPv4 selected - elseif not DDNS.has_ipv6 then + elseif not has_ipv6 then return nil, err_tab_adv(self) .. err_ipv6_plain elseif not _verify_ip_source() then return nil, err_tab_adv(self) .. @@ -794,7 +802,7 @@ ipn6 = ns:taboption("advanced", ListValue, "ipv6_network", ipn6:depends("ipv6_source", "network") ipn6.default = "wan6" WADM.cbi_add_networks(ipn6) -if DDNS.has_ipv6 then +if has_ipv6 then ipn6.description = translate("Defines the network to read systems IPv6-Address from") else ipn6.description = err_ipv6_other @@ -808,7 +816,7 @@ function ipn6.validate(self, value) -- ignore if IPv4 selected OR -- ignore everything except "network" return "" - elseif DDNS.has_ipv6 then + elseif has_ipv6 then return value else return nil, err_tab_adv(self) .. err_ipv6_plain @@ -881,7 +889,7 @@ iurl6 = ns:taboption("advanced", Value, "ipv6_url", translate("URL to detect") .. " [IPv6]" ) iurl6:depends("ipv6_source", "web") iurl6.default = "http://checkipv6.dyndns.com" -if DDNS.has_ipv6 then +if has_ipv6 then iurl6.description = translate("Defines the Web page to read systems IPv6-Address from") else iurl6.description = err_ipv6_other @@ -895,7 +903,7 @@ function iurl6.validate(self, value) -- ignore if IPv4 selected OR -- ignore everything except "web" return "" - elseif not DDNS.has_ipv6 then + elseif not has_ipv6 then return nil, err_tab_adv(self) .. err_ipv6_plain elseif not value or #value == 0 then return nil, err_tab_adv(self) .. translate("missing / required") @@ -1051,7 +1059,7 @@ eif6:depends("ipv6_source", "web") eif6:depends("ipv6_source", "script") eif6.default = "wan6" WADM.cbi_add_networks(eif6) -if not DDNS.has_ipv6 then +if not has_ipv6 then eif6.description = err_ipv6_other else eif6.description = translate("Network on which the ddns-updater scripts will be started") @@ -1065,7 +1073,7 @@ function eif6.validate(self, value) or fsrc6 == "network" or fsrc6 == "interface" then return "" -- ignore IPv4, network, interface - elseif not DDNS.has_ipv6 then + elseif not has_ipv6 then return nil, err_tab_adv(self) .. err_ipv6_plain else return value @@ -1084,10 +1092,13 @@ function eif6.write(self, section, value) end function eif6.parse(self, section, novld) DDNS.value_parse(self, section, novld) -end +end -- IPv4/IPv6 - bind_network -- ################################################ -if DDNS.has_bindnet or ( ( m:get(section, "bind_network") or "" ) ~= "" ) then + +local has_bindnet = DDNS.env_info("has_bindnet") + +if has_bindnet or ( ( m:get(section, "bind_network") or "" ) ~= "" ) then bnet = ns:taboption("advanced", ListValue, "bind_network", translate("Bind Network") ) bnet:depends("ipv4_source", "web") @@ -1097,7 +1108,7 @@ if DDNS.has_bindnet or ( ( m:get(section, "bind_network") or "" ) ~= "" ) then WADM.cbi_add_networks(bnet) function bnet.cfgvalue(self, section) local value = AbstractValue.cfgvalue(self, section) - if not DDNS.has_bindnet and value ~= "" then + if not has_bindnet and value ~= "" then self.description = bold_on .. font_red .. translate("Binding to a specific network not supported") .. font_off .. "<br />" .. translate("please set to 'default'") .. " !" .. bold_off @@ -1108,7 +1119,7 @@ if DDNS.has_bindnet or ( ( m:get(section, "bind_network") or "" ) ~= "" ) then return value end function bnet.validate(self, value) - if ( (value ~= "") and DDNS.has_bindnet ) or (value == "") then return value end + if ( (value ~= "") and has_bindnet ) or (value == "") then return value end return nil, err_tab_adv(self) .. translate("Binding to a specific network not supported") .. " !" end function bnet.parse(self, section, novld) @@ -1119,13 +1130,16 @@ end -- IPv4 + IPv6 - force_ipversion -- ########################################### -- optional to force wget/curl and host to use only selected IP version -- command parameter "-4" or "-6" -if DDNS.has_forceip or ( ( m:get(section, "force_ipversion") or "0" ) ~= "0" ) then + +local has_forceip = DDNS.env_info("has_forceip") + +if has_forceip or ( ( m:get(section, "force_ipversion") or "0" ) ~= "0" ) then fipv = ns:taboption("advanced", Flag, "force_ipversion", translate("Force IP Version") ) fipv.orientation = "horizontal" function fipv.cfgvalue(self, section) local value = AbstractValue.cfgvalue(self, section) - if not DDNS.has_forceip and value ~= "0" then + if not has_forceip and value ~= "0" then self.description = bold_on .. font_red .. translate("Force IP Version not supported") .. font_off .. "<br />" .. translate("please disable") .. " !" .. bold_off @@ -1135,14 +1149,17 @@ if DDNS.has_forceip or ( ( m:get(section, "force_ipversion") or "0" ) ~= "0" ) t return value end function fipv.validate(self, value) - if (value == "1" and DDNS.has_forceip) or value == "0" then return value end + if (value == "1" and has_forceip) or value == "0" then return value end return nil, err_tab_adv(self) .. translate("Force IP Version not supported") end end -- IPv4 + IPv6 - dns_server -- ################################################ -- optional DNS Server to use resolving my IP -if DDNS.has_dnsserver or ( ( m:get(section, "dns_server") or "" ) ~= "" ) then + +local has_dnsserver = DDNS.env_info("has_dnsserver") + +if has_dnsserver or ( ( m:get(section, "dns_server") or "" ) ~= "" ) then dns = ns:taboption("advanced", Value, "dns_server", translate("DNS-Server"), translate("OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'.") .. "<br />" .. @@ -1152,7 +1169,7 @@ if DDNS.has_dnsserver or ( ( m:get(section, "dns_server") or "" ) ~= "" ) then -- if .datatype is set, then it is checked before calling this function if not value or (#value == 0) then return "" -- ignore on empty - elseif not DDNS.has_dnsserver then + elseif not has_dnsserver then return nil, err_tab_adv(self) .. translate("Specifying a DNS-Server is not supported") elseif not DTYP.host(value) then return nil, err_tab_adv(self) .. translate("use hostname, FQDN, IPv4- or IPv6-Address") @@ -1179,13 +1196,16 @@ if DDNS.has_dnsserver or ( ( m:get(section, "dns_server") or "" ) ~= "" ) then end -- IPv4 + IPv6 - force_dnstcp -- ############################################## -if DDNS.has_bindhost or ( ( m:get(section, "force_dnstcp") or "0" ) ~= "0" ) then + +local has_bindhost = DDNS.env_info("has_bindhost") + +if has_bindhost or ( ( m:get(section, "force_dnstcp") or "0" ) ~= "0" ) then tcp = ns:taboption("advanced", Flag, "force_dnstcp", translate("Force TCP on DNS") ) tcp.orientation = "horizontal" function tcp.cfgvalue(self, section) local value = AbstractValue.cfgvalue(self, section) - if not DDNS.has_bindhost and value ~= "0" then + if not has_bindhost and value ~= "0" then self.description = bold_on .. font_red .. translate("DNS requests via TCP not supported") .. font_off .. "<br />" .. translate("please disable") .. " !" .. bold_off @@ -1195,7 +1215,7 @@ if DDNS.has_bindhost or ( ( m:get(section, "force_dnstcp") or "0" ) ~= "0" ) the return value end function tcp.validate(self, value) - if (value == "1" and DDNS.has_bindhost ) or value == "0" then + if (value == "1" and has_bindhost ) or value == "0" then return value end return nil, err_tab_adv(self) .. translate("DNS requests via TCP not supported") @@ -1204,13 +1224,16 @@ end -- IPv4 + IPv6 - proxy -- ##################################################### -- optional Proxy to use for http/https requests [user:password@]proxyhost[:port] -if DDNS.has_proxy or ( ( m:get(section, "proxy") or "" ) ~= "" ) then + +local has_proxy = DDNS.env_info("has_proxy") + +if has_proxy or ( ( m:get(section, "proxy") or "" ) ~= "" ) then pxy = ns:taboption("advanced", Value, "proxy", translate("PROXY-Server") ) pxy.placeholder="user:password@myproxy.lan:8080" function pxy.cfgvalue(self, section) local value = AbstractValue.cfgvalue(self, section) - if not DDNS.has_proxy and value ~= "" then + if not has_proxy and value ~= "" then self.description = bold_on .. font_red .. translate("PROXY-Server not supported") .. font_off .. "<br />" .. translate("please remove entry") .. "!" .. bold_off @@ -1226,7 +1249,7 @@ if DDNS.has_proxy or ( ( m:get(section, "proxy") or "" ) ~= "" ) then -- if .datatype is set, then it is checked before calling this function if not value or (#value == 0) then return "" -- ignore on empty - elseif DDNS.has_proxy then + elseif has_proxy then local ipv6 = usev6:formvalue(section) or "0" local force = fipv:formvalue(section) or "0" local command = CTRL.luci_helper .. [[ -]] diff --git a/applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua b/applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua index df39a3a7e5..419201548b 100644 --- a/applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua +++ b/applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua @@ -48,7 +48,7 @@ if not SYS.init.enabled("ddns") then end -- No IPv6 support -if not DDNS.has_ipv6 then +if not DDNS.env_info("has_ipv6") then local v6 = s:option(DummyValue, "_no_ipv6") v6.titleref = 'http://www.openwrt.org" target="_blank' v6.rawhtml = true @@ -60,7 +60,7 @@ if not DDNS.has_ipv6 then end -- No HTTPS support -if not DDNS.has_ssl then +if not DDNS.env_info("has_ssl") then local sl = s:option(DummyValue, "_no_https") sl.titleref = DISP.build_url("admin", "system", "packages") sl.rawhtml = true @@ -74,7 +74,7 @@ if not DDNS.has_ssl then end -- No bind_network -if not DDNS.has_bindnet then +if not DDNS.env_info("has_bindnet") then local bn = s:option(DummyValue, "_no_bind_network") bn.titleref = DISP.build_url("admin", "system", "packages") bn.rawhtml = true @@ -90,7 +90,7 @@ if not DDNS.has_bindnet then end -- currently only cURL possibly without proxy support -if not DDNS.has_proxy then +if not DDNS.env_info("has_proxy") then local px = s:option(DummyValue, "_no_proxy") px.titleref = DISP.build_url("admin", "system", "packages") px.rawhtml = true @@ -104,7 +104,7 @@ if not DDNS.has_proxy then end -- "Force IP Version not supported" -if not DDNS.has_forceip then +if not DDNS.env_info("has_forceip") then local fi = s:option(DummyValue, "_no_force_ip") fi.titleref = DISP.build_url("admin", "system", "packages") fi.rawhtml = true @@ -112,11 +112,11 @@ if not DDNS.has_forceip then translate("Force IP Version not supported") .. bold_off local value = translate("BusyBox's nslookup and Wget do not support to specify " .. "the IP version to use for communication with DDNS Provider!") - if not (DDNS.has_wgetssl or DDNS.has_curl or DDNS.has_fetch) then + if not (DDNS.env_info("has_wgetssl") or DDNS.env_info("has_curl") or DDNS.env_info("has_fetch")) then value = value .. "<br />- " .. translate("You should install 'wget' or 'curl' or 'uclient-fetch' package.") end - if not DDNS.has_bindhost then + if not DDNS.env_info("has_bindhost") then value = value .. "<br />- " .. translate("You should install 'bind-host' or 'knot-host' or 'drill' package for DNS requests.") end @@ -124,7 +124,7 @@ if not DDNS.has_forceip then end -- "DNS requests via TCP not supported" -if not DDNS.has_bindhost then +if not DDNS.env_info("has_bindhost") then local dt = s:option(DummyValue, "_no_dnstcp") dt.titleref = DISP.build_url("admin", "system", "packages") dt.rawhtml = true @@ -137,7 +137,7 @@ if not DDNS.has_bindhost then end -- nslookup compiled with musl produce problems when using -if not DDNS.has_dnsserver then +if not DDNS.env_info("has_dnsserver") then local ds = s:option(DummyValue, "_no_dnsserver") ds.titleref = DISP.build_url("admin", "system", "packages") ds.rawhtml = true @@ -151,7 +151,7 @@ if not DDNS.has_dnsserver then end -- certificates installed -if DDNS.has_ssl and not DDNS.has_cacerts then +if DDNS.env_info("has_ssl") and not DDNS.env_info("has_cacerts") then local ca = s:option(DummyValue, "_no_certs") ca.titleref = DISP.build_url("admin", "system", "packages") ca.rawhtml = true diff --git a/applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua b/applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua index 114f831c17..11f73800ea 100644 --- a/applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua +++ b/applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua @@ -1,21 +1,20 @@ -- Copyright 2014-2018 Christian Schoenebeck <christian dot schoenebeck at gmail dot com> -- Licensed to the public under the Apache License 2.0. -local NXFS = require "nixio.fs" local DISP = require "luci.dispatcher" local HTTP = require "luci.http" local SYS = require "luci.sys" local CTRL = require "luci.controller.ddns" -- this application's controller local DDNS = require "luci.tools.ddns" -- ddns multiused functions -local show_hints = not (DDNS.has_ipv6 -- IPv6 support - and DDNS.has_ssl -- HTTPS support - and DDNS.has_proxy -- Proxy support - and DDNS.has_bindhost -- DNS TCP support - and DDNS.has_forceip -- Force IP version - and DDNS.has_dnsserver -- DNS server support - and DDNS.has_bindnet -- Bind to network/interface - and DDNS.has_cacerts -- certificates installed at /etc/ssl/certs +local show_hints = not (DDNS.env_info("has_ipv6") -- IPv6 support + and DDNS.env_info("has_ssl") -- HTTPS support + and DDNS.env_info("has_proxy") -- Proxy support + and DDNS.env_info("has_bindhost") -- DNS TCP support + and DDNS.env_info("has_forceip") -- Force IP version + and DDNS.env_info("has_dnsserver") -- DNS server support + and DDNS.env_info("has_bindnet") -- Bind to network/interface + and DDNS.env_info("has_cacerts") -- certificates installed at /etc/ssl/certs ) local not_enabled = not SYS.init.enabled("ddns") local need_update = not CTRL.service_ok() diff --git a/applications/luci-app-ddns/luasrc/tools/ddns.lua b/applications/luci-app-ddns/luasrc/tools/ddns.lua index 690b9b30ce..57913a51fe 100755 --- a/applications/luci-app-ddns/luasrc/tools/ddns.lua +++ b/applications/luci-app-ddns/luasrc/tools/ddns.lua @@ -5,36 +5,134 @@ module("luci.tools.ddns", package.seeall) local NX = require "nixio" local NXFS = require "nixio.fs" -local OPKG = require "luci.model.ipkg" local UCI = require "luci.model.uci" local SYS = require "luci.sys" -local UTIL = require "luci.util" -local function _check_certs() - local _, v = NXFS.glob("/etc/ssl/certs/*.crt") - if ( v == 0 ) then _, v = NXFS.glob("/etc/ssl/certs/*.pem") end - return (v > 0) -end +function env_info(type) + + if ( type == "has_ssl" ) or ( type == "has_proxy" ) or ( type == "has_forceip" ) + or ( type == "has_bindnet" ) or ( type == "has_fetch" ) + or ( type == "has_wgetssl" ) or ( type == "has_curl" ) + or ( type == "has_curlssl" ) or ( type == "has_curlpxy" ) + or ( type == "has_fetchssl" ) or ( type == "has_bbwget" ) then + + local function has_wgetssl() + return (SYS.call( [[which wget-ssl >/dev/null 2>&1]] ) == 0) -- and true or nil + end + + local function has_curlssl() + return (SYS.call( [[$(which curl) -V 2>&1 | grep "Protocols:" | grep -qF "https"]] ) ~= 0) + end + + local function has_fetch() + return (SYS.call( [[which uclient-fetch >/dev/null 2>&1]] ) == 0) + end + + local function has_fetchssl() + return NXFS.access("/lib/libustream-ssl.so") + end + + local function has_curl() + return (SYS.call( [[which curl >/dev/null 2>&1]] ) == 0) + end + + local function has_curlpxy() + return (SYS.call( [[grep -i "all_proxy" /usr/lib/libcurl.so* >/dev/null 2>&1]] ) == 0) + end + + local function has_bbwget() + return (SYS.call( [[$(which wget) -V 2>&1 | grep -iqF "busybox"]] ) == 0) + end + + if type == "has_wgetssl" then + return has_wgetssl() + + elseif type == "has_curl" then + return has_curl() + + elseif type == "has_curlssl" then + return has_curlssl() + + elseif type == "has_curlpxy" then + return has_curlpxy() + + elseif type == "has_fetch" then + return has_fetch() + + elseif type == "has_fetchssl" then + return has_fetchssl() + + elseif type == "has_bbwget" then + return has_bbwget() + + elseif type == "has_ssl" then + if has_wgetssl() then return true end + if has_curlssl() then return true end + if (has_fetch() and has_fetchssl()) then return true end + return false + + elseif type == "has_proxy" then + if has_wgetssl() then return true end + if has_curlpxy() then return true end + if has_fetch() then return true end + if has_bbwget() then return true end + return false + + elseif type == "has_forceip" then + if has_wgetssl() then return true end + if has_curl() then return true end + if has_fetch() then return true end -- only really needed for transfer + return false + + elseif type == "has_bindnet" then + if has_curl() then return true end + if has_wgetssl() then return true end + return false + end + + elseif ( type == "has_dnsserver" ) or ( type == "has_bindhost" ) or ( type == "has_hostip" ) or ( type == "has_nslookup" ) then + local function has_bindhost() + if (SYS.call( [[which host >/dev/null 2>&1]] ) == 0) then return true end + if (SYS.call( [[which host >/dev/null 2>&1]] ) == 0) then return true end + if (SYS.call( [[which khost >/dev/null 2>&1]] ) == 0) then return true end + if (SYS.call( [[which drill >/dev/null 2>&1]] ) == 0) then return true end + return false + end + + local function has_hostip() + return (SYS.call( [[which hostip >/dev/null 2>&1]] ) == 0) + end + + local function has_nslookup() + return (SYS.call( [[$(which nslookup) localhost 2>&1 | grep -qF "(null)"]] ) ~= 0) + end + + if type == "has_bindhost" then + return has_bindhost() + elseif type == "has_hostip" then + return has_hostip() + elseif type == "has_nslookup" then + return has_nslookup() + elseif tyep == "has_dnsserver" then + if has_bindhost() then return true end + if has_hostip() then return true end + if has_nslookup() then return true end + return false + end + + elseif type == "has_ipv6" then + return (NXFS.access("/proc/net/ipv6_route") and NXFS.access("/usr/sbin/ip6tables")) + + elseif type == "has_cacerts" then + --old _check_certs() local function + local _, v = NXFS.glob("/etc/ssl/certs/*.crt") + if ( v == 0 ) then _, v = NXFS.glob("/etc/ssl/certs/*.pem") end + return (v > 0) + else + return + end -has_wgetssl = (SYS.call( [[which wget-ssl >/dev/null 2>&1]] ) == 0) -- and true or nil -has_curl = (SYS.call( [[which curl >/dev/null 2>&1]] ) == 0) -has_curlssl = (SYS.call( [[$(which curl) -V 2>&1 | grep "Protocols:" | grep -qF "https"]] ) ~= 0) -has_curlpxy = (SYS.call( [[grep -i "all_proxy" /usr/lib/libcurl.so* >/dev/null 2>&1]] ) == 0) -has_fetch = (SYS.call( [[which uclient-fetch >/dev/null 2>&1]] ) == 0) -has_fetchssl = NXFS.access("/lib/libustream-ssl.so") -has_bbwget = (SYS.call( [[$(which wget) -V 2>&1 | grep -iqF "busybox"]] ) == 0) -has_bindhost = (SYS.call( [[which host >/dev/null 2>&1]] ) == 0) - or (SYS.call( [[which khost >/dev/null 2>&1]] ) == 0) - or (SYS.call( [[which drill >/dev/null 2>&1]] ) == 0) -has_hostip = (SYS.call( [[which hostip >/dev/null 2>&1]] ) == 0) -has_nslookup = (SYS.call( [[$(which nslookup) localhost 2>&1 | grep -qF "(null)"]] ) ~= 0) -has_ipv6 = (NXFS.access("/proc/net/ipv6_route") and NXFS.access("/usr/sbin/ip6tables")) -has_ssl = (has_wgetssl or has_curlssl or (has_fetch and has_fetchssl)) -has_proxy = (has_wgetssl or has_curlpxy or has_fetch or has_bbwget) -has_forceip = (has_wgetssl or has_curl or has_fetch) -- only really needed for transfer -has_dnsserver = (has_bindhost or has_hostip or has_nslookup) -has_bindnet = (has_wgetssl or has_curl) -has_cacerts = _check_certs() +end -- function to calculate seconds from given interval and unit function calc_seconds(interval, unit) diff --git a/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua b/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua index 500e5078f4..2c5083a019 100644 --- a/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua +++ b/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua @@ -3,6 +3,7 @@ local ds = require "luci.dispatcher" local fw = require "luci.model.firewall" +local fs = require "nixio.fs" local m, s, o, p, i, v @@ -32,6 +33,28 @@ for i, v in ipairs(p) do v:value("ACCEPT", translate("accept")) end +-- Netfilter flow offload support + +local offload = fs.access("/sys/module/xt_FLOWOFFLOAD/refcnt") + +if offload then + s:option(DummyValue, "offload_advice", + translate("Routing/NAT Offloading"), + translate("Experimental feature. Not fully compatible with QoS/SQM.")) + + o = s:option(Flag, "flow_offloading", + translate("Software flow offloading"), + translate("Software based offloading for routing/NAT")) + o.optional = true + + o = s:option(Flag, "flow_offloading_hw", + translate("Hardware flow offloading"), + translate("Requires hardware NAT support. Implemented at least for mt7621")) + o.optional = true + o:depends( "flow_offloading", 1) +end + +-- Firewall zones s = m:section(TypedSection, "zone", translate("Zones")) s.template = "cbi/tblsection" diff --git a/applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm b/applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm index b3079f3a48..279b6e06d6 100644 --- a/applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm +++ b/applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm @@ -20,58 +20,58 @@ -%> <div class="cbi-section-create cbi-tblsection-create"> <br /> - <table class="cbi-section-table" style="width:810px; margin-left:5px"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell" colspan="8"><%:New port forward%>:</th> - </tr> - <tr class="cbi-section-table-descr"> - <th class="cbi-section-table-cell"><%:Name%></th> - <th class="cbi-section-table-cell"><%:Protocol%></th> - <th class="cbi-section-table-cell"><%:External zone%></th> - <th class="cbi-section-table-cell"><%:External port%></th> - <th class="cbi-section-table-cell"><%:Internal zone%></th> - <th class="cbi-section-table-cell"><%:Internal IP address%></th> - <th class="cbi-section-table-cell"><%:Internal port%></th> - <th class="cbi-section-table-cell"></th> - </tr> - <tr class="cbi-section-table-row"> - <td class="cbi-section-table-cell"> + <div class="table cbi-section-table" style="width:810px; margin-left:5px"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell" colspan="8"><%:New port forward%>:</div> + </div> + <div class="tr cbi-section-table-descr"> + <div class="th cbi-section-table-cell"><%:Name%></div> + <div class="th cbi-section-table-cell"><%:Protocol%></div> + <div class="th cbi-section-table-cell"><%:External zone%></div> + <div class="th cbi-section-table-cell"><%:External port%></div> + <div class="th cbi-section-table-cell"><%:Internal zone%></div> + <div class="th cbi-section-table-cell"><%:Internal IP address%></div> + <div class="th cbi-section-table-cell"><%:Internal port%></div> + <div class="th cbi-section-table-cell"></div> + </div> + <div class="tr cbi-section-table-row"> + <div class="td cbi-section-table-cell"> <input type="text" class="cbi-input-text" id="_newfwd.name" name="_newfwd.name" placeholder="<%:New port forward%>" /> - </td> - <td class="cbi-section-table-cell" style="width:110px"> + </div> + <div class="td cbi-section-table-cell" style="width:110px"> <select class="cbi-input-select" id="_newfwd.proto" name="_newfwd.proto"> <option value="tcp udp">TCP+UDP</option> <option value="tcp">TCP</option> <option value="udp">UDP</option> <option value="other"><%:Other...%></option> </select> - </td> - <td class="cbi-section-table-cell" style="width:55px"> + </div> + <div class="td cbi-section-table-cell" style="width:55px"> <select class="cbi-input-select" id="_newfwd.extzone" name="_newfwd.extzone"> <% for _, z in ipairs(ezl) do -%><option value="<%=z:name()%>"><%=z:name()%></option><%- end %> </select> - </td> - <td class="cbi-section-table-cell" style="width:110px"> + </div> + <div class="td cbi-section-table-cell" style="width:110px"> <input type="text" class="cbi-input-text" id="_newfwd.extport" name="_newfwd.extport" data-type="portrange" data-optional="true" /> - </td> - <td class="cbi-section-table-cell" style="width:55px"> + </div> + <div class="td cbi-section-table-cell" style="width:55px"> <select class="cbi-input-select" id="_newfwd.intzone" name="_newfwd.intzone"> <% for _, z in ipairs(izl) do -%><option value="<%=z:name()%>"><%=z:name()%></option><%- end %> </select> - </td> - <td class="cbi-section-table-cell" style="width:110px"> + </div> + <div class="td cbi-section-table-cell" style="width:110px"> <input type="text" class="cbi-input-text" id="_newfwd.intaddr" name="_newfwd.intaddr" data-type="host" data-optional="true"<%= ifattr(#keys > 0, "data-choices", {keys, vals}) %>/> - </td> - <td class="cbi-section-table-cell" style="width:110px"> + </div> + <div class="td cbi-section-table-cell" style="width:110px"> <input type="text" class="cbi-input-text" id="_newfwd.intport" name="_newfwd.intport" data-type="portrange" data-optional="true" /> - </td> - <td class="cbi-section-table-cell"> + </div> + <div class="td cbi-section-table-cell"> <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" /> - </td> - </tr> - </table> + </div> + </div> + </div> <script type="text/javascript">//<![CDATA[ cbi_bind(document.getElementById('_newfwd.extport'), 'blur', diff --git a/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm b/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm index b06fac3de4..c99ecaca37 100644 --- a/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm +++ b/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm @@ -8,71 +8,71 @@ <div class="cbi-section-create cbi-tblsection-create"> <% if wz then %> <br /> - <table class="cbi-section-table" style="margin-left:5px"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell left" colspan="4"><%:Open ports on router%>:</th> - </tr> - <tr class="cbi-section-table-descr"> - <th class="cbi-section-table-cell"><%:Name%></th> - <th class="cbi-section-table-cell"><%:Protocol%></th> - <th class="cbi-section-table-cell"><%:External port%></th> - <th class="cbi-section-table-cell"></th> - </tr> - <tr class="cbi-section-table-row"> - <td class="cbi-section-table-cell" style="width:130px"> + <div class="table cbi-section-table" style="margin-left:5px"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell left" colspan="4"><%:Open ports on router%>:</div> + </div> + <div class="tr cbi-section-table-descr"> + <div class="th cbi-section-table-cell"><%:Name%></div> + <div class="th cbi-section-table-cell"><%:Protocol%></div> + <div class="th cbi-section-table-cell"><%:External port%></div> + <div class="th cbi-section-table-cell"></div> + </div> + <div class="tr cbi-section-table-row"> + <div class="td cbi-section-table-cell" style="width:130px"> <input type="text" class="cbi-input-text" id="_newopen.name" name="_newopen.name" placeholder="<%:New input rule%>" /> - </td> - <td class="cbi-section-table-cell" style="width:110px"> + </div> + <div class="td cbi-section-table-cell" style="width:110px"> <select class="cbi-input-select" id="_newopen.proto" name="_newopen.proto"> <option value="tcp udp">TCP+UDP</option> <option value="tcp">TCP</option> <option value="udp">UDP</option> <option value="other"><%:Other...%></option> </select> - </td> - <td class="cbi-section-table-cell" style="width:110px"> + </div> + <div class="td cbi-section-table-cell" style="width:110px"> <input type="text" class="cbi-input-text" id="_newopen.extport" name="_newopen.extport" /> - </td> - <td class="cbi-section-table-cell left"> + </div> + <div class="td cbi-section-table-cell left"> <input type="submit" class="cbi-button cbi-button-add" name="_newopen.submit" value="<%:Add%>" /> - </td> - </tr> - </table> + </div> + </div> + </div> <% end %> <% if #zones > 1 then %> - <table class="cbi-section-table" style="margin-left:5px"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell left" colspan="6"><br /><%:New forward rule%>:</th> - </tr> - <tr class="cbi-section-table-descr"> - <th class="cbi-section-table-cell"><%:Name%></th> - <th class="cbi-section-table-cell"><%:Source zone%></th> - <th class="cbi-section-table-cell"><%:Destination zone%></th> - <th class="cbi-section-table-cell"></th> - </tr> - <tr class="cbi-section-table-row"> - <td class="cbi-section-table-cell" style="width:130px"> + <div class="table cbi-section-table" style="margin-left:5px"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell left" colspan="6"><br /><%:New forward rule%>:</div> + </div> + <div class="tr cbi-section-table-descr"> + <div class="th cbi-section-table-cell"><%:Name%></div> + <div class="th cbi-section-table-cell"><%:Source zone%></div> + <div class="th cbi-section-table-cell"><%:Destination zone%></div> + <div class="th cbi-section-table-cell"></div> + </div> + <div class="tr cbi-section-table-row"> + <div class="td cbi-section-table-cell" style="width:130px"> <input type="text" class="cbi-input-text" id="_newfwd.name" name="_newfwd.name" placeholder="<%:New forward rule%>" /> - </td> - <td class="cbi-section-table-cell" style="width:110px"> + </div> + <div class="td cbi-section-table-cell" style="width:110px"> <select class="cbi-input-text" id="_newfwd.src" name="_newfwd.src"> <% local k, v; for k, v in ipairs(fw:get_zones()) do -%> <option<%=ifattr(v:name() == "wan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option> <%- end %> </select> - </td> - <td class="cbi-section-table-cell" style="width:110px"> + </div> + <div class="td cbi-section-table-cell" style="width:110px"> <select class="cbi-input-text" id="_newfwd.dest" name="_newfwd.dest"> <% local k, v; for k, v in ipairs(fw:get_zones()) do -%> <option<%=ifattr(v:name() == "lan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option> <%- end %> </select> - </td> - <td class="cbi-section-table-cell left"> + </div> + <div class="td cbi-section-table-cell left"> <input type="submit" class="cbi-button cbi-button-link" name="_newfwd.submit" value="<%:Add and edit...%>" /> - </td> - </tr> - </table> + </div> + </div> + </div> <% else %> <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" /> <% end %> diff --git a/applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm b/applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm index 0a5913fc00..b2775cf694 100644 --- a/applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm +++ b/applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm @@ -15,49 +15,49 @@ <div class="cbi-section-create cbi-tblsection-create"> <% if #zones > 1 then %> <br /> - <table class="cbi-section-table" style="width:700px; margin-left:5px"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell left" colspan="6"><%:New source NAT%>:</th> - </tr> - <tr class="cbi-section-table-descr"> - <th class="cbi-section-table-cell"><%:Name%></th> - <th class="cbi-section-table-cell"><%:Source zone%></th> - <th class="cbi-section-table-cell"><%:Destination zone%></th> - <th class="cbi-section-table-cell"><%:To source IP%></th> - <th class="cbi-section-table-cell"><%:To source port%></th> - <th class="cbi-section-table-cell"></th> - </tr> - <tr class="cbi-section-table-row"> - <td class="cbi-section-table-cell"> + <div class="table cbi-section-table" style="width:700px; margin-left:5px"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell left" colspan="6"><%:New source NAT%>:</div> + </div> + <div class="tr cbi-section-table-descr"> + <div class="th cbi-section-table-cell"><%:Name%></div> + <div class="th cbi-section-table-cell"><%:Source zone%></div> + <div class="th cbi-section-table-cell"><%:Destination zone%></div> + <div class="th cbi-section-table-cell"><%:To source IP%></div> + <div class="th cbi-section-table-cell"><%:To source port%></div> + <div class="th cbi-section-table-cell"></div> + </div> + <div class="tr cbi-section-table-row"> + <div class="td cbi-section-table-cell"> <input type="text" class="cbi-input-text" id="_newsnat.name" name="_newsnat.name" placeholder="<%:New SNAT rule%>" /> - </td> - <td class="cbi-section-table-cell" style="width:110px"> + </div> + <div class="td cbi-section-table-cell" style="width:110px"> <select class="cbi-input-text" id="_newsnat.src" name="_newsnat.src"> <% local k, v; for k, v in ipairs(fw:get_zones()) do -%> <option<%=ifattr(v:name() == "lan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option> <%- end %> </select> - </td> - <td class="cbi-section-table-cell" style="width:110px"> + </div> + <div class="td cbi-section-table-cell" style="width:110px"> <select class="cbi-input-text" id="_newsnat.dest" name="_newsnat.dest"> <% local k, v; for k, v in ipairs(fw:get_zones()) do -%> <option<%=ifattr(v:name() == "wan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option> <%- end %> </select> - </td> - <td class="cbi-section-table-cell" style="width:110px"> + </div> + <div class="td cbi-section-table-cell" style="width:110px"> <input type="text" class="cbi-input-text" id="_newsnat.dip" name="_newsnat.dip" placeholder="<%:Do not rewrite%>" data-type="ip4addr" data-optional="true"<%= ifattr(#keys > 0, "data-choices", { keys, vals }) %> /> - </td> - <td class="cbi-section-table-cell" style="width:110px"> + </div> + <div class="td cbi-section-table-cell" style="width:110px"> <input type="text" class="cbi-input-text" id="_newsnat.dport" name="_newsnat.dport" placeholder="<%:Do not rewrite%>" data-type="portrange" data-optional="true" /> - </td> - <td class="cbi-section-table-cell"> + </div> + <div class="td cbi-section-table-cell"> <input type="submit" class="cbi-button cbi-button-link" name="_newsnat.submit" value="<%:Add and edit...%>" /> - </td> - </tr> - </table> + </div> + </div> + </div> <% else %> <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" /> <% end %> diff --git a/applications/luci-app-firewall/po/ca/firewall.po b/applications/luci-app-firewall/po/ca/firewall.po index ff43427eed..2ccffca9a7 100644 --- a/applications/luci-app-firewall/po/ca/firewall.po +++ b/applications/luci-app-firewall/po/ca/firewall.po @@ -130,6 +130,9 @@ msgstr "Habilita protecció contra la inundació SYN" msgid "Enable logging on this zone" msgstr "Habilita el registre d'aquesta zona" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "Adreça IP extern" @@ -181,6 +184,9 @@ msgstr "Des de %s en %s amb orÃgens %s i %s" msgid "General Settings" msgstr "Ajusts generals" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -337,6 +343,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -365,6 +374,9 @@ msgstr "Reescriu a l'origen %s" msgid "Rewrite to source %s, %s" msgstr "Reescriu als orÃgens %s, %s" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -380,6 +392,12 @@ msgstr "Port SNAT" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "Adreça IP d'origen" diff --git a/applications/luci-app-firewall/po/cs/firewall.po b/applications/luci-app-firewall/po/cs/firewall.po index caa7e19988..4cbf356d0b 100644 --- a/applications/luci-app-firewall/po/cs/firewall.po +++ b/applications/luci-app-firewall/po/cs/firewall.po @@ -125,6 +125,9 @@ msgstr "Povolit ochranu proti SYN-flood" msgid "Enable logging on this zone" msgstr "Povolit logovánà v této oblasti" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "VnÄ›jÅ¡Ã IP adresa" @@ -176,6 +179,9 @@ msgstr "Z %s v %s se zdrojovou %s a %s" msgid "General Settings" msgstr "Obecné nastavenÃ" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -334,6 +340,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -362,6 +371,9 @@ msgstr "PÅ™epsat na zdrojovou %s" msgid "Rewrite to source %s, %s" msgstr "PÅ™epsat na zdrojovou %s, %s" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -377,6 +389,12 @@ msgstr "Port SNATu" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "Zdrojová IP adresa" diff --git a/applications/luci-app-firewall/po/de/firewall.po b/applications/luci-app-firewall/po/de/firewall.po index fcf8bec679..0ee6007dd6 100644 --- a/applications/luci-app-firewall/po/de/firewall.po +++ b/applications/luci-app-firewall/po/de/firewall.po @@ -128,6 +128,9 @@ msgstr "Schutz vor SYN-flood-Attacken" msgid "Enable logging on this zone" msgstr "Protokollierung innerhalb der Zone aktivieren" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "Externe IP-Adresse" @@ -179,6 +182,9 @@ msgstr "Von %s in %s mit Quell-%s und %s" msgid "General Settings" msgstr "Allgemein" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -334,6 +340,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -362,6 +371,9 @@ msgstr "Schreibe um auf Quell-%s" msgid "Rewrite to source %s, %s" msgstr "Schreibe um auf Quell-%s, %s" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -377,6 +389,12 @@ msgstr "SNAT-Port" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "Quell-IP-Adresse" diff --git a/applications/luci-app-firewall/po/el/firewall.po b/applications/luci-app-firewall/po/el/firewall.po index 598927557b..9ddd4c9db1 100644 --- a/applications/luci-app-firewall/po/el/firewall.po +++ b/applications/luci-app-firewall/po/el/firewall.po @@ -126,6 +126,9 @@ msgstr "Î Ïοστασία SYN-flood" msgid "Enable logging on this zone" msgstr "" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "ΕξωτεÏική διεÏθυνση IP" @@ -177,6 +180,9 @@ msgstr "" msgid "General Settings" msgstr "ΓενικÎÏ‚ Ρυθμίσεις" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -327,6 +333,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -353,6 +362,9 @@ msgstr "" msgid "Rewrite to source %s, %s" msgstr "" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -368,6 +380,12 @@ msgstr "" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + #, fuzzy msgid "Source IP address" msgstr "ΔιεÏθυνση MAC πηγής" diff --git a/applications/luci-app-firewall/po/en/firewall.po b/applications/luci-app-firewall/po/en/firewall.po index df1ed4a088..f0fe0b3782 100644 --- a/applications/luci-app-firewall/po/en/firewall.po +++ b/applications/luci-app-firewall/po/en/firewall.po @@ -122,6 +122,9 @@ msgstr "Enable SYN-flood protection" msgid "Enable logging on this zone" msgstr "" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "" @@ -177,6 +180,9 @@ msgstr "" msgid "General Settings" msgstr "" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -327,6 +333,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -353,6 +362,9 @@ msgstr "" msgid "Rewrite to source %s, %s" msgstr "" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -368,6 +380,12 @@ msgstr "" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # diff --git a/applications/luci-app-firewall/po/es/firewall.po b/applications/luci-app-firewall/po/es/firewall.po index bae8b693da..000853e9bd 100644 --- a/applications/luci-app-firewall/po/es/firewall.po +++ b/applications/luci-app-firewall/po/es/firewall.po @@ -129,6 +129,9 @@ msgstr "Activar protección a inundación-SYN" msgid "Enable logging on this zone" msgstr "Activar registro en esta zona" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "Dirección IP externa" @@ -180,6 +183,9 @@ msgstr "Desde %s en %s con origen %s y %s" msgid "General Settings" msgstr "Configuración general" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -336,6 +342,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -364,6 +373,9 @@ msgstr "Reescribir a origen %s" msgid "Rewrite to source %s, %s" msgstr "Reescribir a origen %s, %s" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -379,6 +391,12 @@ msgstr "Puerto SNAT" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "Dirección IP origen" diff --git a/applications/luci-app-firewall/po/fr/firewall.po b/applications/luci-app-firewall/po/fr/firewall.po index 281999b550..74c28b8836 100644 --- a/applications/luci-app-firewall/po/fr/firewall.po +++ b/applications/luci-app-firewall/po/fr/firewall.po @@ -124,6 +124,9 @@ msgstr "Activer la protection contre le SYN-flood" msgid "Enable logging on this zone" msgstr "Activer les traces (logs) sur cette zone" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "Adresse IP externe" @@ -179,6 +182,9 @@ msgstr "" msgid "General Settings" msgstr "Paramètres généraux" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -332,6 +338,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -362,6 +371,9 @@ msgstr "" msgid "Rewrite to source %s, %s" msgstr "" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -377,6 +389,12 @@ msgstr "Port SNAT" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # diff --git a/applications/luci-app-firewall/po/he/firewall.po b/applications/luci-app-firewall/po/he/firewall.po index 06952d4901..0416661c26 100644 --- a/applications/luci-app-firewall/po/he/firewall.po +++ b/applications/luci-app-firewall/po/he/firewall.po @@ -119,6 +119,9 @@ msgstr "" msgid "Enable logging on this zone" msgstr "" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "" @@ -170,6 +173,9 @@ msgstr "" msgid "General Settings" msgstr "" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -317,6 +323,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -343,6 +352,9 @@ msgstr "" msgid "Rewrite to source %s, %s" msgstr "" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -358,6 +370,12 @@ msgstr "" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "" diff --git a/applications/luci-app-firewall/po/hu/firewall.po b/applications/luci-app-firewall/po/hu/firewall.po index 29aa324187..33a305ce8e 100644 --- a/applications/luci-app-firewall/po/hu/firewall.po +++ b/applications/luci-app-firewall/po/hu/firewall.po @@ -126,6 +126,9 @@ msgstr "SYN-flood védelem engedélyezése" msgid "Enable logging on this zone" msgstr "Naplózás engeélyezése ezen a zónán" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "KülsÅ‘ IP cÃm" @@ -177,6 +180,9 @@ msgstr "%s felÅ‘l %s-ben %s és %s forrással" msgid "General Settings" msgstr "Ãltalános beállÃtások" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -338,6 +344,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -366,6 +375,9 @@ msgstr "ÃtÃrás %s forrásra" msgid "Rewrite to source %s, %s" msgstr "ÃtÃrás %s, %s forrásra" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -381,6 +393,12 @@ msgstr "SNAT port" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "Forrás IP cÃm" diff --git a/applications/luci-app-firewall/po/it/firewall.po b/applications/luci-app-firewall/po/it/firewall.po index 43b90a9e9b..4808d12475 100644 --- a/applications/luci-app-firewall/po/it/firewall.po +++ b/applications/luci-app-firewall/po/it/firewall.po @@ -128,6 +128,9 @@ msgstr "Attiva protezione SYN-flood" msgid "Enable logging on this zone" msgstr "Attiva registro su questa zona" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "Indirizzo IP Esterno" @@ -179,6 +182,9 @@ msgstr "Da %s a %s con sorgente %s e %s" msgid "General Settings" msgstr "Opzioni Generali" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -334,6 +340,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "Riavvia Firewall" @@ -362,6 +371,9 @@ msgstr "Riscrivi alla sorgente %s" msgid "Rewrite to source %s, %s" msgstr "Riscrivi alla sorgente %s, %s" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -377,6 +389,12 @@ msgstr "Porta SNAT" msgid "Saturday" msgstr "Sabato" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # diff --git a/applications/luci-app-firewall/po/ja/firewall.po b/applications/luci-app-firewall/po/ja/firewall.po index 2d252797ff..27109904ba 100644 --- a/applications/luci-app-firewall/po/ja/firewall.po +++ b/applications/luci-app-firewall/po/ja/firewall.po @@ -3,14 +3,14 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2018-01-15 14:56+0900\n" +"PO-Revision-Date: 2018-05-27 21:24+0900\n" "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.0.5\n" +"X-Generator: Poedit 2.0.7\n" "Language-Team: \n" msgid "%s in %s" @@ -129,6 +129,9 @@ msgstr "SYN-Floodプãƒãƒ†ã‚¯ã‚·ãƒ§ãƒ³ã‚’有効ã«ã™ã‚‹" msgid "Enable logging on this zone" msgstr "ã“ã®ã‚¾ãƒ¼ãƒ³ã®ãƒã‚°è¨˜éŒ²ã‚’有効ã«ã™ã‚‹" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "実験的ãªæ©Ÿèƒ½ã§ã™ã€‚ QoS/SQM ã¨ã®å®Œå…¨ãªäº’æ›æ€§ã¯ã‚ã‚Šã¾ã›ã‚“。" + msgid "External IP address" msgstr "外部IPアドレス" @@ -180,6 +183,9 @@ msgstr "é€ä¿¡å…ƒ %s (%s) , é€ä¿¡å…ƒ %s, é€ä¿¡å…ƒ %s" msgid "General Settings" msgstr "一般è¨å®š" +msgid "Hardware flow offloading" +msgstr "ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ フãƒãƒ¼ã‚ªãƒ•ãƒãƒ¼ãƒ‰" + msgid "IP" msgstr "IP" @@ -343,6 +349,10 @@ msgstr "転é€ã‚’æ‹’å¦" msgid "Refuse input" msgstr "入力を拒å¦" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" +"ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ NAT サãƒãƒ¼ãƒˆãŒå¿…è¦ã§ã™ã€‚ mt7621 ã®ã¿ã«ãŠã„ã¦å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã™ã€‚" + msgid "Restart Firewall" msgstr "ファイアウォールã®å†èµ·å‹•" @@ -372,6 +382,9 @@ msgstr "é€ä¿¡å…ƒ %s ã«ãƒªãƒ©ã‚¤ãƒˆ" msgid "Rewrite to source %s, %s" msgstr "é€ä¿¡å…ƒ %s, %s ã«ãƒªãƒ©ã‚¤ãƒˆ" +msgid "Routing/NAT Offloading" +msgstr "ルーティング/NAT オフãƒãƒ¼ãƒ‰" + msgid "Rule is disabled" msgstr "ルールã¯ç„¡åŠ¹ã§ã™" @@ -387,6 +400,12 @@ msgstr "SNAT ãƒãƒ¼ãƒˆ" msgid "Saturday" msgstr "土曜日" +msgid "Software based offloading for routing/NAT" +msgstr "ルーティング/NAT ã®ãŸã‚ã®ã€ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ãƒ™ãƒ¼ã‚¹ã®ã‚ªãƒ•ãƒãƒ¼ãƒ‰ã§ã™ã€‚" + +msgid "Software flow offloading" +msgstr "ソフトウェア フãƒãƒ¼ã‚ªãƒ•ãƒãƒ¼ãƒ‰" + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # diff --git a/applications/luci-app-firewall/po/ko/firewall.po b/applications/luci-app-firewall/po/ko/firewall.po index bfe94d04a8..dd4f96197a 100644 --- a/applications/luci-app-firewall/po/ko/firewall.po +++ b/applications/luci-app-firewall/po/ko/firewall.po @@ -127,6 +127,9 @@ msgstr "SYN-flood protection 활성화" msgid "Enable logging on this zone" msgstr "zone ì˜ logging 활성화" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "외부 IP 주소" @@ -178,6 +181,9 @@ msgstr "" msgid "General Settings" msgstr "" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -327,6 +333,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -353,6 +362,9 @@ msgstr "" msgid "Rewrite to source %s, %s" msgstr "" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -368,6 +380,12 @@ msgstr "" msgid "Saturday" msgstr "í† ìš”ì¼" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "Source IP 주소" diff --git a/applications/luci-app-firewall/po/ms/firewall.po b/applications/luci-app-firewall/po/ms/firewall.po index c6ab19791e..58aea1fd0b 100644 --- a/applications/luci-app-firewall/po/ms/firewall.po +++ b/applications/luci-app-firewall/po/ms/firewall.po @@ -118,6 +118,9 @@ msgstr "" msgid "Enable logging on this zone" msgstr "" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "" @@ -169,6 +172,9 @@ msgstr "" msgid "General Settings" msgstr "" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -316,6 +322,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -342,6 +351,9 @@ msgstr "" msgid "Rewrite to source %s, %s" msgstr "" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -357,6 +369,12 @@ msgstr "" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "" diff --git a/applications/luci-app-firewall/po/no/firewall.po b/applications/luci-app-firewall/po/no/firewall.po index e9ecb2b63c..2a13b6b3cd 100644 --- a/applications/luci-app-firewall/po/no/firewall.po +++ b/applications/luci-app-firewall/po/no/firewall.po @@ -122,6 +122,9 @@ msgstr "Aktiver SYN-flood beskyttelse" msgid "Enable logging on this zone" msgstr "Aktiver logging av denne sonen" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "Ekstern IP adressse" @@ -174,6 +177,9 @@ msgstr "Fra %s i %s med kilde %s og %s" msgid "General Settings" msgstr "Generelle Innstillinger" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -333,6 +339,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -361,6 +370,9 @@ msgstr "Omskriv til kilde %s" msgid "Rewrite to source %s, %s" msgstr "Omskriv til kilde %s, %s" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -376,6 +388,12 @@ msgstr "SNAT port" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "Kilde IP adresse" diff --git a/applications/luci-app-firewall/po/pl/firewall.po b/applications/luci-app-firewall/po/pl/firewall.po index fe48060237..a08a1e5606 100644 --- a/applications/luci-app-firewall/po/pl/firewall.po +++ b/applications/luci-app-firewall/po/pl/firewall.po @@ -129,6 +129,9 @@ msgstr "WÅ‚Ä…cz ochronÄ™ przed atakiem SYN-flood" msgid "Enable logging on this zone" msgstr "WÅ‚Ä…cz logowanie na tej strefy" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "ZewnÄ™trzne adresy IP" @@ -183,6 +186,9 @@ msgstr "Z %s w %s ze źródÅ‚em %s i %s" msgid "General Settings" msgstr "Ustawienia ogólne" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -342,6 +348,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -374,6 +383,9 @@ msgstr "Przepisz do źródÅ‚a %s" msgid "Rewrite to source %s, %s" msgstr "Przepisz do źródÅ‚a %s, %s" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -389,6 +401,12 @@ msgstr "Port SNAT" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "ŹródÅ‚owy adres IP" diff --git a/applications/luci-app-firewall/po/pt-br/firewall.po b/applications/luci-app-firewall/po/pt-br/firewall.po index b49adccdda..7da028bee4 100644 --- a/applications/luci-app-firewall/po/pt-br/firewall.po +++ b/applications/luci-app-firewall/po/pt-br/firewall.po @@ -127,6 +127,9 @@ msgstr "Habilite proteção contra SYN-flood" msgid "Enable logging on this zone" msgstr "Habilite o registro nesta zona" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "Endereço IP externo" @@ -178,6 +181,9 @@ msgstr "Vindo de %s em %s com origem %s e %s" msgid "General Settings" msgstr "Configurações Gerais" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -337,6 +343,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "Reiniciar o Firewall" @@ -365,6 +374,9 @@ msgstr "Reescrever para a origem %s" msgid "Rewrite to source %s, %s" msgstr "Reescrever para a origem %s, %s" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -380,6 +392,12 @@ msgstr "Porta da SNAT" msgid "Saturday" msgstr "Sábado" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "Endereço IP de origem" diff --git a/applications/luci-app-firewall/po/pt/firewall.po b/applications/luci-app-firewall/po/pt/firewall.po index 29a7c7c2c7..543489e1ad 100644 --- a/applications/luci-app-firewall/po/pt/firewall.po +++ b/applications/luci-app-firewall/po/pt/firewall.po @@ -128,6 +128,9 @@ msgstr "Ativar a Proteção SYN-flood" msgid "Enable logging on this zone" msgstr "Ativar registo nesta zona" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "Endereço IP externo" @@ -179,6 +182,9 @@ msgstr "De %s em %s com origem %s e %s" msgid "General Settings" msgstr "Definições Gerais" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -339,6 +345,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -365,6 +374,9 @@ msgstr "Re-escrever para a origem %s" msgid "Rewrite to source %s, %s" msgstr "Re-escrever para a origem %s, %s" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -380,6 +392,12 @@ msgstr "Porta SNAT" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "Endereço IP de origem" diff --git a/applications/luci-app-firewall/po/ro/firewall.po b/applications/luci-app-firewall/po/ro/firewall.po index cc4d7a62af..937efe722b 100644 --- a/applications/luci-app-firewall/po/ro/firewall.po +++ b/applications/luci-app-firewall/po/ro/firewall.po @@ -123,6 +123,9 @@ msgstr "Activează protecÅ£ia SYN-flood" msgid "Enable logging on this zone" msgstr "Activeaza log in aceasta zona" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "Adresă IP externă" @@ -174,6 +177,9 @@ msgstr "" msgid "General Settings" msgstr "Setari generale" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -321,6 +327,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -347,6 +356,9 @@ msgstr "" msgid "Rewrite to source %s, %s" msgstr "" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -362,6 +374,12 @@ msgstr "" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "Sursă adresă IP" diff --git a/applications/luci-app-firewall/po/ru/firewall.po b/applications/luci-app-firewall/po/ru/firewall.po index b8611af780..528756d7e3 100644 --- a/applications/luci-app-firewall/po/ru/firewall.po +++ b/applications/luci-app-firewall/po/ru/firewall.po @@ -130,6 +130,9 @@ msgstr "Включить защиту<br />от SYN-flood атак" msgid "Enable logging on this zone" msgstr "Включить журналирование в Ñтой зоне" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "Внешний IP-адреÑ" @@ -181,6 +184,9 @@ msgstr "Из %s в %s Ñ Ð¸Ñточниками %s и %s" msgid "General Settings" msgstr "ОÑновные наÑтройки" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "IP-адреÑ" @@ -346,6 +352,9 @@ msgstr "СбраÑывать перенаправление" msgid "Refuse input" msgstr "СбраÑывать входÑщий трафик" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "ПерезапуÑтить межÑетевой Ñкран" @@ -374,6 +383,9 @@ msgstr "ПеренаправлÑÑ‚ÑŒ к иÑточнику %s" msgid "Rewrite to source %s, %s" msgstr "ПеренаправлÑÑ‚ÑŒ к иÑточнику %s, %s" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "Правило отключено" @@ -389,6 +401,12 @@ msgstr "Порт SNAT" msgid "Saturday" msgstr "Суббота" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "IP-Ð°Ð´Ñ€ÐµÑ Ð¸Ñточника" diff --git a/applications/luci-app-firewall/po/sk/firewall.po b/applications/luci-app-firewall/po/sk/firewall.po index a185625a02..a382bde7db 100644 --- a/applications/luci-app-firewall/po/sk/firewall.po +++ b/applications/luci-app-firewall/po/sk/firewall.po @@ -119,6 +119,9 @@ msgstr "" msgid "Enable logging on this zone" msgstr "" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "" @@ -170,6 +173,9 @@ msgstr "" msgid "General Settings" msgstr "" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -317,6 +323,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -343,6 +352,9 @@ msgstr "" msgid "Rewrite to source %s, %s" msgstr "" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -358,6 +370,12 @@ msgstr "" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "" diff --git a/applications/luci-app-firewall/po/sv/firewall.po b/applications/luci-app-firewall/po/sv/firewall.po index c98eafa09a..d5f6a2d8a5 100644 --- a/applications/luci-app-firewall/po/sv/firewall.po +++ b/applications/luci-app-firewall/po/sv/firewall.po @@ -120,6 +120,9 @@ msgstr "" msgid "Enable logging on this zone" msgstr "Aktivera loggning i den här zonen" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "Extern IP-adress" @@ -171,6 +174,9 @@ msgstr "FrÃ¥n %s i %s med källa %s och %s" msgid "General Settings" msgstr "Generella inställningar" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -323,6 +329,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "Starta om brandvägg" @@ -349,6 +358,9 @@ msgstr "Skriv om igen till källan %s" msgid "Rewrite to source %s, %s" msgstr "" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -364,6 +376,12 @@ msgstr "SNAT-port" msgid "Saturday" msgstr "Lördag" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "IP-adress för källa" diff --git a/applications/luci-app-firewall/po/templates/firewall.pot b/applications/luci-app-firewall/po/templates/firewall.pot index 62c4a2e84a..6ff4c3ca0f 100644 --- a/applications/luci-app-firewall/po/templates/firewall.pot +++ b/applications/luci-app-firewall/po/templates/firewall.pot @@ -112,6 +112,9 @@ msgstr "" msgid "Enable logging on this zone" msgstr "" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "" @@ -163,6 +166,9 @@ msgstr "" msgid "General Settings" msgstr "" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -310,6 +316,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -336,6 +345,9 @@ msgstr "" msgid "Rewrite to source %s, %s" msgstr "" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -351,6 +363,12 @@ msgstr "" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "" diff --git a/applications/luci-app-firewall/po/tr/firewall.po b/applications/luci-app-firewall/po/tr/firewall.po index f23d10aafc..1dd1e6f9cf 100644 --- a/applications/luci-app-firewall/po/tr/firewall.po +++ b/applications/luci-app-firewall/po/tr/firewall.po @@ -119,6 +119,9 @@ msgstr "" msgid "Enable logging on this zone" msgstr "" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "" @@ -170,6 +173,9 @@ msgstr "" msgid "General Settings" msgstr "" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -317,6 +323,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -343,6 +352,9 @@ msgstr "" msgid "Rewrite to source %s, %s" msgstr "" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -358,6 +370,12 @@ msgstr "" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "" diff --git a/applications/luci-app-firewall/po/uk/firewall.po b/applications/luci-app-firewall/po/uk/firewall.po index de72ec6e0a..86ff65edf1 100644 --- a/applications/luci-app-firewall/po/uk/firewall.po +++ b/applications/luci-app-firewall/po/uk/firewall.po @@ -127,6 +127,9 @@ msgstr "Увімкнути захиÑÑ‚ від SYN-flood" msgid "Enable logging on this zone" msgstr "Увімкнути реєÑÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ цій зоні" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "Ð—Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ IP-адреÑа" @@ -178,6 +181,9 @@ msgstr "%s у %s з вихідним %s та %s" msgid "General Settings" msgstr "Загальні наÑтройки" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -337,6 +343,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -365,6 +374,9 @@ msgstr "Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñ Ð½Ð° вихідний %s" msgid "Rewrite to source %s, %s" msgstr "Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñ Ð½Ð° вихідний %s, %s" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -380,6 +392,12 @@ msgstr "Порт SNAT" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "IP-адреÑа джерела" diff --git a/applications/luci-app-firewall/po/vi/firewall.po b/applications/luci-app-firewall/po/vi/firewall.po index 24452ff1c0..bd33afcd09 100644 --- a/applications/luci-app-firewall/po/vi/firewall.po +++ b/applications/luci-app-firewall/po/vi/firewall.po @@ -126,6 +126,9 @@ msgstr "SYN-flood bảo vệ " msgid "Enable logging on this zone" msgstr "" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "" @@ -177,6 +180,9 @@ msgstr "" msgid "General Settings" msgstr "" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -327,6 +333,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "" @@ -353,6 +362,9 @@ msgstr "" msgid "Rewrite to source %s, %s" msgstr "" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -368,6 +380,12 @@ msgstr "" msgid "Saturday" msgstr "" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + #, fuzzy msgid "Source IP address" msgstr "Äỉa chỉ MAC nguồn" diff --git a/applications/luci-app-firewall/po/zh-cn/firewall.po b/applications/luci-app-firewall/po/zh-cn/firewall.po index 9e9c64d670..46da547c08 100644 --- a/applications/luci-app-firewall/po/zh-cn/firewall.po +++ b/applications/luci-app-firewall/po/zh-cn/firewall.po @@ -124,6 +124,9 @@ msgstr "å¯ç”¨ SYN-flood 防御" msgid "Enable logging on this zone" msgstr "å¯ç”¨æ¤åŒºåŸŸçš„日志记录" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "实验特性。与 QoS/SQM ä¸å®Œå…¨å…¼å®¹ã€‚" + msgid "External IP address" msgstr "外部 IP 地å€" @@ -175,6 +178,9 @@ msgstr "æ¥è‡ª %s ä½äºŽ %s æºç«¯å£ %s æº MAC %s" msgid "General Settings" msgstr "基本设置" +msgid "Hardware flow offloading" +msgstr "硬件æµé‡å¸è½½" + msgid "IP" msgstr "IP" @@ -323,6 +329,9 @@ msgstr "æ‹’ç»è½¬å‘" msgid "Refuse input" msgstr "æ‹’ç»å…¥ç«™" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "需è¦ç¡¬ä»¶ NAT 支æŒã€‚ç›®å‰ mt7621 已实现" + msgid "Restart Firewall" msgstr "é‡å¯é˜²ç«å¢™" @@ -349,6 +358,9 @@ msgstr "æºåœ°å€æ”¹å†™æˆ %s" msgid "Rewrite to source %s, %s" msgstr "æºåœ°å€æ”¹å†™æˆ %s, %s" +msgid "Routing/NAT Offloading" +msgstr "Routing/NAT å¸è½½" + msgid "Rule is disabled" msgstr "规则已ç¦ç”¨" @@ -364,6 +376,12 @@ msgstr "SNAT 端å£" msgid "Saturday" msgstr "星期å…" +msgid "Software based offloading for routing/NAT" +msgstr "基于软件的 Routing/NAT å¸è½½" + +msgid "Software flow offloading" +msgstr "软件æµé‡å¸è½½" + msgid "Source IP address" msgstr "æº IP 地å€" diff --git a/applications/luci-app-firewall/po/zh-tw/firewall.po b/applications/luci-app-firewall/po/zh-tw/firewall.po index afc9c4e33c..1fbe970ddb 100644 --- a/applications/luci-app-firewall/po/zh-tw/firewall.po +++ b/applications/luci-app-firewall/po/zh-tw/firewall.po @@ -124,6 +124,9 @@ msgstr "啟用 SYN-flood 防禦" msgid "Enable logging on this zone" msgstr "啟用æ¤å€åŸŸçš„日誌記錄" +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "" + msgid "External IP address" msgstr "外部 IP ä½å€" @@ -175,6 +178,9 @@ msgstr "來自 %s ä½æ–¼ %s æºåŸ %s æº MAC %s" msgid "General Settings" msgstr "基本è¨å®š" +msgid "Hardware flow offloading" +msgstr "" + msgid "IP" msgstr "" @@ -322,6 +328,9 @@ msgstr "" msgid "Refuse input" msgstr "" +msgid "Requires hardware NAT support. Implemented at least for mt7621" +msgstr "" + msgid "Restart Firewall" msgstr "é‡å•Ÿé˜²ç«ç‰†" @@ -348,6 +357,9 @@ msgstr "æºä½å€æ”¹å¯«æˆ %s" msgid "Rewrite to source %s, %s" msgstr "æºä½å€æ”¹å¯«æˆ %s, %s" +msgid "Routing/NAT Offloading" +msgstr "" + msgid "Rule is disabled" msgstr "" @@ -363,6 +375,12 @@ msgstr "SNAT åŸ " msgid "Saturday" msgstr "星期å…" +msgid "Software based offloading for routing/NAT" +msgstr "" + +msgid "Software flow offloading" +msgstr "" + msgid "Source IP address" msgstr "æº IP ä½å€" diff --git a/applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm b/applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm index d861ef9fcb..2fd7168bd2 100644 --- a/applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm +++ b/applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm @@ -5,13 +5,12 @@ XHR.poll(5, '<%=url('admin/telephony/status')%>', null, var tb = document.getElementById('telephony_status_table'); if (st && tb) { - tb.deleteRow(1); - var tr = tb.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-1'; - - tr.insertCell(-1).innerHTML = st.status; - tr.insertCell(-1).innerHTML = st.line1; - tr.insertCell(-1).innerHTML = st.line2; + tb.removeChild(tb.firstChild); + tb.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-1">', [ + E('<div class="td">', st.status), + E('<div class="td">', st.line1), + E('<div class="td">', st.line2) + ])); } } ); @@ -19,14 +18,14 @@ XHR.poll(5, '<%=url('admin/telephony/status')%>', null, <fieldset class="cbi-section"> <legend><%:Current Telephony State%></legend> - <table class="cbi-section-table" id="telephony_status_table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Uplink%></th> - <th class="cbi-section-table-cell"><%:Port1%></th> - <th class="cbi-section-table-cell"><%:Port2%></th> - </tr> - <tr class="cbi-section-table-row"> - <td colspan="5"><em><br /><%:Collecting data...%></em></td> - </tr> - </table> + <div class="table cbi-section-table" id="telephony_status_table"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Uplink%></div> + <div class="th cbi-section-table-cell"><%:Port1%></div> + <div class="th cbi-section-table-cell"><%:Port2%></div> + </div> + <div class="tr cbi-section-table-row"> + <div class="td" colspan="5"><em><br /><%:Collecting data...%></em></div> + </div> + </div> </fieldset> diff --git a/applications/luci-app-mwan3/po/ja/mwan3.po b/applications/luci-app-mwan3/po/ja/mwan3.po index 6ee351c4c2..a5826926dd 100644 --- a/applications/luci-app-mwan3/po/ja/mwan3.po +++ b/applications/luci-app-mwan3/po/ja/mwan3.po @@ -7,7 +7,7 @@ msgstr "" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.3\n" +"X-Generator: Poedit 2.0.7\n" "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n" "Plural-Forms: nplurals=1; plural=0;\n" "Language: ja\n" @@ -43,6 +43,9 @@ msgstr "利用å¯èƒ½ãªå€¤: 1-256。空欄ã®å ´åˆã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯1ã§ã™ã msgid "Check IP rules" msgstr "IP ルールã®ãƒã‚§ãƒƒã‚¯" +msgid "Check link quality" +msgstr "リンクå“質ã®ãƒã‚§ãƒƒã‚¯" + msgid "Check routing table" msgstr "ルーティング テーブルã®ãƒã‚§ãƒƒã‚¯" @@ -56,7 +59,7 @@ msgid "Destination port" msgstr "宛先ãƒãƒ¼ãƒˆ" msgid "Detail" -msgstr "" +msgstr "詳細" msgid "Diagnostics" msgstr "診æ–機能" @@ -77,7 +80,7 @@ msgid "Enter value in hex, starting with <code>0x</code>" msgstr "<code>0x</code> ã§å§‹ã¾ã‚‹16進数ã®å€¤ã‚’入力ã—ã¦ãã ã•ã„。" msgid "Execute" -msgstr "" +msgstr "実行" msgid "Expect interface state on up event" msgstr "Up イベント時ã«äºˆæƒ³ã•ã‚Œã‚‹ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®çŠ¶æ…‹ã§ã™ã€‚" @@ -89,10 +92,12 @@ msgid "Firewall mask" msgstr "ファイアウォール マスク" msgid "Flush conntrack table" -msgstr "" +msgstr "conntrack テーブルã®ã‚¯ãƒªã‚¢" msgid "Flush global firewall conntrack table on interface events" msgstr "" +"インターフェース イベント時ã«ã‚°ãƒãƒ¼ãƒãƒ« ファイアウォール conntrack テーブルを" +"クリアã—ã¾ã™ã€‚" msgid "Globals" msgstr "全般" @@ -104,7 +109,7 @@ msgid "Hotplug ifup" msgstr "ホットプラグ ifup" msgid "INFO: MWAN not running" -msgstr "" +msgstr "æƒ…å ±: MWAN ã¯å®Ÿè¡Œã•ã‚Œã¦ã„ã¾ã›ã‚“" msgid "IPset" msgstr "IPset" @@ -157,28 +162,28 @@ msgid "Local source interface" msgstr "" msgid "MWAN - Globals" -msgstr "" +msgstr "MWAN - ã‚°ãƒãƒ¼ãƒãƒ«" msgid "MWAN - Interfaces" -msgstr "" +msgstr "MWAN - インターフェース" msgid "MWAN - Members" -msgstr "" +msgstr "MWAN - メンãƒãƒ¼" msgid "MWAN - Notification" -msgstr "" +msgstr "MWAN - 通知" msgid "MWAN - Policies" -msgstr "" +msgstr "MWAN - ãƒãƒªã‚·ãƒ¼" msgid "MWAN - Rules" -msgstr "" +msgstr "MWAN - ルール" msgid "MWAN Interface Configuration - %s" msgstr "MWAN インターフェースè¨å®š - %s" msgid "MWAN Interfaces" -msgstr "" +msgstr "MWAN インターフェース" msgid "MWAN Member Configuration - %s" msgstr "MWAN メンãƒãƒ¼è¨å®š - %s" @@ -190,13 +195,13 @@ msgid "MWAN Rule Configuration - %s" msgstr "MWAN ルールè¨å®š - %s" msgid "MWAN Status - Detail" -msgstr "" +msgstr "MWAN ステータス - 詳細" msgid "MWAN Status - Diagnostics" -msgstr "" +msgstr "MWAN ステータス - 診æ–" msgid "MWAN Status - Troubleshooting" -msgstr "" +msgstr "MWAN ステータス - トラブルシューティング" msgid "" "MWAN supports up to 252 physical and/or logical interfaces<br />MWAN " @@ -214,6 +219,12 @@ msgstr "" "スã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。<br />インターフェースã«ã¯ã€è¨å®šæ¸ˆã¿ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚„ãƒãƒª" "シーã€ãƒ«ãƒ¼ãƒ«ã¨åŒã˜åå‰ã‚’使用ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。" +msgid "Max packet latency [ms]" +msgstr "最大パケットレイテンシ [ms]" + +msgid "Max packet loss [%]" +msgstr "最大パケットãƒã‚¹ [%]" + msgid "" "May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or " "as a portrange (eg \"1024:2048\") without quotes" @@ -246,6 +257,12 @@ msgstr "アサイン済ã¿ãƒ¡ãƒ³ãƒãƒ¼" msgid "Metric" msgstr "メトリック" +msgid "Min packet latency [ms]" +msgstr "最å°ãƒ‘ケットレイテンシ [ms]" + +msgid "Min packet loss [%]" +msgstr "最å°ãƒ‘ケットãƒã‚¹ [%]" + msgid "" "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/" "youtube.com/youtube\")" @@ -260,7 +277,7 @@ msgid "No MWAN interfaces found" msgstr "MWAN インターフェースãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" msgid "Notification" -msgstr "" +msgstr "通知" msgid "Offline" msgstr "オフライン" @@ -342,6 +359,16 @@ msgid "" "z, 0-9, _ and no spaces<br />Rules may not share the same name as configured " "interfaces, members or policies" msgstr "" +"ルールã¯ã€ã©ã®ãƒˆãƒ©ãƒ•ã‚£ãƒƒã‚¯ãŒç‰¹å®šã® MWAN ãƒãƒªã‚·ãƒ¼ã‚’使用ã™ã‚‹ã‹ã‚’指定ã—ã¾ã™<br /" +">ルール㯠IP アドレスやãƒãƒ¼ãƒˆã€ãƒ—ãƒãƒˆã‚³ãƒ«ã«åŸºã¥ã„ã¦ã„ã¾ã™<br />ルールã¯ä¸Šã‹ã‚‰" +"下ã¸ãƒžãƒƒãƒãƒ³ã‚°ãŒè¡Œã‚ã‚Œã¾ã™<br />åˆè‡´ã—ãŸãƒ«ãƒ¼ãƒ«ã‚ˆã‚Šä¸‹ã®ãƒ«ãƒ¼ãƒ«ã¯ç„¡è¦–ã•ã‚Œã¾ã™" +"<br />ã„ãšã‚Œã®ãƒ«ãƒ¼ãƒ«ã«ã‚‚マッãƒã—ãªã„トラフィックã¯ã€ãƒ¡ã‚¤ãƒ³ã®ãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ãƒ†ãƒ¼" +"ブルを使用ã—ã¦ãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã•ã‚Œã¾ã™<br />既知(デフォルト以外)ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯" +"ã¸ã®ãƒˆãƒ©ãƒ•ã‚£ãƒƒã‚¯ã¯ã€ãƒ¡ã‚¤ãƒ³ã®ãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ãƒ†ãƒ¼ãƒ–ルã«ã‚ˆã£ã¦åˆ¶å¾¡ã•ã‚Œã¾ã™<br />ト" +"ラフィックãŒãƒ«ãƒ¼ãƒ«ã«åˆè‡´ã—ã¦ã‚‚ã€å…¨ WAN インターフェース㌠down ã®å ´åˆã¯ " +"blackhole 状態ã¨ãªã‚Šã¾ã™<br />åå‰ã¯ A-Z, a-z, 0-9, _ ã‚’å«ã‚€ã“ã¨ãŒã§ãã¾ã™" +"ãŒã€ã‚¹ãƒšãƒ¼ã‚¹ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“<br />ルールã¯ã€è¨å®šæ¸ˆã¿ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã‚„メン" +"ãƒãƒ¼ã€ãƒãƒªã‚·ãƒ¼ã¨åŒã˜åå‰ã‚’使用ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。" msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set" msgstr "秒。利用å¯èƒ½ãªå€¤: 1-1000000。空欄ã®å ´åˆã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¯600ã§ã™ã€‚" @@ -362,7 +389,7 @@ msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes" msgstr "CIDR 表記ã®ã‚µãƒãƒ¼ãƒˆï¼ˆä¾‹: \"192.168.100.0/24\")" msgid "Task" -msgstr "" +msgstr "タスク" msgid "There are currently %d of %d supported interfaces configured" msgstr "ç¾åœ¨ã€%d å€‹ä¸ %d 個ã®ã‚µãƒãƒ¼ãƒˆã•ã‚ŒãŸã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ãŒè¨å®šæ¸ˆã¿ã§ã™ã€‚" @@ -397,6 +424,21 @@ msgid "" "Physical device name which interface went up or down (e.g. \"eth0\" or " "\"wwan0\")<br /><br />" msgstr "" +"ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€ \"/etc/mwan3.user\" ã®å†…容を変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" +"<br />ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚‚ sysupgrade ã®éš›ã«ä¿æŒã•ã‚Œã¾ã™ã€‚<br /><br />注æ„: <br />" +"ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã‚·ã‚§ãƒ«ã‚¹ã‚¯ãƒªãƒ—トã¨ã—ã¦è§£é‡ˆã•ã‚Œã¾ã™ã€‚<br />最åˆã®è¡Œã¯ "#!/" +"bin/sh" ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼ˆã‚¯ã‚©ãƒ¼ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ä¸è¦ï¼‰ã€‚<br /># ã§å§‹ã¾ã‚‹è¡Œ" +"ã¯ã‚³ãƒ¡ãƒ³ãƒˆã§ã‚ã‚Šã€å®Ÿè¡Œã•ã‚Œã¾ã›ã‚“。<br />mwan3 ã®ã‚«ã‚¹ã‚¿ãƒ 動作をã“ã“ã«å…¥åŠ›ã—ã¦" +"ãã ã•ã„。<br />ã“れらã¯ã€mwan3 ã§æœ‰åŠ¹ãªã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®<br /> netifd " +"hotplug インターフェース イベント毎ã«å®Ÿè¡Œã•ã‚Œã¾ã™ã€‚<br /><br />ã“ã®ã‚¹ã‚¯ãƒªãƒ—ト" +"ã«å—ã‘渡ã•ã‚Œã‚‹ä¸»ã«ï¼“ã¤ã®ç’°å¢ƒå¤‰æ•°ãŒåˆ©ç”¨ã§ãã¾ã™ã€‚<br /><br />$ACTION<br />* " +"\"ifup\" 㯠netifd 㨠mwan3track ã«ã‚ˆã‚Šå‘¼ã³å‡ºã•ã‚Œã¾ã™<br />* \"ifdown\" 㯠" +"netifd 㨠mwan3track ã«ã‚ˆã‚Šå‘¼ã³å‡ºã•ã‚Œã¾ã™<br />* \"connected\" ã¯ãƒˆãƒ©ãƒƒã‚ング" +"ãŒæˆåŠŸã—ãŸéš›ã« mwan3track ã«ã®ã¿ã«ã‚ˆã‚Šå‘¼ã³å‡ºã•ã‚Œã¾ã™<br />* \"disconnected\" " +"㯠トラッã‚ングãŒå¤±æ•—ã—ãŸéš›ã« mwan3track ã®ã¿ã«ã‚ˆã‚Šå‘¼ã³å‡ºã•ã‚Œã¾ã™<br />" +"$INTERFACE up ã¾ãŸã¯ down ã—ãŸã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹å(例: \"wan\" ã‚„ \"wwan\")" +"<br />$DEVICE up ã¾ãŸã¯ down ã—ãŸã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®ç‰©ç†ãƒ‡ãƒã‚¤ã‚¹å(例: " +"\"eth0\" ã‚„ \"wwan0\")<br /><br />" msgid "Tracking hostname or IP address" msgstr "追跡ホストåã¾ãŸã¯ IP アドレス" @@ -426,36 +468,42 @@ msgstr "" "インターフェース㮠IP アドレスãŒä½¿ç”¨ã•ã‚Œã¾ã™ã€‚" msgid "View the content of /etc/protocols for protocol description" -msgstr "" +msgstr "プãƒãƒˆã‚³ãƒ«ã®èª¬æ˜Žã«ã¤ã„ã¦ã¯ã€ /etc/protocols ã®å†…容を確èªã—ã¦ãã ã•ã„" msgid "WARNING: %d interfaces are configured exceeding the maximum of %d!" msgstr "" "è¦å‘Š: %d 個ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ãŒã€æœ€å¤§å€‹æ•°ã® %d 個 を超ãˆã¦è¨å®šã•ã‚Œã¦ã„ã¾ã™ï¼" msgid "WARNING: Interface %s are not found in /etc/config/network" -msgstr "" +msgstr "è¦å‘Š: インターフェース %s ㌠/etc/config/network ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" msgid "WARNING: Interface %s has a duplicate metric %s configured" -msgstr "" +msgstr "è¦å‘Š: インターフェース %s ã«é‡è¤‡ã™ã‚‹ãƒ¡ãƒˆãƒªãƒƒã‚¯ %s ãŒè¨å®šã•ã‚Œã¦ã„ã¾ã™" msgid "" "WARNING: Interface %s has a higher reliability requirement than tracking " "hosts (%d)" msgstr "" +"è¦å‘Š: インターフェース %s ã¯è¿½è·¡ãƒ›ã‚¹ãƒˆæ•° (%d) よりも高ã„è¿½è·¡ä¿¡é ¼æ€§ã®å€¤ãŒè¨å®š" +"ã•ã‚Œã¦ã„ã¾ã™" msgid "WARNING: Interface %s has no default route in the main routing table" msgstr "" +"è¦å‘Š: インターフェース %s ã¯ãƒ¡ã‚¤ãƒ³ã®ãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚° テーブル内ã§ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ«ãƒ¼ãƒˆ" +"ãŒã‚ã‚Šã¾ã›ã‚“" msgid "WARNING: Policy %s has exceeding the maximum name of 15 characters" -msgstr "" +msgstr "è¦å‘Š: ãƒãƒªã‚·ãƒ¼ %s ã®åå‰ã¯15æ–‡å—ã®æœ€å¤§æ–‡å—数を超ãˆã¦ã„ã¾ã™" msgid "" "WARNING: Rule %s have a port configured with no or improper protocol " "specified!" msgstr "" +"è¦å‘Š: ルール %s ã¯ãƒ—ãƒãƒˆã‚³ãƒ«æŒ‡å®šãŒä¸é©åˆ‡ã€ã¾ãŸã¯ç„¡ã„ãƒãƒ¼ãƒˆãŒè¨å®šã•ã‚Œã¦ã„ã¾" +"ã™ï¼" msgid "Waiting for command to complete..." -msgstr "" +msgstr "コマンドを実行ä¸ã§ã™..." msgid "Weight" msgstr "ウエイト" @@ -489,289 +537,3 @@ msgstr "never" msgid "unreachable (reject)" msgstr "unreachable (reject)" - -#~ msgid "Online (tracking active)" -#~ msgstr "オンライン(追跡実行ä¸ï¼‰" - -#~ msgid "MWAN Interface Live Status" -#~ msgstr "MWAN インターフェース Live ステータス" - -#~ msgid "Online (tracking off)" -#~ msgstr "オンライン(追跡オフ)" - -#~ msgid "" -#~ "This section allows you to modify the content of \"/etc/mwan3.user\".<br /" -#~ ">The file is also preserved during sysupgrade.<br /><br />Notes:<br /" -#~ ">This file is interpreted as a shell script.<br />The first line of the " -#~ "script must be "#!/bin/sh" without quotes.<br />Lines beginning " -#~ "with # are comments and are not executed.<br />Put your custom mwan3 " -#~ "action here, they will<br />be executed with each netifd hotplug " -#~ "interface event<br />on interfaces for which mwan3 is enabled.<br /><br /" -#~ ">There are three main environment variables that are passed to this " -#~ "script.<br /><br />$ACTION Either \"ifup\" or \"ifdown\"<br />$INTERFACE " -#~ "Name of the interface which went up or down (e.g. \"wan\" or \"wwan" -#~ "\")<br />$DEVICE Physical device name which interface went up or down (e." -#~ "g. \"eth0\" or \"wwan0\")<br /><br />" -#~ msgstr "" -#~ "ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€ \"/etc/mwan3.user\" ã®å†…容を変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" -#~ "<br />ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€ sysupgrade 時ã«ä¿æŒã•ã‚Œã¾ã™ã€‚<br /><br />注æ„: " -#~ "<br />ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€ã‚·ã‚§ãƒ«ã‚¹ã‚¯ãƒªãƒ—トã¨ã—ã¦è§£é‡ˆã•ã‚Œã¾ã™ã€‚<br />スクリプト" -#~ "ã®1行目ã¯ã€"#!bin/sh" ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼ˆã‚¯ã‚©ãƒ¼ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ä¸" -#~ "è¦ï¼‰ã€‚<br /># ã§å§‹ã¾ã‚‹è¡Œã¯ã‚³ãƒ¡ãƒ³ãƒˆã§ã‚ã‚Šã€å®Ÿè¡Œã•ã‚Œã¾ã›ã‚“。<br />mwan3 ã®ã‚«" -#~ "スタム動作をã“ã“ã«å…¥åŠ›ã—ã¦ãã ã•ã„。ã“れらã¯ã€ mwan3 ãŒæœ‰åŠ¹ãªã‚¤ãƒ³ã‚¿ãƒ¼" -#~ "フェースã®<br />netifd ホットプラグ インターフェース イベント毎ã«å®Ÿè¡Œã•ã‚Œ" -#~ "ã¾ã™ã€‚<br /><br />主ã«3ã¤ã®ç’°å¢ƒå¤‰æ•°ãŒåˆ©ç”¨å¯èƒ½ã§ã™ã€‚<br /><br />$ACTION - " -#~ "\"ifup\" ãŠã‚ˆã³ \"ifdown\"<br />$INTERFACE - Up ã¾ãŸã¯ Down ãŒè¡Œã‚ã‚ŒãŸã‚¤ãƒ³" -#~ "ターフェースå(例: \"wan\" ã‚„ \"wwan\")<br />$DEVICE - Up ã¾ãŸã¯ Down ãŒ" -#~ "è¡Œã‚ã‚ŒãŸç‰©ç†ãƒ‡ãƒã‚¤ã‚¹å(例: \"eth0\" ã‚„ \"wwan0\")<br /><br />" - -#~ msgid "Currently Configured Interfaces" -#~ msgstr "è¨å®šæ¸ˆã¿ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹" - -#~ msgid "Currently Configured Members" -#~ msgstr "è¨å®šæ¸ˆã¿ãƒ¡ãƒ³ãƒãƒ¼" - -#~ msgid "Currently Configured Policies" -#~ msgstr "è¨å®šæ¸ˆã¿ãƒãƒªã‚·ãƒ¼" - -#~ msgid "Detailed Status" -#~ msgstr "詳細ステータス" - -#~ msgid "Diagnostic Results" -#~ msgstr "診æ–çµæžœ" - -#~ msgid "Error collecting troubleshooting information" -#~ msgstr "ãƒˆãƒ©ãƒ–ãƒ«ã‚·ãƒ¥ãƒ¼ãƒ†ã‚£ãƒ³ã‚°æƒ…å ±ã®åŽé›†ã‚¨ãƒ©ãƒ¼" - -#~ msgid "Errors" -#~ msgstr "エラー" - -#~ msgid "Globals mwan3 options" -#~ msgstr "MWAN3 全般オプション" - -#~ msgid "Interface Status" -#~ msgstr "インターフェース ステータス" - -#~ msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :" -#~ msgstr "ç›´è¿‘ã® MWAN システムãƒã‚°ï¼ˆ50行)ã§ã™ã€‚一番上ãŒæœ€æ–°ã®è¡Œã§ã™:" - -#~ msgid "MWAN Detailed Status" -#~ msgstr "MWAN 詳細ステータス" - -#~ msgid "MWAN Interface Configuration" -#~ msgstr "MWAN インターフェースè¨å®š" - -#~ msgid "MWAN Interface Diagnostics" -#~ msgstr "MWAN インターフェース診æ–" - -#~ msgid "MWAN Interface Systemlog" -#~ msgstr "MWAN インターフェース システムãƒã‚°" - -#~ msgid "MWAN Member Configuration" -#~ msgstr "MWAN メンãƒãƒ¼è¨å®š" - -#~ msgid "MWAN Policy Configuration" -#~ msgstr "MWAN ãƒãƒªã‚·ãƒ¼è¨å®š" - -#~ msgid "MWAN Rule Configuration" -#~ msgstr "MWAN ルールè¨å®š" - -#~ msgid "MWAN Service Control" -#~ msgstr "MWAN サービス コントãƒãƒ¼ãƒ«" - -#~ msgid "No MWAN systemlog history found" -#~ msgstr "MWAN システムãƒã‚°ã®å±¥æ´ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" - -#~ msgid "No detailed status information available" -#~ msgstr "è©³ç´°ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹æƒ…å ±ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“" - -#~ msgid "No diagnostic results returned" -#~ msgstr "診æ–çµæžœãŒã‚ã‚Šã¾ã›ã‚“" - -#~ msgid "No protocol specified" -#~ msgstr "プãƒãƒˆã‚³ãƒ«ãŒè¨å®šã•ã‚Œã¦ã„ã¾ã›ã‚“" - -#~ msgid "Restart MWAN" -#~ msgstr "MWAN ã®å†èµ·å‹•" - -#~ msgid "" -#~ "Rules specify which traffic will use a particular MWAN policy based on IP " -#~ "address, port or protocol<br />Rules are matched from top to bottom. " -#~ "Rules below a matching rule are ignored. Traffic not matching any rule is " -#~ "routed using the main routing table<br />Traffic destined for known " -#~ "(other than default) networks is handled by the main routing table. " -#~ "Traffic matching a rule, but all WAN interfaces for that policy are down " -#~ "will be blackholed<br />Names may contain characters A-Z, a-z, 0-9, _ and " -#~ "no spaces<br />Rules may not share the same name as configured " -#~ "interfaces, members or policies" -#~ msgstr "" -#~ "ルール㯠IP アドレスやãƒãƒ¼ãƒˆã€ãƒ—ãƒãƒˆã‚³ãƒ«ã‚’基ã«ã€ãƒˆãƒ©ãƒ•ã‚£ãƒƒã‚¯ãŒã©ã® MWAN ãƒ" -#~ "リシーを使用ã™ã‚‹ã‹ã‚’è¨å®šã—ã¾ã™ã€‚<br />ルールã¯ä¸Šã‹ã‚‰ä¸‹ã¸ãƒžãƒƒãƒãƒ³ã‚°ãŒè¡Œã‚" -#~ "ã‚Œã€åˆè‡´ã—ãŸãƒ«ãƒ¼ãƒ«ã‚ˆã‚Šä¸‹ã®ãƒ«ãƒ¼ãƒ«ã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚å…¨ã¦ã®ãƒ«ãƒ¼ãƒ«ã«åˆè‡´ã—ãªã„ト" -#~ "ラフィックã¯ã€ãƒ¡ã‚¤ãƒ³ã®ãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚° テーブルを使用ã—ã¦ãƒ«ãƒ¼ãƒˆãŒæ±ºå®šã•ã‚Œã¾" -#~ "ã™ã€‚<br />既知(デフォルト以外)ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã¸ã®ãƒˆãƒ©ãƒ•ã‚£ãƒƒã‚¯ã¯ã€ãƒ¡ã‚¤ãƒ³ã®" -#~ "ルーティング テーブルã«ã‚ˆã£ã¦åˆ¶å¾¡ã•ã‚Œã¾ã™ã€‚ルールã«åˆè‡´ã—ãŸãƒˆãƒ©ãƒ•ã‚£ãƒƒã‚¯ã§" -#~ "ã‚‚ã€å½“該ãƒãƒªã‚·ãƒ¼ã®å…¨ WAN インターフェース㌠Down 状態ã®å ´åˆã¯ blackhole 状" -#~ "æ…‹ã¨ãªã‚Šã¾ã™ã€‚<br />åå‰ã¯ A-Z, a-z, 0-9, _ ã‚’å«ã‚€ã“ã¨ãŒã§ãã¾ã™ãŒã€ã‚¹ãƒšãƒ¼" -#~ "スã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。<br />ルールã¯ã€è¨å®šæ¸ˆã¿ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã‚„メンãƒãƒ¼ã€" -#~ "ãƒãƒªã‚·ãƒ¼ã¨åŒã˜åå‰ã‚’使用ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。" - -#~ msgid "Start MWAN" -#~ msgstr "MWAN ã®èµ·å‹•" - -#~ msgid "Stop MWAN" -#~ msgstr "MWAN ã®åœæ¢" - -#~ msgid "Tracking IP" -#~ msgstr "追跡 IP" - -#~ msgid "Traffic Rules" -#~ msgstr "トラフィック ルール" - -#~ msgid "Troubleshooting Data" -#~ msgstr "トラブルシューティング データ" - -#~ msgid "View the contents of /etc/protocols for protocol descriptions" -#~ msgstr "" -#~ "プãƒãƒˆã‚³ãƒ«ã®èª¬æ˜Žã«ã¤ã„ã¦ã¯ã€ /etc/protocols ã®å†…容を確èªã—ã¦ãã ã•ã„。" - -#~ msgid "" -#~ "WARNING: Some interfaces are configured incorrectly or not at all in /etc/" -#~ "config/network!" -#~ msgstr "" -#~ "è¦å‘Š: è¨å®šã‚’誤ã£ã¦ã„ã‚‹ã‹ã€ã‚‚ã—ãã¯å®Œå…¨ã«è¨å®šã•ã‚Œã¦ã„ãªã„インターフェースãŒ" -#~ "ã‚ã‚Šã¾ã™ï¼" - -#~ msgid "" -#~ "WARNING: Some interfaces have a higher reliability requirement than there " -#~ "are tracking IP addresses!" -#~ msgstr "" -#~ "è¦å‘Š: 追跡 IP アドレスã®å€‹æ•°ã‚ˆã‚Šå¤§ãã„è¿½è·¡ä¿¡é ¼æ€§ã®å€¤ãŒè¨å®šã•ã‚ŒãŸã‚¤ãƒ³ã‚¿ãƒ¼" -#~ "フェースãŒã‚ã‚Šã¾ã™ï¼" - -#~ msgid "" -#~ "WARNING: Some interfaces have duplicate metrics configured in /etc/config/" -#~ "network!" -#~ msgstr "" -#~ "è¦å‘Š: /etc/config/network ã§ã€é‡è¤‡ã™ã‚‹ãƒ¡ãƒˆãƒªãƒƒã‚¯ã‚’è¨å®šã•ã‚Œã¦ã„るインター" -#~ "フェースãŒã‚ã‚Šã¾ã™ï¼" - -#~ msgid "" -#~ "WARNING: Some interfaces have no default route in the main routing table!" -#~ msgstr "" -#~ "è¦å‘Š: メインã®ãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚° テーブルã§ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ ルートをè¨å®šã•ã‚Œã¦ã„ãªã„" -#~ "インターフェースãŒã‚ã‚Šã¾ã™ï¼" - -#~ msgid "" -#~ "WARNING: Some interfaces have no metric configured in /etc/config/network!" -#~ msgstr "" -#~ "è¦å‘Š: /etc/config/network ã§ã€ãƒ¡ãƒˆãƒªãƒƒã‚¯ã‚’è¨å®šã•ã‚Œã¦ã„ãªã„インターフェース" -#~ "ãŒã‚ã‚Šã¾ã™ï¼" - -#~ msgid "" -#~ "WARNING: Some policies have names exceeding the maximum of 15 characters!" -#~ msgstr "" -#~ "è¦å‘Š: 最大文å—æ•°ã® 15 æ–‡å—を超ãˆã‚‹åå‰ãŒè¨å®šã•ã‚Œã¦ã„ã‚‹ãƒãƒªã‚·ãƒ¼ãŒã‚ã‚Šã¾ã™ï¼" - -#~ msgid "" -#~ "WARNING: Some rules have a port configured with no or improper protocol " -#~ "specified! Please configure a specific protocol!" -#~ msgstr "" -#~ "è¦å‘Š: ä¸é©åˆ‡ãªãƒ—ãƒãƒˆã‚³ãƒ«ãŒæŒ‡å®šã•ã‚Œã¦ã„ã‚‹ã€ã¾ãŸã¯ä½•ã‚‚指定ã•ã‚Œã¦ã„ãªã„ãƒãƒ¼ãƒˆ" -#~ "ã‚’è¨å®šã•ã‚ŒãŸãƒ«ãƒ¼ãƒ«ãŒã‚ã‚Šã¾ã™ï¼ãƒ—ãƒãƒˆã‚³ãƒ«ã‚’指定ã—ç›´ã—ã¦ãã ã•ã„ï¼" - -#~ msgid "" -#~ "WARNING: This and other interfaces have duplicate metrics configured in /" -#~ "etc/config/network!" -#~ msgstr "" -#~ "è¦å‘Š: ã“ã‚Œã¨ä»–ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã§é‡è¤‡ã™ã‚‹ãƒ¡ãƒˆãƒªãƒƒã‚¯ãŒ /etc/config/" -#~ "network ã«è¨å®šã•ã‚Œã¦ã„ã¾ã™ï¼" - -#~ msgid "" -#~ "WARNING: This interface has a higher reliability requirement than there " -#~ "are tracking IP addresses!" -#~ msgstr "" -#~ "è¦å‘Š: ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã¯ã€è¿½è·¡ IP アドレスã®å€‹æ•°ã‚ˆã‚Šå¤§ãã„è¿½è·¡ä¿¡é ¼æ€§ã®" -#~ "値をè¨å®šã•ã‚Œã¦ã„ã¾ã™ï¼" - -#~ msgid "" -#~ "WARNING: This interface has no default route in the main routing table!" -#~ msgstr "" -#~ "è¦å‘Š: ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã¯ã€ãƒ¡ã‚¤ãƒ³ã®ãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚° テーブルã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ " -#~ "ルートãŒè¨å®šã•ã‚Œã¦ã„ã¾ã›ã‚“ï¼" - -#~ msgid "" -#~ "WARNING: This interface has no metric configured in /etc/config/network!" -#~ msgstr "" -#~ "è¦å‘Š: ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã¯ã€ /etc/config/network ã§ãƒ¡ãƒˆãƒªãƒƒã‚¯ãŒè¨å®šã•ã‚Œ" -#~ "ã¦ã„ã¾ã›ã‚“ï¼" - -#~ msgid "" -#~ "WARNING: This interface is configured incorrectly or not at all in /etc/" -#~ "config/network!" -#~ msgstr "" -#~ "è¦å‘Š: ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã¯ /etc/config/network ã§è¨å®šãŒèª¤ã£ã¦ã„ã‚‹ã‹ã€ã‚‚" -#~ "ã—ãã¯å®Œå…¨ã«è¨å®šã•ã‚Œã¦ã„ã¾ã›ã‚“ï¼" - -#~ msgid "" -#~ "WARNING: This policy's name is %d characters exceeding the maximum of 15!" -#~ msgstr "" -#~ "è¦å‘Š: ã“ã®ãƒãƒªã‚·ãƒ¼ã®åå‰ã¯ã€æœ€å¤§æ–‡å—æ•° 15 æ–‡å—を超ãˆã‚‹ %d æ–‡å—ãŒè¨å®šã•ã‚Œã¦" -#~ "ã„ã¾ã™ï¼" - -#~ msgid "" -#~ "WARNING: This rule is incorrectly configured with no or improper protocol " -#~ "specified! Please configure a specific protocol!" -#~ msgstr "" -#~ "è¦å‘Š: ã“ã®ãƒ«ãƒ¼ãƒ«ã¯ä¸é©åˆ‡ãªãƒ—ãƒãƒˆã‚³ãƒ«ãŒæŒ‡å®šã•ã‚Œã¦ã„ã‚‹ã‹ã€ã¾ãŸã¯ä½•ã‚‚指定ã•ã‚Œ" -#~ "ã¦ã„ã¾ã›ã‚“ï¼ãƒ—ãƒãƒˆã‚³ãƒ«ã‚’指定ã—ç›´ã—ã¦ãã ã•ã„ï¼" - -#~ msgid "Waiting for MWAN to %s..." -#~ msgstr "MWAN ã® %s ã‚’å¾…ã£ã¦ã„ã¾ã™..." - -#~ msgid "Waiting for diagnostic results..." -#~ msgstr "診æ–çµæžœã‚’å¾…ã£ã¦ã„ã¾ã™..." - -#~ msgid "restart" -#~ msgstr "å†èµ·å‹•" - -#~ msgid "start" -#~ msgstr "èµ·å‹•" - -#~ msgid "stop" -#~ msgstr "åœæ¢" - -#~ msgid "Advanced" -#~ msgstr "詳細è¨å®š" - -#~ msgid "Configuration" -#~ msgstr "è¨å®š" - -#~ msgid "Hotplug Script" -#~ msgstr "ホットプラグ スクリプト" - -#~ msgid "MWAN Config" -#~ msgstr "MWAN è¨å®š" - -#~ msgid "Network Config" -#~ msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯è¨å®š" - -#~ msgid "Overview" -#~ msgstr "概è¦" - -#~ msgid "This section allows you to modify the contents of /etc/config/mwan3" -#~ msgstr "" -#~ "ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€ /etc/config/mwan3 ã®å†…容を変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" - -#~ msgid "" -#~ "This section allows you to modify the contents of /etc/config/network" -#~ msgstr "" -#~ "ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€ /etc/config/network ã®å†…容を変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" - -#~ msgid "" -#~ "This section allows you to modify the contents of /etc/config/wireless" -#~ msgstr "" -#~ "ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€ /etc/config/wireless ã®å†…容を変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" - -#~ msgid "Wireless Config" -#~ msgstr "ç„¡ç·šè¨å®š" diff --git a/applications/luci-app-mwan3/po/ru/mwan3.po b/applications/luci-app-mwan3/po/ru/mwan3.po index 11721ecc57..140c537e73 100644 --- a/applications/luci-app-mwan3/po/ru/mwan3.po +++ b/applications/luci-app-mwan3/po/ru/mwan3.po @@ -46,6 +46,9 @@ msgstr "ДопуÑтимые значениÑ: 1-256 По умолчанию 1, msgid "Check IP rules" msgstr "Проверить правила IP" +msgid "Check link quality" +msgstr "" + msgid "Check routing table" msgstr "Проверить таблицу маршрутизации" @@ -216,6 +219,12 @@ msgstr "" "Ñимволы A-Z, a-z, 0-9, _ и пробелы.<br />ИнтерфейÑÑ‹ не могут иметь " "одинаковые имена Ñ Ð½Ð°Ñтроенными узлами, политиками или правилами." +msgid "Max packet latency [ms]" +msgstr "" + +msgid "Max packet loss [%]" +msgstr "" + msgid "" "May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or " "as a portrange (eg \"1024:2048\") without quotes" @@ -247,6 +256,12 @@ msgstr "Ðазначенные узлы" msgid "Metric" msgstr "Метрика" +msgid "Min packet latency [ms]" +msgstr "" + +msgid "Min packet loss [%]" +msgstr "" + msgid "" "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/" "youtube.com/youtube\")" diff --git a/applications/luci-app-mwan3/po/templates/mwan3.pot b/applications/luci-app-mwan3/po/templates/mwan3.pot index f6b3a1b380..bcc5e977a5 100644 --- a/applications/luci-app-mwan3/po/templates/mwan3.pot +++ b/applications/luci-app-mwan3/po/templates/mwan3.pot @@ -30,6 +30,9 @@ msgstr "" msgid "Check IP rules" msgstr "" +msgid "Check link quality" +msgstr "" + msgid "Check routing table" msgstr "" @@ -190,6 +193,12 @@ msgid "" "rules" msgstr "" +msgid "Max packet latency [ms]" +msgstr "" + +msgid "Max packet loss [%]" +msgstr "" + msgid "" "May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or " "as a portrange (eg \"1024:2048\") without quotes" @@ -216,6 +225,12 @@ msgstr "" msgid "Metric" msgstr "" +msgid "Min packet latency [ms]" +msgstr "" + +msgid "Min packet loss [%]" +msgstr "" + msgid "" "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/" "youtube.com/youtube\")" diff --git a/applications/luci-app-mwan3/po/zh-cn/mwan3.po b/applications/luci-app-mwan3/po/zh-cn/mwan3.po index ef59339862..4a92c7abd9 100644 --- a/applications/luci-app-mwan3/po/zh-cn/mwan3.po +++ b/applications/luci-app-mwan3/po/zh-cn/mwan3.po @@ -41,6 +41,9 @@ msgstr "å–值范围:1-256。如果ä¸å¡«å†™ï¼Œé»˜è®¤å€¼ä¸º 1" msgid "Check IP rules" msgstr "检查 IP 规则" +msgid "Check link quality" +msgstr "" + msgid "Check routing table" msgstr "检查路由表" @@ -205,6 +208,12 @@ msgstr "" "的接å£å称匹é…。<br />å称å…许包括 A-Zã€a-zã€0-9ã€_ 但是ä¸èƒ½æœ‰ç©ºæ ¼ã€‚<br />接" "å£ä¸åº”该与æˆå‘˜ã€ç–ç•¥ã€è§„则ä¸çš„ä»»æ„一个设置项使用相åŒçš„å称" +msgid "Max packet latency [ms]" +msgstr "" + +msgid "Max packet loss [%]" +msgstr "" + msgid "" "May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or " "as a portrange (eg \"1024:2048\") without quotes" @@ -236,6 +245,12 @@ msgstr "分é…çš„æˆå‘˜" msgid "Metric" msgstr "跃点数" +msgid "Min packet latency [ms]" +msgstr "" + +msgid "Min packet loss [%]" +msgstr "" + msgid "" "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/" "youtube.com/youtube\")" diff --git a/applications/luci-app-mwan3/po/zh-tw/mwan3.po b/applications/luci-app-mwan3/po/zh-tw/mwan3.po index 6af9fae7e3..9fa5263428 100644 --- a/applications/luci-app-mwan3/po/zh-tw/mwan3.po +++ b/applications/luci-app-mwan3/po/zh-tw/mwan3.po @@ -41,6 +41,9 @@ msgstr "å–值範åœï¼š1-256。如果ä¸å¡«å¯«ï¼Œé è¨å€¼ç‚º 1" msgid "Check IP rules" msgstr "檢查 IP è¦å‰‡" +msgid "Check link quality" +msgstr "" + msgid "Check routing table" msgstr "檢查路由表" @@ -205,6 +208,12 @@ msgstr "" "ä¸çš„介é¢å稱匹é…。<br />å稱å…許包括 A-Zã€a-zã€0-9ã€_ 但是ä¸èƒ½æœ‰ç©ºæ ¼ã€‚<br />" "介é¢ä¸æ‡‰è©²èˆ‡æˆå“¡ã€ç–ç•¥ã€è¦å‰‡ä¸çš„ä»»æ„一個è¨å®šé …使用相åŒçš„å稱" +msgid "Max packet latency [ms]" +msgstr "" + +msgid "Max packet loss [%]" +msgstr "" + msgid "" "May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or " "as a portrange (eg \"1024:2048\") without quotes" @@ -236,6 +245,12 @@ msgstr "分é…çš„æˆå“¡" msgid "Metric" msgstr "èºé»žæ•¸" +msgid "Min packet latency [ms]" +msgstr "" + +msgid "Min packet loss [%]" +msgstr "" + msgid "" "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/" "youtube.com/youtube\")" diff --git a/applications/luci-app-noddos/luasrc/view/noddos/clients.htm b/applications/luci-app-noddos/luasrc/view/noddos/clients.htm index f2fb9312a7..4caf3e04e4 100644 --- a/applications/luci-app-noddos/luasrc/view/noddos/clients.htm +++ b/applications/luci-app-noddos/luasrc/view/noddos/clients.htm @@ -38,70 +38,70 @@ <fieldset class="cbi-section"> <legend><%:Recognized Clients%></legend> <div class="cbi-section-node"> - <table class="cbi-section-table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Hostname%></th> - <th class="cbi-section-table-cell"><%:IPv4%></th> - <th class="cbi-section-table-cell"><%:MAC%></th> - <th class="cbi-section-table-cell"><%:Manufacturer%></th> - <th class="cbi-section-table-cell"><%:Model%></th> - <th class="cbi-section-table-cell"><%:Class%></th> - </tr> + <div class="table cbi-section-table"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Hostname%></div> + <div class="th cbi-section-table-cell"><%:IPv4%></div> + <div class="th cbi-section-table-cell"><%:MAC%></div> + <div class="th cbi-section-table-cell"><%:Manufacturer%></div> + <div class="th cbi-section-table-cell"><%:Model%></div> + <div class="th cbi-section-table-cell"><%:Class%></div> + </div> <% for i,v in ipairs(devdump) do if v.DeviceProfileUuid ~= "" then %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>"> - <td class="cbi-value-field"><%=v.Hostname%></td> - <td class="cbi-value-field"><%=v.Ipv4Address%></td> - <td class="cbi-value-field"><a href="/cgi-bin/clientdetails?mac=<%=v.MacAddress%>"><%=v.MacAddress%></a></td> - <td class="cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].Manufacturer%></td> - <td class="cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].Model%></td> - <td class="cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].ThingClass%></td> - </tr> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>"> + <div class="td cbi-value-field"><%=v.Hostname%></div> + <div class="td cbi-value-field"><%=v.Ipv4Address%></div> + <div class="td cbi-value-field"><a href="/cgi-bin/clientdetails?mac=<%=v.MacAddress%>"><%=v.MacAddress%></a></div> + <div class="td cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].Manufacturer%></div> + <div class="td cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].Model%></div> + <div class="td cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].ThingClass%></div> + </div> <% style=false end end %> - </table> + </div> </div> </fieldset> <br /> <fieldset class="cbi-section"> <legend><%:Unrecognized Clients%></legend> <div class="cbi-section-node"> - <table class="cbi-section-table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Hostname%></th> - <th class="cbi-section-table-cell"><%:IPv4%></th> - <th class="cbi-section-table-cell"><%:MAC%></th> - <th class="cbi-section-table-cell"><%:Manufacturer%></th> - <th class="cbi-section-table-cell"><%:Model%></th> - <th class="cbi-section-table-cell"><%:DhcpVendor%></th> - <th class="cbi-section-table-cell"><%:DhcpHostname%></th> - </tr> + <div class="table cbi-section-table"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Hostname%></div> + <div class="th cbi-section-table-cell"><%:IPv4%></div> + <div class="th cbi-section-table-cell"><%:MAC%></div> + <div class="th cbi-section-table-cell"><%:Manufacturer%></div> + <div class="th cbi-section-table-cell"><%:Model%></div> + <div class="th cbi-section-table-cell"><%:DhcpVendor%></div> + <div class="th cbi-section-table-cell"><%:DhcpHostname%></div> + </div> <% for i,v in ipairs(devdump) do if v.DeviceProfileUuid == "" then %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>"> - <td class="cbi-value-field"><%=v.Hostname%></td> - <td class="cbi-value-field"><%=v.Ipv4Address%></td> - <td class="cbi-value-field"><a href="/cgi-bin/clientdetails?mac=<%=v.MacAddress%>"><%=v.MacAddress%></a></td> - <td class="cbi-value-field"><%=v.SsdpManufacturer%></td> - <td class="cbi-value-field"><%=v.SsdpModelName%></td> - <td class="cbi-value-field"><%=v.DhcpVendor1%></td> - <td class="cbi-value-field"><%=v.DhcpHostname%></td> - </tr> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>"> + <div class="td cbi-value-field"><%=v.Hostname%></div> + <div class="td cbi-value-field"><%=v.Ipv4Address%></div> + <div class="td cbi-value-field"><a href="/cgi-bin/clientdetails?mac=<%=v.MacAddress%>"><%=v.MacAddress%></a></div> + <div class="td cbi-value-field"><%=v.SsdpManufacturer%></div> + <div class="td cbi-value-field"><%=v.SsdpModelName%></div> + <div class="td cbi-value-field"><%=v.DhcpVendor1%></div> + <div class="td cbi-value-field"><%=v.DhcpHostname%></div> + </div> <% style=false end end %> - </table> + </div> </div> </fieldset> diff --git a/applications/luci-app-ocserv/luasrc/view/ocserv_status.htm b/applications/luci-app-ocserv/luasrc/view/ocserv_status.htm index 03a9ed70ee..66e44e9676 100644 --- a/applications/luci-app-ocserv/luasrc/view/ocserv_status.htm +++ b/applications/luci-app-ocserv/luasrc/view/ocserv_status.htm @@ -5,8 +5,8 @@ function(x) { var tb = document.getElementById('ocserv_status_table'); - if (tb && (idx < tb.rows.length)) - tb.rows[0].parentNode.removeChild(tb.rows[idx]); + if (tb && (idx + 1 < tb.childNodes.length)) + tb.removeChild(tb.childNodes[idx + 1]); } ); } @@ -18,38 +18,28 @@ if (st && tb) { /* clear all rows */ - while( tb.rows.length > 1 ) - tb.deleteRow(1); + while (tb.firstElementChild !== tb.lastElementChild) + tb.removeChild(tb.lastElementChild); - for( var i = 0; i < st.length; i++ ) + for (var i = 0; i < st.length; i++) { - var tr = tb.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1); - - tr.insertCell(-1).innerHTML = st[i].user; - tr.insertCell(-1).innerHTML = st[i].group; - tr.insertCell(-1).innerHTML = st[i].vpn_ip; - tr.insertCell(-1).innerHTML = st[i].ip; - tr.insertCell(-1).innerHTML = st[i].device; - tr.insertCell(-1).innerHTML = st[i].time; - tr.insertCell(-1).innerHTML = st[i].cipher; - tr.insertCell(-1).innerHTML = st[i].status; - - tr.insertCell(-1).innerHTML = String.format( - '<input class="cbi-button cbi-input-remove" type="button" value="<%:Disconnect%>" onclick="ocserv_disconnect(%d)" />', - st[i].id - ); + tb.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format((i % 2) + 1), [ + E('<div class="td">', st[i].user), + E('<div class="td">', st[i].group), + E('<div class="td">', st[i].vpn_ip), + E('<div class="td">', st[i].ip), + E('<div class="td">', st[i].device), + E('<div class="td">', st[i].time), + E('<div class="td">', st[i].cipher), + E('<div class="td">', st[i].status), + E('<div class="td">', + E('<input class="cbi-button cbi-input-remove" type="button" value="<%:Disconnect%>" onclick="ocserv_disconnect(%d)" />' + .format(st[i].id))) + ])); } - if( tb.rows.length == 1 ) - { - var tr = tb.insertRow(-1); - tr.className = 'cbi-section-table-row'; - - var td = tr.insertCell(-1); - td.colSpan = 5; - td.innerHTML = '<em><br /><%:There are no active users.%></em>'; - } + if (tb.firstElementChild === tb.lastElementChild) + tb.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:There are no active users.%></em></div></div>')); } } ); @@ -57,20 +47,21 @@ <fieldset class="cbi-section"> <legend><%:Active OpenConnect Users%></legend> - <table class="cbi-section-table" id="ocserv_status_table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:User%></th> - <th class="cbi-section-table-cell"><%:Group%></th> - <th class="cbi-section-table-cell"><%:IP Address%></th> - <th class="cbi-section-table-cell"><%:VPN IP Address%></th> - <th class="cbi-section-table-cell"><%:Device%></th> - <th class="cbi-section-table-cell"><%:Time%></th> - <th class="cbi-section-table-cell"><%:Cipher%></th> - <th class="cbi-section-table-cell"><%:Status%></th> - <th class="cbi-section-table-cell"> </th> - </tr> - <tr class="cbi-section-table-row"> - <td colspan="5"><em><br /><%:Collecting data...%></em></td> - </tr> - </table> + <div class="table cbi-section-table" id="ocserv_status_table"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:User%></div> + <div class="th cbi-section-table-cell"><%:Group%></div> + <div class="th cbi-section-table-cell"><%:IP Address%></div> + <div class="th cbi-section-table-cell"><%:VPN IP Address%></div> + <div class="th cbi-section-table-cell"><%:Device%></div> + <div class="th cbi-section-table-cell"><%:Time%></div> + <div class="th cbi-section-table-cell"><%:Cipher%></div> + <div class="th cbi-section-table-cell"><%:Status%></div> + <div class="th cbi-section-table-cell"> </div> + </div> + <div class="tr cbi-section-table-row"> + <div class="td" colspan="5"><em><br /><%:Collecting data...%></em></div> + </div> + </div> </fieldset> + diff --git a/applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm b/applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm index 476150dd28..150ed87dad 100644 --- a/applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm +++ b/applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm @@ -132,11 +132,11 @@ end { var service = info[idx]; s += String.format( - '<tr class="cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+'">' + - '<td class="cbi-section-table-titles"><a href="%s">%s</a></td>' + - '<td class="cbi-section-table-titles">%s</td>' + - '<td class="cbi-section-table-titles"><a href="http://%s/cgi-bin-status.html">%s</a></td>' + - '</tr>', + '<div class="tr cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+'">' + + '<div class="td cbi-section-table-titles"><a href="%s">%s</a></div>' + + '<div class="td cbi-section-table-titles">%s</div>' + + '<div class="td cbi-section-table-titles"><a href="http://%s/cgi-bin-status.html">%s</a></div>' + + '</div>', service.url, service.descr, service.proto, service.origin_link, service.origin || '?' ); } @@ -153,16 +153,16 @@ end <fieldset class="cbi-section"> <legend><%:Internal services%></legend> - <table class="cbi-section-table"> - <thead> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Url%></th> - <th class="cbi-section-table-cell"><%:Protocol%></th> - <th class="cbi-section-table-cell"><%:Source%></th> - </tr> - </thead> - - <tbody id="olsr_services"> + <div class="table cbi-section-table"> + <div class="thead"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Url%></div> + <div class="th cbi-section-table-cell"><%:Protocol%></div> + <div class="th cbi-section-table-cell"><%:Source%></div> + </div> + </div> + + <div class="tbody" id="olsr_services"> <% for k, line in ipairs(services) do local field = {} @@ -178,15 +178,15 @@ end local url, proto, descr, origin = pcdata(field[1]), pcdata(field[2]), utl.trim(pcdata(field[3])), pcdata(field[4]) %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=i%>"> - <td class="cbi-section-table-titles"><a href="<%=url%>"><%=descr%></a></td> - <td class="cbi-section-table-titles"><%=proto%></td> - <td class="cbi-section-table-titles"><a href="http://<%=origin_link%>/cgi-bin-status.html"><%=origin%></a></td> - </tr> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=i%>"> + <div class="td cbi-section-table-titles"><a href="<%=url%>"><%=descr%></a></div> + <div class="td cbi-section-table-titles"><%=proto%></div> + <div class="td cbi-section-table-titles"><a href="http://<%=origin_link%>/cgi-bin-status.html"><%=origin%></a></div> + </div> <% i = ((i % 2) + 1) end %> - </tbody> - </table> + </div> + </div> <br /> <%=last_update%> </fieldset> diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/hna.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/hna.htm index 5ea7b74e4d..2dc4ce1730 100644 --- a/applications/luci-app-olsr/luasrc/view/status-olsr/hna.htm +++ b/applications/luci-app-olsr/luasrc/view/status-olsr/hna.htm @@ -41,7 +41,7 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 }, { var hna = info[idx]; var linkgw = '' - s += '<tr class="cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-' + hna.proto + '">' + s += '<div class="tr cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-' + hna.proto + '">' if (hna.proto == '6') { linkgw = '<a href="http://[' + hna.gateway + ']/cgi-bin-status.html">' + hna.gateway + '</a>' } else { @@ -61,11 +61,11 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 }, } s += String.format( - '<td class="cbi-section-table-cell">%s</td>' + - '<td class="cbi-section-table-cell">%s</td>' + - '<td class="cbi-section-table-cell">%s</td>', hna.destination + '/' + hna.genmask, linkgw + hostname, validity + '<div class="td cbi-section-table-cell">%s</div>' + + '<div class="td cbi-section-table-cell">%s</div>' + + '<div class="td cbi-section-table-cell">%s</div>', hna.destination + '/' + hna.genmask, linkgw + hostname, validity ) - s += '</tr>' + s += '</div>' } hnadiv.innerHTML = s; } @@ -79,21 +79,21 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 }, <fieldset class="cbi-section"> <legend><%:Overview of currently active OLSR host net announcements%></legend> - <table class="cbi-section-table"> - <thead> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Announced network%></th> - <th class="cbi-section-table-cell"><%:OLSR gateway%></th> - <th class="cbi-section-table-cell"><%:Validity Time%></th> - </tr> + <div class="table cbi-section-table"> + <div class="thead"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Announced network%></div> + <div class="th cbi-section-table-cell"><%:OLSR gateway%></div> + <div class="th cbi-section-table-cell"><%:Validity Time%></div> + </div> - </thead> - <tbody id="olsrd_hna"> + </div> + <div class="tbody" id="olsrd_hna"> <% for k, route in ipairs(hna) do %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=hna[k].proto%>"> - <td class="cbi-section-table-cell"><%=hna[k].destination%>/<%=hna[k].genmask%> </td> - <td class="cbi-section-table-cell"> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=hna[k].proto%>"> + <div class="td cbi-section-table-cell"><%=hna[k].destination%>/<%=hna[k].genmask%> </div> + <div class="td cbi-section-table-cell"> <% if hna[k].proto == '6' then %> <a href="http://[<%=hna[k].gateway%>]/cgi-bin-status.html"><%=hna[k].gateway%></a> <% else %> @@ -102,20 +102,20 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 }, <% if hna[k].hostname then %> / <a href="http://<%=hna[k].hostname%>/cgi-bin-status.html"><%=hna[k].hostname%></a> <% end %> - </td> + </div> <% if hna[k].validityTime then validity = hna[k].validityTime .. 's' else validity = '-' end %> - <td class="cbi-section-table-cell"><%=validity%></td> - </tr> + <div class="td cbi-section-table-cell"><%=validity%></div> + </div> <% i = ((i % 2) + 1) end %> - </tbody> - </table> + </div> + </div> </fieldset> <%+status-olsr/common_js%> diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/interfaces.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/interfaces.htm index 81d0a3dd31..e3ccd0c23d 100644 --- a/applications/luci-app-olsr/luasrc/view/status-olsr/interfaces.htm +++ b/applications/luci-app-olsr/luasrc/view/status-olsr/interfaces.htm @@ -18,31 +18,31 @@ local i = 1 <fieldset class="cbi-section"> <legend><%:Overview of interfaces where OLSR is running%></legend> - <table class="cbi-section-table"> - <tr> - <th class="cbi-section-table-cell"><%:Interface%></th> - <th class="cbi-section-table-cell"><%:State%></th> - <th class="cbi-section-table-cell"><%:MTU%></th> - <th class="cbi-section-table-cell"><%:WLAN%></th> - <th class="cbi-section-table-cell"><%:Source address%></th> - <th class="cbi-section-table-cell"><%:Netmask%></th> - <th class="cbi-section-table-cell"><%:Broadcast address%></th> - </tr> + <div class="table cbi-section-table"> + <div class="tr"> + <div class="th cbi-section-table-cell"><%:Interface%></div> + <div class="th cbi-section-table-cell"><%:State%></div> + <div class="th cbi-section-table-cell"><%:MTU%></div> + <div class="th cbi-section-table-cell"><%:WLAN%></div> + <div class="th cbi-section-table-cell"><%:Source address%></div> + <div class="th cbi-section-table-cell"><%:Netmask%></div> + <div class="th cbi-section-table-cell"><%:Broadcast address%></div> + </div> <% for k, iface in ipairs(iface) do %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=iface.proto%>"> - <td class="cbi-section-table-cell"><%=iface.name%></td> - <td class="cbi-section-table-cell"><%=iface.state%></td> - <td class="cbi-section-table-cell"><%=iface.olsrMTU%></td> - <td class="cbi-section-table-cell"><%=iface.wireless and luci.i18n.translate('yes') or luci.i18n.translate('no')%></td> - <td class="cbi-section-table-cell"><%=iface.ipv4Address or iface.ipv6Address%></td> - <td class="cbi-section-table-cell"><%=iface.netmask%></td> - <td class="cbi-section-table-cell"><%=iface.broadcast or iface.multicast%></td> - </tr> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=iface.proto%>"> + <div class="td cbi-section-table-cell"><%=iface.name%></div> + <div class="td cbi-section-table-cell"><%=iface.state%></div> + <div class="td cbi-section-table-cell"><%=iface.olsrMTU%></div> + <div class="td cbi-section-table-cell"><%=iface.wireless and luci.i18n.translate('yes') or luci.i18n.translate('no')%></div> + <div class="td cbi-section-table-cell"><%=iface.ipv4Address or iface.ipv6Address%></div> + <div class="td cbi-section-table-cell"><%=iface.netmask%></div> + <div class="td cbi-section-table-cell"><%=iface.broadcast or iface.multicast%></div> + </div> <% i = ((i % 2) + 1) end %> - </table> + </div> </fieldset> <%+status-olsr/common_js%> <%+footer%> diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/mid.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/mid.htm index f658288fc1..8c9f63af0b 100644 --- a/applications/luci-app-olsr/luasrc/view/status-olsr/mid.htm +++ b/applications/luci-app-olsr/luasrc/view/status-olsr/mid.htm @@ -15,11 +15,11 @@ local i = 1 <div id="togglebuttons"></div> <fieldset class="cbi-section"> <legend><%:Overview of known multiple interface announcements%></legend> - <table class="cbi-section-table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:OLSR node%></th> - <th class="cbi-section-table-cell" ><%:Secondary OLSR interfaces%></th> - </tr> + <div class="table cbi-section-table"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:OLSR node%></div> + <div class="th cbi-section-table-cell" ><%:Secondary OLSR interfaces%></div> + </div> <% for k, mid in ipairs(mids) do local aliases = '' @@ -37,14 +37,14 @@ local i = 1 end %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=mid.proto%>"> - <td class="cbi-section-table-cell"><a href="http://<%=host%>/cgi-bin-status.html"><%=mid.ipAddress%></a></td> - <td class="cbi-section-table-cell"><%=aliases%></td> - </tr> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=mid.proto%>"> + <div class="td cbi-section-table-cell"><a href="http://<%=host%>/cgi-bin-status.html"><%=mid.ipAddress%></a></div> + <div class="td cbi-section-table-cell"><%=aliases%></div> + </div> <% i = ((i % 2) + 1) end %> - </table> + </div> </fieldset> <%+status-olsr/common_js%> <%+footer%> diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/neighbors.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/neighbors.htm index c077c20486..ab09865865 100644 --- a/applications/luci-app-olsr/luasrc/view/status-olsr/neighbors.htm +++ b/applications/luci-app-olsr/luasrc/view/status-olsr/neighbors.htm @@ -64,36 +64,36 @@ end if (neigh.proto == '6') { s += String.format( - '<tr class="cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-%s">' + - '<td class="cbi-section-table-titles" style="background-color:%s"><a href="http://[%s]/cgi-bin-status.html">%s</a></td>', + '<div class="tr cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-%s">' + + '<div class="td cbi-section-table-titles" style="background-color:%s"><a href="http://[%s]/cgi-bin-status.html">%s</a></div>', neigh.proto, neigh.dfgcolor, neigh.rip, neigh.rip ); } else { s += String.format( - '<tr class="cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-%s">' + - '<td class="cbi-section-table-titles" style="background-color:%s"><a href="http://%s/cgi-bin-status.html">%s</a></td>', + '<div class="tr cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-%s">' + + '<div class="td cbi-section-table-titles" style="background-color:%s"><a href="http://%s/cgi-bin-status.html">%s</a></div>', neigh.proto, neigh.dfgcolor, neigh.rip, neigh.rip ); } if (neigh.hn) { s += String.format( - '<td class="cbi-section-table-titles" style="background-color:%s"><a href="http://%s/cgi-bin-status.html">%s</a></td>', + '<div class="td cbi-section-table-titles" style="background-color:%s"><a href="http://%s/cgi-bin-status.html">%s</a></div>', neigh.dfgcolor, neigh.hn, neigh.hn ); } else { s += String.format( - '<td class="cbi-section-table-titles" style="background-color:%s">?</td>', + '<div class="td cbi-section-table-titles" style="background-color:%s">?</div>', neigh.dfgcolor ); } s += String.format( - '<td class="cbi-section-table-titles" style="background-color:%s">%s</td>' + - '<td class="cbi-section-table-titles" style="background-color:%s">%s</td>' + - '<td class="cbi-section-table-titles" style="background-color:%s">%s</td>' + - '<td class="cbi-section-table-titles" style="background-color:%s">%s</td>' + - '<td class="cbi-section-table-titles" style="background-color:%s">%s</td>' + - '<td class="cbi-section-table-titles" style="background-color:%s" title="Signal: %s Noise: %s">%s</td>' + - '</tr>', + '<div class="td cbi-section-table-titles" style="background-color:%s">%s</div>' + + '<div class="td cbi-section-table-titles" style="background-color:%s">%s</div>' + + '<div class="td cbi-section-table-titles" style="background-color:%s">%s</div>' + + '<div class="td cbi-section-table-titles" style="background-color:%s">%s</div>' + + '<div class="td cbi-section-table-titles" style="background-color:%s">%s</div>' + + '<div class="td cbi-section-table-titles" style="background-color:%s" title="Signal: %s Noise: %s">%s</div>' + + '</div>', neigh.dfgcolor, neigh.ifn, neigh.dfgcolor, neigh.lip, neigh.dfgcolor, neigh.lq, neigh.dfgcolor, neigh.nlq, neigh.color, neigh.cost, neigh.snr_color, neigh.signal, neigh.noise, neigh.snr || '?' ); } @@ -112,21 +112,21 @@ end <fieldset class="cbi-section"> <legend><%:Overview of currently established OLSR connections%></legend> - <table class="cbi-section-table"> - <thead> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Neighbour IP%></th> - <th class="cbi-section-table-cell"><%:Hostname%></th> - <th class="cbi-section-table-cell"><%:Interface%></th> - <th class="cbi-section-table-cell"><%:Local interface IP%></th> - <th class="cbi-section-table-cell">LQ</th> - <th class="cbi-section-table-cell">NLQ</th> - <th class="cbi-section-table-cell">ETX</th> - <th class="cbi-section-table-cell">SNR</th> - </tr> - </thead> + <div class="table cbi-section-table"> + <div class="thead"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Neighbour IP%></div> + <div class="th cbi-section-table-cell"><%:Hostname%></div> + <div class="th cbi-section-table-cell"><%:Interface%></div> + <div class="th cbi-section-table-cell"><%:Local interface IP%></div> + <div class="th cbi-section-table-cell">LQ</div> + <div class="th cbi-section-table-cell">NLQ</div> + <div class="th cbi-section-table-cell">ETX</div> + <div class="th cbi-section-table-cell">SNR</div> + </div> + </div> - <tbody id="olsr_neigh_table"> + <div class="tbody" id="olsr_neigh_table"> <% local i = 1 for k, link in ipairs(links) do link.linkCost = tonumber(link.linkCost) or 0 @@ -147,25 +147,25 @@ end end %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=link.proto%>"> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=link.proto%>"> <% if link.proto == "6" then %> - <td class="cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><a href="http://[<%=link.remoteIP%>]/cgi-bin-status.html"><%=link.remoteIP%></a></td> + <div class="td cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><a href="http://[<%=link.remoteIP%>]/cgi-bin-status.html"><%=link.remoteIP%></a></div> <% else %> - <td class="cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><a href="http://<%=link.remoteIP%>/cgi-bin-status.html"><%=link.remoteIP%></a></td> + <div class="td cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><a href="http://<%=link.remoteIP%>/cgi-bin-status.html"><%=link.remoteIP%></a></div> <% end %> - <td class="cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><a href="http://<%=link.hostname%>/cgi-bin-status.html"><%=link.hostname%></a></td> - <td class="cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><%=link.interface%></td> - <td class="cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><%=link.localIP%></td> - <td class="cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><%=string.format("%.3f", link.linkQuality)%></td> - <td class="cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><%=string.format("%.3f", link.neighborLinkQuality)%></td> - <td class="cbi-section-table-titles" style="background-color:<%=color%>"><%=string.format("%.3f", link.linkCost)%></td> - <td class="cbi-section-table-titles" style="background-color:<%=snr_color%>" title="Signal: <%=link.signal%> Noise: <%=link.noise%>"><%=link.snr%></td> - </tr> + <div class="td cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><a href="http://<%=link.hostname%>/cgi-bin-status.html"><%=link.hostname%></a></div> + <div class="td cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><%=link.interface%></div> + <div class="td cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><%=link.localIP%></div> + <div class="td cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><%=string.format("%.3f", link.linkQuality)%></div> + <div class="td cbi-section-table-titles" style="background-color:<%=defaultgw_color%>"><%=string.format("%.3f", link.neighborLinkQuality)%></div> + <div class="td cbi-section-table-titles" style="background-color:<%=color%>"><%=string.format("%.3f", link.linkCost)%></div> + <div class="td cbi-section-table-titles" style="background-color:<%=snr_color%>" title="Signal: <%=link.signal%> Noise: <%=link.noise%>"><%=link.snr%></div> + </div> <% i = ((i % 2) + 1) end %> - </tbody> - </table> + </div> + </div> <br /> <%+status-olsr/legend%> diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm index 61e17b3b2d..832a27aed7 100644 --- a/applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm +++ b/applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm @@ -160,48 +160,48 @@ XHR.poll(10, '<%=REQUEST_URI%>/json', { }, <fieldset class="cbi-section"> <legend><%:Network%></legend> - <table width="100%" cellspacing="10"> - <tr><td width="33%"><%:Interfaces%></td><td> + <div class="table" width="100%" cellspacing="10"> + <div class="tr"><div class="td" width="33%"><%:Interfaces%></div><div class="td"> <a href="<%=REQUEST_URI%>/interfaces"> <span id="nr_ifaces">-<span> </a> - </td></tr> - <tr><td width="33%"><%:Neighbors%></td><td> + </div></div> + <div class="tr"><div class="td" width="33%"><%:Neighbors%></div><div class="td"> <a href="<%=REQUEST_URI%>/neighbors"> <span id="nr_neigh">-</span> </a> - </td></tr> - <tr><td width="33%"><%:Nodes%></td><td> + </div></div> + <div class="tr"><div class="td" width="33%"><%:Nodes%></div><div class="td"> <a href="<%=REQUEST_URI%>/topology"> <span id="nr_nodes">-</span> </a> - </td></tr> - <tr><td width="33%"><%:HNA%></td><td> + </div></div> + <div class="tr"><div class="td" width="33%"><%:HNA%></div><div class="td"> <a href="<%=REQUEST_URI%>/hna"> <span id="nr_hna">-</span> </a> - </td></tr> - <tr><td width="33%"><%:Links total%></td><td> + </div></div> + <div class="tr"><div class="td" width="33%"><%:Links total%></div><div class="td"> <a href="<%=REQUEST_URI%>/topology"> <span id="nr_topo">-</span> </a> - </td></tr> - <tr><td width="33%"><%:Links per node (average)%></td><td> + </div></div> + <div class="tr"><div class="td" width="33%"><%:Links per node (average)%></div><div class="td"> <span id="meshfactor">-</span> - </td></tr> + </div></div> - </table> + </div> </fieldset> <fieldset class="cbi-section"> <legend>OLSR <%:Configuration%></legend> - <table width="100%" cellspacing="10"> - <tr><td width="33%"><%:Version%></td><td> + <div class="table" width="100%" cellspacing="10"> + <div class="tr"><div class="td" width="33%"><%:Version%></div><div class="td"> <span id="version">-<span> - </td></tr> - <tr><td width="33%"><%:Download Config%></td><td> + </div></div> + <div class="tr"><div class="td" width="33%"><%:Download Config%></div><div class="td"> <% if has_ipv4_conf then %> <a href="<%=REQUEST_URI%>?openwrt_v4">OpenWrt (IPv4)</a>, <% end %> @@ -214,8 +214,8 @@ XHR.poll(10, '<%=REQUEST_URI%>/json', { }, <% if has_ipv6_conf then %> <a href="<%=REQUEST_URI%>?conf_v6">OLSRD (IPv6)</a> <% end %> - </td></tr> - </table> + </div></div> + </div> </fieldset> <%+footer%> diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/routes.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/routes.htm index 8e46daa022..c75b94fcef 100644 --- a/applications/luci-app-olsr/luasrc/view/status-olsr/routes.htm +++ b/applications/luci-app-olsr/luasrc/view/status-olsr/routes.htm @@ -50,9 +50,9 @@ XHR.poll(20, '<%=REQUEST_URI%>', { status: 1 }, var route = info[idx]; s += String.format( - '<tr class="cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-%s">' + - '<td class="cbi-section-table-cell">%s/%s</td>' + - '<td class="cbi-section-table-cell">' + + '<div class="tr cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-%s">' + + '<div class="td cbi-section-table-cell">%s/%s</div>' + + '<div class="td cbi-section-table-cell">' + '<a href="http://%s/cgi-bin-status.html">%s</a>', route.proto, route.dest, route.genmask, route.gw, route.gw ) @@ -72,11 +72,11 @@ XHR.poll(20, '<%=REQUEST_URI%>', { status: 1 }, } s += String.format( - '</td>' + - '<td class="cbi-section-table-cell">%s</td>' + - '<td class="cbi-section-table-cell">%s</td>' + - '<td class="cbi-section-table-cell" style="background-color:%s">%s</td>' + - '</tr>', + '</div>' + + '<div class="td cbi-section-table-cell">%s</div>' + + '<div class="td cbi-section-table-cell">%s</div>' + + '<div class="td cbi-section-table-cell" style="background-color:%s">%s</div>' + + '</div>', route.interface, route.metric, route.color, route.etx || '?' ); } @@ -96,27 +96,27 @@ XHR.poll(20, '<%=REQUEST_URI%>', { status: 1 }, <fieldset class="cbi-section"> <legend><%:Overview of currently known routes to other OLSR nodes%></legend> -<table class="cbi-section-table"> - <thead> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Announced network%></th> - <th class="cbi-section-table-cell"><%:OLSR gateway%></th> - <th class="cbi-section-table-cell"><%:Interface%></th> - <th class="cbi-section-table-cell"><%:Metric%></th> - <th class="cbi-section-table-cell">ETX</th> - </tr> - </thead> +<div class="table cbi-section-table"> + <div class="thead"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Announced network%></div> + <div class="th cbi-section-table-cell"><%:OLSR gateway%></div> + <div class="th cbi-section-table-cell"><%:Interface%></div> + <div class="th cbi-section-table-cell"><%:Metric%></div> + <div class="th cbi-section-table-cell">ETX</div> + </div> + </div> - <tbody id="olsrd_routes"> + <div class="tbody" id="olsrd_routes"> <% for k, route in ipairs(routes) do ETX = tonumber(route.rtpMetricCost)/1024 or '0' color = olsrtools.etx_color(ETX) %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=route.proto%>"> - <td class="cbi-section-table-cell"><%=route.destination%>/<%=route.genmask%></td> - <td class="cbi-section-table-cell"> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=route.proto%>"> + <div class="td cbi-section-table-cell"><%=route.destination%>/<%=route.genmask%></div> + <div class="td cbi-section-table-cell"> <% if route.proto == '6' then %> <a href="http://[<%=route.gateway%>]/cgi-bin-status.html"><%=route.gateway%></a> <% else %> @@ -125,16 +125,16 @@ XHR.poll(20, '<%=REQUEST_URI%>', { status: 1 }, <% if route.hostname then %> / <a href="http://<%=route.Hostname%>/cgi-bin-status.html"><%=route.hostname%></a> <% end %> - </td> - <td class="cbi-section-table-cell"><%=route.networkInterface%></td> - <td class="cbi-section-table-cell"><%=route.metric%></td> - <td class="cbi-section-table-cell" style="background-color:<%=color%>"><%=string.format("%.3f", ETX)%></td> - </tr> + </div> + <div class="td cbi-section-table-cell"><%=route.networkInterface%></div> + <div class="td cbi-section-table-cell"><%=route.metric%></div> + <div class="td cbi-section-table-cell" style="background-color:<%=color%>"><%=string.format("%.3f", ETX)%></div> + </div> <% i = ((i % 2) + 1) end %> - </tbody> -</table> + </div> +</div> <%+status-olsr/legend%> </fieldset> diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/smartgw.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/smartgw.htm index 6aa7a75461..7ca66816ae 100644 --- a/applications/luci-app-olsr/luasrc/view/status-olsr/smartgw.htm +++ b/applications/luci-app-olsr/luasrc/view/status-olsr/smartgw.htm @@ -56,7 +56,7 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 }, for (var idx = 0; idx < info.length; idx++) { var smartgw = info[idx]; - s += '<tr class="cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-' + smartgw.proto + '">' + s += '<div class="tr cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-' + smartgw.proto + '">' if (smartgw.proto == '6') { linkgw = '<a href="http://[' + smartgw.ipAddress + ']/cgi-bin-status.html">' + smartgw.ipAddress + '</a>' } else { @@ -64,18 +64,18 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 }, } s += String.format( - '<td class="cbi-section-table-cell">%s</td>' + - '<td class="cbi-section-table-cell">%s</td>' + - '<td class="cbi-section-table-cell">%s</td>' + - '<td class="cbi-section-table-cell">%s</td>' + - '<td class="cbi-section-table-cell">%s</td>' + - '<td class="cbi-section-table-cell">%s</td>' + - '<td class="cbi-section-table-cell">%s</td>' + - '<td class="cbi-section-table-cell">%s</td>' + - '<td class="cbi-section-table-cell">%s</td>', + '<div class="td cbi-section-table-cell">%s</div>' + + '<div class="td cbi-section-table-cell">%s</div>' + + '<div class="td cbi-section-table-cell">%s</div>' + + '<div class="td cbi-section-table-cell">%s</div>' + + '<div class="td cbi-section-table-cell">%s</div>' + + '<div class="td cbi-section-table-cell">%s</div>' + + '<div class="td cbi-section-table-cell">%s</div>' + + '<div class="td cbi-section-table-cell">%s</div>' + + '<div class="td cbi-section-table-cell">%s</div>', linkgw, smartgw.status, smartgw.tcPathCost, smartgw.hopCount, smartgw.uplinkSpeed, smartgw.downlinkSpeed, smartgw.v4, smartgw.v6, smartgw.externalPrefix ) - s += '</tr>' + s += '</div>' } smartgwdiv.innerHTML = s; } @@ -94,23 +94,23 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 }, <fieldset class="cbi-section"> <legend><%:Overview of smart gateways in this network%></legend> - <table class="cbi-section-table"> - <thead> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Gateway%></th> - <th class="cbi-section-table-cell"><%:Status%></th> - <th class="cbi-section-table-cell"><%:ETX%></th> - <th class="cbi-section-table-cell"><%:Hops%></th> - <th class="cbi-section-table-cell"><%:Uplink%></th> - <th class="cbi-section-table-cell"><%:Downlink%></th> - <th class="cbi-section-table-cell"><%:IPv4%></th> - <th class="cbi-section-table-cell"><%:IPv6%></th> - <th class="cbi-section-table-cell"><%:Prefix%></th> - - </tr> - </thead> - - <tbody id="olsrd_smartgw"> + <div class="table cbi-section-table"> + <div class="thead"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Gateway%></div> + <div class="th cbi-section-table-cell"><%:Status%></div> + <div class="th cbi-section-table-cell"><%:ETX%></div> + <div class="th cbi-section-table-cell"><%:Hops%></div> + <div class="th cbi-section-table-cell"><%:Uplink%></div> + <div class="th cbi-section-table-cell"><%:Downlink%></div> + <div class="th cbi-section-table-cell"><%:IPv4%></div> + <div class="th cbi-section-table-cell"><%:IPv6%></div> + <div class="th cbi-section-table-cell"><%:Prefix%></div> + + </div> + </div> + + <div class="tbody" id="olsrd_smartgw"> <% for k, gw in ipairs(gws) do gw.tcPathCost = tonumber(gw.tcPathCost)/1024 or 0 @@ -119,27 +119,27 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 }, end %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=proto%>"> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=proto%>"> <% if gw.proto == '6' then %> - <td class="cbi-section-table-cell"><a href="http://[<%=gw.ipAddress%>]/cgi-bin-status.html"><%=gw.ipAddress%></a></td> + <div class="td cbi-section-table-cell"><a href="http://[<%=gw.ipAddress%>]/cgi-bin-status.html"><%=gw.ipAddress%></a></div> <% else %> - <td class="cbi-section-table-cell"><a href="http://<%=gw.ipAddress%>/cgi-bin-status.html"><%=gw.ipAddress%></a></td> + <div class="td cbi-section-table-cell"><a href="http://<%=gw.ipAddress%>/cgi-bin-status.html"><%=gw.ipAddress%></a></div> <% end %> - <td class="cbi-section-table-cell"><%=gw.ipv4Status or gw.ipv6Status or '-' %></td> - <td class="cbi-section-table-cell"><%=string.format("%.3f", gw.tcPathCost)%></td> - <td class="cbi-section-table-cell"><%=gw.hopCount%></td> - <td class="cbi-section-table-cell"><%=gw.uplinkSpeed%></td> - <td class="cbi-section-table-cell"><%=gw.downlinkSpeed%></td> - <td class="cbi-section-table-cell"><%=gw.ipv4 and luci.i18n.translate('yes') or luci.i18n.translate('no')%></td> - <td class="cbi-section-table-cell"><%=gw.ipv6 and luci.i18n.translate('yes') or luci.i18n.translate('no')%></td> - <td class="cbi-section-table-cell"><%=gw.externalPrefix%></td> - </tr> + <div class="td cbi-section-table-cell"><%=gw.ipv4Status or gw.ipv6Status or '-' %></div> + <div class="td cbi-section-table-cell"><%=string.format("%.3f", gw.tcPathCost)%></div> + <div class="td cbi-section-table-cell"><%=gw.hopCount%></div> + <div class="td cbi-section-table-cell"><%=gw.uplinkSpeed%></div> + <div class="td cbi-section-table-cell"><%=gw.downlinkSpeed%></div> + <div class="td cbi-section-table-cell"><%=gw.ipv4 and luci.i18n.translate('yes') or luci.i18n.translate('no')%></div> + <div class="td cbi-section-table-cell"><%=gw.ipv6 and luci.i18n.translate('yes') or luci.i18n.translate('no')%></div> + <div class="td cbi-section-table-cell"><%=gw.externalPrefix%></div> + </div> <% i = ((i % 2) + 1) end %> - </tbody> - </table> + </div> + </div> </fieldset> <% else %> diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/topology.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/topology.htm index b3abeaecbe..02fdfddac3 100644 --- a/applications/luci-app-olsr/luasrc/view/status-olsr/topology.htm +++ b/applications/luci-app-olsr/luasrc/view/status-olsr/topology.htm @@ -17,14 +17,14 @@ local olsrtools = require "luci.tools.olsr" <fieldset class="cbi-section"> <legend><%:Overview of currently known OLSR nodes%></legend> - <table class="cbi-section-table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:OLSR node%></th> - <th class="cbi-section-table-cell"><%:Last hop%></th> - <th class="cbi-section-table-cell"><%:LQ%></th> - <th class="cbi-section-table-cell"><%:NLQ%></th> - <th class="cbi-section-table-cell"><%:ETX%></th> - </tr> + <div class="table cbi-section-table"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:OLSR node%></div> + <div class="th cbi-section-table-cell"><%:Last hop%></div> + <div class="th cbi-section-table-cell"><%:LQ%></div> + <div class="th cbi-section-table-cell"><%:NLQ%></div> + <div class="th cbi-section-table-cell"><%:ETX%></div> + </div> <% for k, route in ipairs(routes) do local cost = string.format("%.3f", tonumber(route.tcEdgeCost/1024) or 0) @@ -33,28 +33,28 @@ local olsrtools = require "luci.tools.olsr" local nlq = string.format("%.3f", tonumber(route.neighborLinkQuality) or 0) %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=route.proto%>"> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=route.proto%>"> <% if route.proto == "6" then %> - <td class="cbi-section-table-cell"><a href="http://[<%=route.destinationIP%>]/cgi-bin-status.html"><%=route.destinationIP%></a></td> - <td class="cbi-section-table-cell"><a href="http://[<%=route.lastHopIP%>]/cgi-bin-status.html"><%=route.lastHopIP%></a></td> + <div class="td cbi-section-table-cell"><a href="http://[<%=route.destinationIP%>]/cgi-bin-status.html"><%=route.destinationIP%></a></div> + <div class="td cbi-section-table-cell"><a href="http://[<%=route.lastHopIP%>]/cgi-bin-status.html"><%=route.lastHopIP%></a></div> <% else %> - <td class="cbi-section-table-cell"><a href="http://<%=route.destinationIP%>/cgi-bin-status.html"><%=route.destinationIP%></a></td> - <td class="cbi-section-table-cell"><a href="http://<%=route.lastHopIP%>/cgi-bin-status.html"><%=route.lastHopIP%></a></td> + <div class="td cbi-section-table-cell"><a href="http://<%=route.destinationIP%>/cgi-bin-status.html"><%=route.destinationIP%></a></div> + <div class="td cbi-section-table-cell"><a href="http://<%=route.lastHopIP%>/cgi-bin-status.html"><%=route.lastHopIP%></a></div> <%end%> - <td class="cbi-section-table-cell"><%=lq%></td> - <td class="cbi-section-table-cell"><%=nlq%></td> - <td class="cbi-section-table-cell" style="background-color:<%=color%>"><%=cost%></td> - </tr> + <div class="td cbi-section-table-cell"><%=lq%></div> + <div class="td cbi-section-table-cell"><%=nlq%></div> + <div class="td cbi-section-table-cell" style="background-color:<%=color%>"><%=cost%></div> + </div> <% i = ((i % 2) + 1) end %> - </table> + </div> <%+status-olsr/legend%> </fieldset> diff --git a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua index d2b5d32c05..a6b0e1dd90 100644 --- a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua +++ b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua @@ -56,7 +56,7 @@ function s.create(self, name) luci.cbi.CREATE_PREFIX .. self.config .. "." .. self.sectiontype .. ".text" ) - if string.len(name)>3 and not name:match("[^a-zA-Z0-9_]") then + if #name > 3 and not name:match("[^a-zA-Z0-9_]") then uci:section( "openvpn", "openvpn", name, uci:get_all( "openvpn_recipes", recipe ) @@ -67,9 +67,11 @@ function s.create(self, name) uci:save("openvpn") luci.http.redirect( self.extedit:format(name) ) - else + elseif #name > 0 then self.invalid_cts = true end + + return 0 end @@ -103,10 +105,7 @@ function updown.cfgvalue(self, section) end function updown.write(self, section, value) if self.option == "stop" then - local pid = s.getPID(section) - if pid ~= nil then - sys.process.signal(pid,15) - end + luci.sys.call("/etc/init.d/openvpn stop %s" % section) else luci.sys.call("/etc/init.d/openvpn start %s" % section) end @@ -126,5 +125,8 @@ function proto.cfgvalue(self, section) return val or "udp" end +function m.on_after_commit(self,map) + require("luci.sys").call('/etc/init.d/openvpn reload') +end return m diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua index af1a75b6f2..5fc20c52bc 100644 --- a/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua +++ b/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua @@ -23,7 +23,7 @@ function values_actions(o) end function values_redir(o, xmode) - o.map.uci.foreach("shadowsocks-libev", "ss_redir", function(sdata) + o.map.uci:foreach("shadowsocks-libev", "ss_redir", function(sdata) local disabled = ucival_to_bool(sdata["disabled"]) local sname = sdata[".name"] local mode = sdata["mode"] or "tcp_only" @@ -37,7 +37,7 @@ function values_redir(o, xmode) end function values_serverlist(o) - o.map.uci.foreach("shadowsocks-libev", "server", function(sdata) + o.map.uci:foreach("shadowsocks-libev", "server", function(sdata) local sname = sdata[".name"] local server = sdata["server"] local server_port = sdata["server_port"] diff --git a/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm b/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm index 219d89b074..80b95564dd 100644 --- a/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm +++ b/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm @@ -1,8 +1,8 @@ <div class="cbi-section-create cbi-tblsection-create"> <br /> - <table class="cbi-section-table"> - <tr class="cbi-section-table-row"> - <td class="cbi-section-table-cell" style="width:140px"> + <div class="table cbi-section-table"> + <div class="tr cbi-section-table-row"> + <div class="td cbi-section-table-cell" style="width:140px"> <select class="cbi-input-select" id="_newinst.type" name="_newinst.type"> <option value="_dummy">-- instance type --</option> <option value="ss_local">ss-local</option> @@ -10,15 +10,15 @@ <option value="ss_redir">ss-redir</option> <option value="ss_server">ss-server</option> </select> - </td> - <td class="cbi-section-table-cell" style="width:110px"> + </div> + <div class="td cbi-section-table-cell" style="width:110px"> <input type="text" class="cbi-input-text" id="_newinst.name" name="_newinst.name" placeholder="<%:Name%>"/> - </td> - <td class="cbi-section-table-cell left"> + </div> + <div class="td cbi-section-table-cell left"> <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>" value="<%:Add%>" /> - </td> - </tr> - </table> + </div> + </div> + </div> </div> <script type="text/javascript">//<![CDATA[ XHR.poll(5, '<%=url('admin/services/shadowsocks-libev/status')%>', null, diff --git a/applications/luci-app-splash/luasrc/view/admin_status/splash.htm b/applications/luci-app-splash/luasrc/view/admin_status/splash.htm index 37f67776aa..aad330791d 100644 --- a/applications/luci-app-splash/luasrc/view/admin_status/splash.htm +++ b/applications/luci-app-splash/luasrc/view/admin_status/splash.htm @@ -145,19 +145,19 @@ end { var s = ''; if (info.length == undefined) { - s += '<tr class="cbi-section-table-row"><td colspan="7" class="cbi-section-table-cell"><br /><em><%:No clients connected%></em><br /></td></tr>' + s += '<div class="tr cbi-section-table-row"><div colspan="7" class="td cbi-section-table-cell"><br /><em><%:No clients connected%></em><br /></div></div>' }; for (var idx = 0; idx < info.length; idx++) { var splash = info[idx]; s += String.format( - '<tr class="cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+'">' + - '<td class="cbi-section-table-cell">%s</td>' + - '<td class="cbi-section-table-cell">%s</td>' + - '<td class="cbi-section-table-cell">%s</td>' + - '<td class="cbi-section-table-cell">%s</td>' + - '<td class="cbi-section-table-cell">%s/%s</td>' + - '<td class="cbi-section-table-cell">', + '<div class="tr cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+'">' + + '<div class="td cbi-section-table-cell">%s</div>' + + '<div class="td cbi-section-table-cell">%s</div>' + + '<div class="td cbi-section-table-cell">%s</div>' + + '<div class="td cbi-section-table-cell">%s</div>' + + '<div class="td cbi-section-table-cell">%s/%s</div>' + + '<div class="td cbi-section-table-cell">', splash.hostname, splash.ip, splash.mac, splash.timeleft, splash.trafficin, splash.trafficout); <% if is_admin then %> @@ -185,7 +185,7 @@ end <% else %> s += String.format('%s', splash.policy); <% end %> - s += '</td></tr>' + s += '</div></div>' } tbody.innerHTML = s; } @@ -200,18 +200,18 @@ end <legend><%:Active Clients%></legend> <div class="cbi-section-node"> <% if is_admin then %><form action="<%=REQUEST_URI%>" method="post"><input type="hidden" name="token" value="<%=token%>" /><% end %> - <table class="cbi-section-table"> - <thead> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Hostname%></th> - <th class="cbi-section-table-cell"><%:IP Address%></th> - <th class="cbi-section-table-cell"><%:MAC Address%></th> - <th class="cbi-section-table-cell"><%:Time remaining%></th> - <th class="cbi-section-table-cell"><%:Traffic in/out%></th> - <th class="cbi-section-table-cell"><%:Policy%></th> - </tr> - </thead> - <tbody id="splash_table"> + <div class="table cbi-section-table"> + <div class="thead"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Hostname%></div> + <div class="th cbi-section-table-cell"><%:IP Address%></div> + <div class="th cbi-section-table-cell"><%:MAC Address%></div> + <div class="th cbi-section-table-cell"><%:Time remaining%></div> + <div class="th cbi-section-table-cell"><%:Traffic in/out%></div> + <div class="th cbi-section-table-cell"><%:Policy%></div> + </div> + </div> + <div class="tbody" id="splash_table"> <%- local count = 0 @@ -227,16 +227,16 @@ end if c.ip then count = count + 1 -%> - <tr class="cbi-section-table-row cbi-rowstyle-<%=2-(count%2)%>"> - <td class="cbi-section-table-cell"><%=c.hostname or "<em>" .. translate("unknown") .. "</em>"%></td> - <td class="cbi-section-table-cell"><%=c.ip or "<em>" .. translate("unknown") .. "</em>"%></td> - <td class="cbi-section-table-cell"><%=showmac(c.mac)%></td> - <td class="cbi-section-table-cell"><%= + <div class="tr cbi-section-table-row cbi-rowstyle-<%=2-(count%2)%>"> + <div class="td cbi-section-table-cell"><%=c.hostname or "<em>" .. translate("unknown") .. "</em>"%></div> + <div class="td cbi-section-table-cell"><%=c.ip or "<em>" .. translate("unknown") .. "</em>"%></div> + <div class="td cbi-section-table-cell"><%=showmac(c.mac)%></div> + <div class="td cbi-section-table-cell"><%= (c.limit >= os.time()) and wat.date_format(c.limit-os.time()) or (c.policy ~= "normal") and "-" or "<em>" .. translate("expired") .. "</em>" - %></td> - <td class="cbi-section-table-cell"><%=wat.byte_format(c.bytes_in)%> / <%=wat.byte_format(c.bytes_out)%></td> - <td class="cbi-section-table-cell"> + %></div> + <div class="td cbi-section-table-cell"><%=wat.byte_format(c.bytes_in)%> / <%=wat.byte_format(c.bytes_out)%></div> + <div class="td cbi-section-table-cell"> <% if is_admin then %> <select name="policy.<%=c.mac:lower()%>" style="width:200px"> <option value="whitelist"<%=c.policy=="whitelist" and ' selected="selected"'%>><%:whitelisted%></option> @@ -250,21 +250,21 @@ end <% else %> <%=c.policy%> <% end %> - </td> - </tr> + </div> + </div> <%- end end if count == 0 then -%> - <tr class="cbi-section-table-row"> - <td colspan="7" class="cbi-section-table-cell"> + <div class="tr cbi-section-table-row"> + <div colspan="7" class="td cbi-section-table-cell"> <br /><em><%:No clients connected%></em><br /> - </td> - </tr> + </div> + </div> <%- end -%> - </tbody> - </table> + </div> + </div> <% if is_admin then %></form><% end %> </div> </fieldset> diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm index f76b52e9cc..bee6fcb360 100644 --- a/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm +++ b/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm @@ -17,14 +17,14 @@ This is free software, licensed under the Apache License, Version 2.0 </div> <fieldset class="cbi-section"> - <table class="cbi-section-table" style="empty-cells:hide"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell" style="text-align:left"><%:Device%></th> - <th class="cbi-section-table-cell" style="text-align:left"><%:SSID%></th> - <th class="cbi-section-table-cell" style="text-align:left"><%:BSSID%></th> - <th class="cbi-section-table-cell" style="text-align:left"><%:Encryption%></th> - <th class="cbi-section-table-cell" style="text-align:center" colspan="2"><%:Actions%></th> - </tr> + <div class="table cbi-section-table" style="empty-cells:hide"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell" style="text-align:left"><%:Device%></div> + <div class="th cbi-section-table-cell" style="text-align:left"><%:SSID%></div> + <div class="th cbi-section-table-cell" style="text-align:left"><%:BSSID%></div> + <div class="th cbi-section-table-cell" style="text-align:left"><%:Encryption%></div> + <div class="th cbi-section-table-cell" style="text-align:center" colspan="2"><%:Actions%></div> + </div> <% uci:foreach("wireless", "wifi-iface", function(s) local iface = s.network or "" @@ -40,25 +40,25 @@ This is free software, licensed under the Apache License, Version 2.0 style = "text-align:left;color:#0069d6;font-weight:bold" end %> - <tr class="cbi-section-table-row cbi-rowstyle-1" style="<%=style%>"> - <td style="<%=style%>"><%=device%></td> - <td style="<%=style%>"><%=ssid%></td> - <td style="<%=style%>"><%=bssid%></td> - <td style="<%=style%>"><%=encryption%></td> - <td class="cbi-value-field" style="width:80px"> - <input class="cbi-button cbi-button-up" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>&dir=up'" alt="<%:Move up%>" title="<%:Move up%>"/> - <input class="cbi-button cbi-button-down" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>&dir=down'" alt="<%:Move down%>" title="<%:Move down%>"/> - </td> - <td class="cbi-value-field" style="width:150px"> + <div class="tr cbi-section-table-row cbi-rowstyle-1" style="<%=style%>"> + <div class="td" style="<%=style%>"><%=device%></div> + <div class="td" style="<%=style%>"><%=ssid%></div> + <div class="td" style="<%=style%>"><%=bssid%></div> + <div class="td" style="<%=style%>"><%=encryption%></div> + <div class="td cbi-value-field" style="width:80px"> + <input class="cbi-button cbi-button-up" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>&dir=up'" alt="<%:Move up%>" title="<%:Move up%>"/> + <input class="cbi-button cbi-button-down" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>&dir=down'" alt="<%:Move down%>" title="<%:Move down%>"/> + </div> + <div class="td cbi-value-field" style="width:150px"> <input type="button" class="cbi-button cbi-button-edit" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiedit')%>?cfg=<%=section%>'" title="<%:Edit this Uplink%>" value="<%:Edit%>"/> <input type="button" class="cbi-button cbi-button-remove" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifidelete')%>?cfg=<%=section%>'" title="<%:Delete this Uplink%>" value="<%:Delete%>"/> - </td> - </tr> + </div> + </div> <% end end) %> - </table> + </div> </fieldset> <div class="cbi-page-actions right"> <% diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm index a8f63a17e2..81182b99b4 100644 --- a/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm +++ b/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm @@ -42,28 +42,28 @@ This is free software, licensed under the Apache License, Version 2.0 <div class="cbi-map"> <h2 name="content"><%:Wireless Scan%></h2> <fieldset class="cbi-section"> - <table class="cbi-section-table" style="empty-cells:hide"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell" style="text-align:left"><%:Uplink SSID%></th> - <th class="cbi-section-table-cell" style="text-align:left"><%:Uplink BSSID%></th> - <th class="cbi-section-table-cell" style="text-align:left"><%:Encryption%></th> - <th class="cbi-section-table-cell" style="text-align:left" colspan="2"><%:Signal strength%></th> - </tr> + <div class="table cbi-section-table" style="empty-cells:hide"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell" style="text-align:left"><%:Uplink SSID%></div> + <div class="th cbi-section-table-cell" style="text-align:left"><%:Uplink BSSID%></div> + <div class="th cbi-section-table-cell" style="text-align:left"><%:Encryption%></div> + <div class="th cbi-section-table-cell" style="text-align:left" colspan="2"><%:Signal strength%></div> + </div> <% for i, net in ipairs(iw.scanlist or { }) do %> - <tr class="cbi-section-table-row cbi-rowstyle-1"> - <td class="cbi-value-field" style="text-align:left"> + <div class="tr cbi-section-table-row cbi-rowstyle-1"> + <div class="td cbi-value-field" style="text-align:left"> <%=net.ssid and utl.pcdata(net.ssid) or "<em>%s</em>" % translate("hidden")%> - </td> - <td class="cbi-value-field" style="text-align:left"> + </div> + <div class="td cbi-value-field" style="text-align:left"> <%=net.bssid and utl.pcdata(net.bssid)%> - </td> - <td class="cbi-value-field" style="text-align:left"> + </div> + <div class="td cbi-value-field" style="text-align:left"> <%=format_wifi_encryption(net.encryption)%> - </td> - <td class="cbi-value-field" style="text-align:left"> + </div> + <div class="td cbi-value-field" style="text-align:left"> <%=percent_wifi_signal(net)%> % - </td> - <td class="cbi-value-field" style="width:100px;text-align:right"> + </div> + <div class="td cbi-value-field" style="width:100px;text-align:right"> <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiadd')%>" method="post"> <input type="hidden" name="token" value="<%=token%>"/> <input type="hidden" name="device" value="<%=utl.pcdata(dev)%>"/> @@ -76,10 +76,10 @@ This is free software, licensed under the Apache License, Version 2.0 <% end %> <input class="cbi-button cbi-button-apply" type="submit" value="<%:Add Uplink%>"/> </form> - </td> - </tr> + </div> + </div> <% end %> - </table> + </div> </fieldset> <div class="cbi-page-actions right"> <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiscan')%>" method="post"> diff --git a/applications/luci-app-travelmate/po/ja/travelmate.po b/applications/luci-app-travelmate/po/ja/travelmate.po index 535a9db260..6a46ea3c87 100644 --- a/applications/luci-app-travelmate/po/ja/travelmate.po +++ b/applications/luci-app-travelmate/po/ja/travelmate.po @@ -7,7 +7,7 @@ msgstr "" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.0.7\n" "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n" "Plural-Forms: nplurals=1; plural=0;\n" "Language: ja\n" @@ -15,9 +15,6 @@ msgstr "" msgid "Actions" msgstr "æ“作" -msgid "Add Interface" -msgstr "インターフェースã®è¿½åŠ " - msgid "Add Uplink" msgstr "アップリンクã®è¿½åŠ " @@ -71,7 +68,7 @@ msgstr "" msgid "Connection Limit" msgstr "接続制é™" -msgid "Create Uplink Interface" +msgid "Create Uplink interface" msgstr "アップリンク インターフェースã®ä½œæˆ" msgid "" @@ -202,7 +199,7 @@ msgid "Overall Timeout" msgstr "実行間隔" msgid "Overall retry timeout in seconds." -msgstr "" +msgstr "全体的ãªå†è©¦è¡Œã‚¿ã‚¤ãƒ アウト(秒)ã§ã™ã€‚" msgid "Overview" msgstr "概è¦" @@ -283,6 +280,8 @@ msgstr "ステーション電波" msgid "" "The BSSID information '%s' is optional and only required for hidden networks" msgstr "" +"BSSID æƒ…å ± '%s' ã¯ã‚ªãƒ—ションã§ã‚ã‚Šã€ã‚¹ãƒ†ãƒ«ã‚¹åŒ–ã•ã‚ŒãŸãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«ã®ã¿å¿…è¦ã§" +"ã™ã€‚" msgid "" "This form allows you to modify the content of the main firewall " @@ -319,6 +318,9 @@ msgstr "" "ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã«ã¯ã€ã‚·ã‚¹ãƒ†ãƒ ãƒã‚°å†…ã® Travelmate ã«é–¢ã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ã¿ãŒè¡¨ç¤ºã•" "ã‚Œã¾ã™ã€‚" +msgid "This step has only to be done once." +msgstr "ã“ã®æ‰‹é †ã¯ã€ä¸€åº¦ã ã‘実行ã•ã‚Œã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚" + msgid "Travelmate" msgstr "Travelmate" @@ -346,9 +348,6 @@ msgstr "アップリンク BSSID" msgid "Uplink SSID" msgstr "アップリンク SSID" -msgid "Uplink interface" -msgstr "アップリンク インターフェース" - msgid "View AP QR-Codes" msgstr "AP QR-コードを確èª" @@ -379,37 +378,11 @@ msgstr "無線スã‚ャン" msgid "Wireless Stations" msgstr "無線ステーション" -msgid "" -"add it to the wan zone of the firewall. This step has only to be done once." -msgstr "" -"ファイアウォール㮠wan ゾーンã«è¿½åŠ ã—ã¾ã™ã€‚ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã¯ã€ä¸€åº¦ã ã‘実行ã•ã‚Œã‚‹" -"å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚" +msgid "add it to the wan zone of the firewall.<br />" +msgstr "ファイアウォール㮠wan ゾーンã«è¿½åŠ ã—ã¾ã™ã€‚<br />" msgid "hidden" -msgstr "(ä¸æ˜Žï¼‰" +msgstr "(ステルス)" msgid "n/a" msgstr "利用ä¸å¯" - -#~ msgid "Enable 'automatic' mode" -#~ msgstr "'automatic' モードã®æœ‰åŠ¹åŒ–" - -#~ msgid "Force a manual uplink rescan / reconnect in 'trigger' mode." -#~ msgstr "" -#~ "'trigger' モード時ã«ã€æ‰‹å‹•ã§ã‚¢ãƒƒãƒ—リンクã®å†ã‚¹ã‚ャンã¨å†æŽ¥ç¶šã‚’è¡Œã„ã¾ã™ã€‚" - -#~ msgid "" -#~ "Keep travelmate in an active state. Check every n seconds the connection " -#~ "status, i.e. the uplink availability." -#~ msgstr "" -#~ "Travelmate をアクティブ状態ã§ç¶æŒã—ã¾ã™ã€‚\"実行間隔\" ã§è¨å®šã•ã‚ŒãŸæ™‚間毎" -#~ "(秒)ã«ã€ã‚¢ãƒƒãƒ—リンクã®å¯ç”¨æ€§ã‚’確èªã™ã‚‹ãŸã‚ã«æŽ¥ç¶šçŠ¶æ…‹ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¾ã™" - -#~ msgid "Manual Rescan" -#~ msgstr "手動å†ã‚¹ã‚ャン" - -#~ msgid "Rescan" -#~ msgstr "å†ã‚¹ã‚ャン" - -#~ msgid "Timeout in seconds between retries in 'automatic' mode." -#~ msgstr "'automatic' モード時ã«æŽ¥ç¶šã‚’確èªã¾ãŸã¯å†è©¦è¡Œã™ã‚‹é–“隔(秒)ã§ã™ã€‚" diff --git a/applications/luci-app-travelmate/po/pt-br/travelmate.po b/applications/luci-app-travelmate/po/pt-br/travelmate.po index 5ea4d4a0d3..6bf65b9370 100644 --- a/applications/luci-app-travelmate/po/pt-br/travelmate.po +++ b/applications/luci-app-travelmate/po/pt-br/travelmate.po @@ -15,9 +15,6 @@ msgstr "" msgid "Actions" msgstr "" -msgid "Add Interface" -msgstr "" - msgid "Add Uplink" msgstr "" @@ -67,7 +64,7 @@ msgstr "" msgid "Connection Limit" msgstr "" -msgid "Create Uplink Interface" +msgid "Create Uplink interface" msgstr "" msgid "" @@ -292,6 +289,9 @@ msgid "" "messages only." msgstr "" +msgid "This step has only to be done once." +msgstr "" + msgid "Travelmate" msgstr "Travelmate" @@ -319,9 +319,6 @@ msgstr "" msgid "Uplink SSID" msgstr "" -msgid "Uplink interface" -msgstr "" - msgid "View AP QR-Codes" msgstr "" @@ -352,8 +349,7 @@ msgstr "" msgid "Wireless Stations" msgstr "" -msgid "" -"add it to the wan zone of the firewall. This step has only to be done once." +msgid "add it to the wan zone of the firewall.<br />" msgstr "" msgid "hidden" diff --git a/applications/luci-app-travelmate/po/ru/travelmate.po b/applications/luci-app-travelmate/po/ru/travelmate.po index fad31bb849..8b25e9b139 100644 --- a/applications/luci-app-travelmate/po/ru/travelmate.po +++ b/applications/luci-app-travelmate/po/ru/travelmate.po @@ -18,9 +18,6 @@ msgstr "" msgid "Actions" msgstr "ДейÑтвиÑ" -msgid "Add Interface" -msgstr "Добавить интерфейÑ" - msgid "Add Uplink" msgstr "Подключение к Ñети" @@ -70,8 +67,8 @@ msgstr "" msgid "Connection Limit" msgstr "Ограничение Ñоединений" -msgid "Create Uplink Interface" -msgstr "Создать Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñети" +msgid "Create Uplink interface" +msgstr "" msgid "" "Create a new wireless wan uplink interface, configure it to use dhcp and" @@ -315,6 +312,9 @@ msgstr "" "Страница проÑмотра ÑиÑтемного журнала, показаны только ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ ÑвÑзанные Ñ " "работой утилиты TravelMate." +msgid "This step has only to be done once." +msgstr "" + msgid "Travelmate" msgstr "TravelMate" @@ -342,9 +342,6 @@ msgstr "BSSID внешней Ñети" msgid "Uplink SSID" msgstr "SSID внешней Ñети" -msgid "Uplink interface" -msgstr "Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ¹ Ñети" - msgid "View AP QR-Codes" msgstr "" @@ -375,9 +372,8 @@ msgstr "Ðайденные точки доÑтупа Wi-Fi" msgid "Wireless Stations" msgstr "Клиенты беÑпроводной Ñети" -msgid "" -"add it to the wan zone of the firewall. This step has only to be done once." -msgstr "добавить в wan зону межÑетевого Ñкрана. Можно Ñделать только один раз." +msgid "add it to the wan zone of the firewall.<br />" +msgstr "" msgid "hidden" msgstr "Ñкрытый" @@ -385,6 +381,21 @@ msgstr "Ñкрытый" msgid "n/a" msgstr "нет данных" +#~ msgid "Add Interface" +#~ msgstr "Добавить интерфейÑ" + +#~ msgid "Create Uplink Interface" +#~ msgstr "Создать Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñети" + +#~ msgid "Uplink interface" +#~ msgstr "Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ¹ Ñети" + +#~ msgid "" +#~ "add it to the wan zone of the firewall. This step has only to be done " +#~ "once." +#~ msgstr "" +#~ "добавить в wan зону межÑетевого Ñкрана. Можно Ñделать только один раз." + #~ msgid "Enable 'automatic' mode" #~ msgstr "Включить режим 'автоматичеÑки'" diff --git a/applications/luci-app-travelmate/po/templates/travelmate.pot b/applications/luci-app-travelmate/po/templates/travelmate.pot index 8ba17668ec..f4f3418422 100644 --- a/applications/luci-app-travelmate/po/templates/travelmate.pot +++ b/applications/luci-app-travelmate/po/templates/travelmate.pot @@ -4,9 +4,6 @@ msgstr "Content-Type: text/plain; charset=UTF-8" msgid "Actions" msgstr "" -msgid "Add Interface" -msgstr "" - msgid "Add Uplink" msgstr "" @@ -56,7 +53,7 @@ msgstr "" msgid "Connection Limit" msgstr "" -msgid "Create Uplink Interface" +msgid "Create Uplink interface" msgstr "" msgid "" @@ -281,6 +278,9 @@ msgid "" "messages only." msgstr "" +msgid "This step has only to be done once." +msgstr "" + msgid "Travelmate" msgstr "" @@ -308,9 +308,6 @@ msgstr "" msgid "Uplink SSID" msgstr "" -msgid "Uplink interface" -msgstr "" - msgid "View AP QR-Codes" msgstr "" @@ -341,8 +338,7 @@ msgstr "" msgid "Wireless Stations" msgstr "" -msgid "" -"add it to the wan zone of the firewall. This step has only to be done once." +msgid "add it to the wan zone of the firewall.<br />" msgstr "" msgid "hidden" diff --git a/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua index bf2b65a0a1..256bbb8392 100644 --- a/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua +++ b/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua @@ -9,7 +9,7 @@ local rlh, rpv, vld, nvd, eds, prt, tlm local ctl, dlk, dom, dty, lfq, wfq, exa local dp6, d64, pfx, qry, qrs local pro, tgr, rsc, rsn, ag2, stt -local rpn, din, dfw +local rpn, din, dfw, ath local ucl = luci.model.uci.cursor() local valman = ucl:get_first("unbound", "unbound", "manual_conf") @@ -100,15 +100,6 @@ if valman ~= "1" then pfx.optional = true pfx:depends({ dns64 = true }) - qry = s1:taboption("basic", Flag, "query_minimize", translate("Query Minimize:"), - translate("Break down query components for limited added privacy")) - qry.rmempty = false - - qrs = s1:taboption("basic", Flag, "query_min_strict", translate("Strict Minimize:"), - translate("Strict version of 'query minimize' but it can break DNS")) - qrs.rmempty = false - qrs:depends({ query_minimize = true }) - prt = s1:taboption("basic", Value, "listen_port", translate("Listening Port:"), translate("Choose Unbounds listening port")) prt.datatype = "port" @@ -216,26 +207,43 @@ if valman ~= "1" then pro = s1:taboption("resource", ListValue, "protocol", translate("Recursion Protocol:"), translate("Chose the protocol recursion queries leave on")) - pro:value("mixed", translate("IP4 and IP6")) - pro:value("ip6_prefer", translate("IP6 Preferred")) + pro:value("default", translate("Default")) pro:value("ip4_only", translate("IP4 Only")) pro:value("ip6_only", translate("IP6 Only")) + pro:value("ip6_prefer", translate("IP6 Preferred")) + pro:value("mixed", translate("IP4 and IP6")) pro.rmempty = false + rsc = s1:taboption("resource", ListValue, "resource", translate("Memory Resource:"), + translate("Use menu System/Processes to observe any memory growth")) + rsc:value("default", translate("Default")) + rsc:value("tiny", translate("Tiny")) + rsc:value("small", translate("Small")) + rsc:value("medium", translate("Medium")) + rsc:value("large", translate("Large")) + rsc.rmempty = false + rsn = s1:taboption("resource", ListValue, "recursion", translate("Recursion Strength:"), translate("Recursion activity affects memory growth and CPU load")) - rsn:value("aggressive", translate("Aggressive")) rsn:value("default", translate("Default")) rsn:value("passive", translate("Passive")) + rsn:value("aggressive", translate("Aggressive")) rsn.rmempty = false - rsc = s1:taboption("resource", ListValue, "resource", translate("Memory Resource:"), - translate("Use menu System/Processes to observe any memory growth")) - rsc:value("large", translate("Large")) - rsc:value("medium", translate("Medium")) - rsc:value("small", translate("Small")) - rsc:value("tiny", translate("Tiny")) - rsc.rmempty = false + qry = s1:taboption("resource", Flag, "query_minimize", translate("Query Minimize:"), + translate("Break down query components for limited added privacy")) + qry.rmempty = false + qry:depends({ recursion = "passive" }) + qry:depends({ recursion = "aggressive" }) + + qrs = s1:taboption("resource", Flag, "query_min_strict", translate("Strict Minimize:"), + translate("Strict version of 'query minimize' but it can break DNS")) + qrs.rmempty = false + qrs:depends({ query_minimize = true }) + + ath = s1:taboption("resource", Flag, "prefetch_root", translate("Prefetch Root:"), + translate("Obtain complete root zone files and install in auth-zone: clause")) + ath.rmempty = false eds = s1:taboption("resource", Value, "edns_size", translate("EDNS Size:"), translate("Limit extended DNS packet size")) diff --git a/applications/luci-app-upnp/luasrc/view/upnp_status.htm b/applications/luci-app-upnp/luasrc/view/upnp_status.htm index 89fdb5e218..1e09225793 100644 --- a/applications/luci-app-upnp/luasrc/view/upnp_status.htm +++ b/applications/luci-app-upnp/luasrc/view/upnp_status.htm @@ -4,8 +4,8 @@ function(x) { var tb = document.getElementById('upnp_status_table'); - if (tb && (idx < tb.rows.length)) - tb.rows[0].parentNode.removeChild(tb.rows[idx]); + if (tb && (idx + 1 < tb.childNodes.length)) + tb.removeChild(tb.childNodes[idx + 1]); } ); } @@ -17,35 +17,21 @@ if (st && tb) { /* clear all rows */ - while( tb.rows.length > 1 ) - tb.deleteRow(1); + while (tb.firstElementChild !== tb.lastElementChild) + tb.removeChild(tb.lastElementChild); - for( var i = 0; i < st.length; i++ ) - { - var tr = tb.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1); + for (var i = 0; i < st.length; i++) + tb.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format((i % 2) + 1), [ + E('<div class="td">', st[i].proto), + E('<div class="td">', st[i].extport), + E('<div class="td">', st[i].intaddr), + E('<div class="td">', st[i].intport), + E('<div class="td">', st[i].descr), + E('<input class="cbi-button cbi-input-remove" type="button" value="<%:Delete%>" onclick="upnp_delete_fwd(%d)" />'.format(st[i].num)) + ])); - tr.insertCell(-1).innerHTML = st[i].proto; - tr.insertCell(-1).innerHTML = st[i].extport; - tr.insertCell(-1).innerHTML = st[i].intaddr; - tr.insertCell(-1).innerHTML = st[i].intport; - tr.insertCell(-1).innerHTML = st[i].descr; - - tr.insertCell(-1).innerHTML = String.format( - '<input class="cbi-button cbi-input-remove" type="button" value="<%:Delete%>" onclick="upnp_delete_fwd(%d)" />', - st[i].num - ); - } - - if( tb.rows.length == 1 ) - { - var tr = tb.insertRow(-1); - tr.className = 'cbi-section-table-row'; - - var td = tr.insertCell(-1); - td.colSpan = 5; - td.innerHTML = '<em><br /><%:There are no active redirects.%></em>'; - } + if (tb.firstElementChild === tb.lastElementChild) + tb.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:There are no active redirects.%></em></div></div>')); } } ); @@ -53,17 +39,17 @@ <fieldset class="cbi-section"> <legend><%:Active UPnP Redirects%></legend> - <table class="cbi-section-table" id="upnp_status_table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Protocol%></th> - <th class="cbi-section-table-cell"><%:External Port%></th> - <th class="cbi-section-table-cell"><%:Client Address%></th> - <th class="cbi-section-table-cell"><%:Client Port%></th> - <th class="cbi-section-table-cell"><%:Description%></th> - <th class="cbi-section-table-cell"> </th> - </tr> - <tr class="cbi-section-table-row"> - <td colspan="5"><em><br /><%:Collecting data...%></em></td> - </tr> - </table> + <div class="table cbi-section-table" id="upnp_status_table"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Protocol%></div> + <div class="th cbi-section-table-cell"><%:External Port%></div> + <div class="th cbi-section-table-cell"><%:Client Address%></div> + <div class="th cbi-section-table-cell"><%:Client Port%></div> + <div class="th cbi-section-table-cell"><%:Description%></div> + <div class="th cbi-section-table-cell"> </div> + </div> + <div class="tr cbi-section-table-row"> + <div class="td" colspan="5"><em><br /><%:Collecting data...%></em></div> + </div> + </div> </fieldset> diff --git a/applications/luci-app-wireguard/luasrc/view/wireguard.htm b/applications/luci-app-wireguard/luasrc/view/wireguard.htm index 5af6232ae6..64d9955296 100644 --- a/applications/luci-app-wireguard/luasrc/view/wireguard.htm +++ b/applications/luci-app-wireguard/luasrc/view/wireguard.htm @@ -164,43 +164,43 @@ for ikey, iface in pairs(data) do -%> <legend><%:Interface%> <%=ikey%></legend> - <table width="100%" cellspacing="10"> - <tr> - <td width="33%" style="vertical-align:top"><%:Configuration%></td> - <td> - <table> - <tr> - <td id="<%=ikey%>_icon" style="width:16px; text-align:center; padding:3px"> + <div class="table" width="100%" cellspacing="10"> + <div class="tr"> + <div class="td" width="33%" style="vertical-align:top"><%:Configuration%></div> + <div class="td"> + <div class="table"> + <div class="tr"> + <div class="td" id="<%=ikey%>_icon" style="width:16px; text-align:center; padding:3px"> - </td> - <td id="<%=ikey%>_info" style="vertical-align:middle; padding: 3px"> + </div> + <div class="td" id="<%=ikey%>_info" style="vertical-align:middle; padding: 3px"> <em><%:Collecting data...%></em> - </td> - </tr></table> - </td> - </tr> + </div> + </div></div> + </div> + </div> <%- for pkey, peer in pairs(iface.peers) do -%> - <tr> - <td width="33%" style="vertical-align:top"><%:Peer%></td> - <td> - <table> - <tr> - <td id="<%=ikey%>_<%=peer.public_key%>_icon" style="width:16px; text-align:center; padding:3px"> + <div class="tr"> + <div class="td" width="33%" style="vertical-align:top"><%:Peer%></div> + <div class="td"> + <div class="table"> + <div class="tr"> + <div class="td" id="<%=ikey%>_<%=peer.public_key%>_icon" style="width:16px; text-align:center; padding:3px"> <img src="<%=resource%>/icons/tunnel_disabled.png" /><br /> <small>?</small> - </td> - <td id="<%=ikey%>_<%=peer.public_key%>_info" style="vertical-align:middle; padding: 3px"> + </div> + <div class="td" id="<%=ikey%>_<%=peer.public_key%>_info" style="vertical-align:middle; padding: 3px"> <em><%:Collecting data...%></em> - </td> - </tr></table> - </td> - </tr> + </div> + </div></div> + </div> + </div> <%- end -%> - </table> + </div> <%- end -%> diff --git a/modules/luci-base/htdocs/luci-static/resources/cbi.js b/modules/luci-base/htdocs/luci-static/resources/cbi.js index 6c35372cdd..0a1961916c 100644 --- a/modules/luci-base/htdocs/luci-static/resources/cbi.js +++ b/modules/luci-base/htdocs/luci-static/resources/cbi.js @@ -1244,44 +1244,44 @@ function cbi_validate_field(cbid, optional, type) function cbi_row_swap(elem, up, store) { var tr = elem.parentNode; - while (tr && tr.nodeName.toLowerCase() != 'tr') + + while (tr && !tr.classList.contains('cbi-section-table-row')) tr = tr.parentNode; if (!tr) return false; - var table = tr.parentNode; - while (table && table.nodeName.toLowerCase() != 'table') - table = table.parentNode; - - if (!table) - return false; + if (up) { + var prev = tr.previousElementSibling; - var s = up ? 3 : 2; - var e = up ? table.rows.length : table.rows.length - 1; - - for (var idx = s; idx < e; idx++) - { - if (table.rows[idx] == tr) - { - if (up) - tr.parentNode.insertBefore(table.rows[idx], table.rows[idx-1]); - else - tr.parentNode.insertBefore(table.rows[idx+1], table.rows[idx]); + if (prev && prev.classList.contains('cbi-section-table-row')) + tr.parentNode.insertBefore(tr, prev); + else + return; + } + else { + var next = tr.nextElementSibling ? tr.nextElementSibling.nextElementSibling : null; - break; - } + if (next && next.classList.contains('cbi-section-table-row')) + tr.parentNode.insertBefore(tr, next); + else if (!next) + tr.parentNode.appendChild(tr); + else + return; } var ids = [ ]; - for (idx = 2; idx < table.rows.length; idx++) - { - table.rows[idx].className = table.rows[idx].className.replace( - /cbi-rowstyle-[12]/, 'cbi-rowstyle-' + (1 + (idx % 2)) - ); - if (table.rows[idx].id && table.rows[idx].id.match(/-([^\-]+)$/) ) - ids.push(RegExp.$1); + for (var i = 0, n = 0; i < tr.parentNode.childNodes.length; i++) { + var node = tr.parentNode.childNodes[i]; + if (node.classList && node.classList.contains('cbi-section-table-row')) { + node.classList.remove('cbi-rowstyle-1'); + node.classList.remove('cbi-rowstyle-2'); + node.classList.add((n++ % 2) ? 'cbi-rowstyle-2' : 'cbi-rowstyle-1'); + + if (/-([^\-]+)$/.test(node.id)) + ids.push(RegExp.$1); + } } var input = document.getElementById(store); @@ -1311,58 +1311,6 @@ function cbi_tag_last(container) } } -String.prototype.serialize = function() -{ - var o = this; - switch(typeof(o)) - { - case 'object': - // null - if( o == null ) - { - return 'null'; - } - - // array - else if( o.length ) - { - var i, s = ''; - - for( var i = 0; i < o.length; i++ ) - s += (s ? ', ' : '') + String.serialize(o[i]); - - return '[ ' + s + ' ]'; - } - - // object - else - { - var k, s = ''; - - for( k in o ) - s += (s ? ', ' : '') + k + ': ' + String.serialize(o[k]); - - return '{ ' + s + ' }'; - } - - break; - - case 'string': - // complex string - if( o.match(/[^a-zA-Z0-9_,.: -]/) ) - return 'decodeURIComponent("' + encodeURIComponent(o) + '")'; - - // simple string - else - return '"' + o + '"'; - - break; - - default: - return o.toString(); - } -} - String.prototype.format = function() { if (!RegExp) @@ -1473,10 +1421,6 @@ String.prototype.format = function() subst = esc(param, quot_esc); break; - case 'j': - subst = String.serialize(param); - break; - case 't': var td = 0; var th = 0; @@ -1543,14 +1487,6 @@ String.prototype.nobr = function() return this.replace(/[\s\n]+/g, ' '); } -String.serialize = function() -{ - var a = [ ]; - for (var i = 1; i < arguments.length; i++) - a.push(arguments[i]); - return ''.serialize.apply(arguments[0], a); -} - String.format = function() { var a = [ ]; @@ -1566,3 +1502,75 @@ String.nobr = function() a.push(arguments[i]); return ''.nobr.apply(arguments[0], a); } + + +var dummyElem, domParser; + +function isElem(e) +{ + return (typeof(e) === 'object' && e !== null && 'nodeType' in e); +} + +function toElem(s) +{ + var elem; + + try { + domParser = domParser || new DOMParser(); + elem = domParser.parseFromString(s, 'text/html').body.firstChild; + } + catch(e) {} + + if (!elem) { + try { + dummyElem = dummyElem || document.createElement('div'); + dummyElem.innerHTML = s; + elem = dummyElem.firstChild; + } + catch (e) {} + } + + return elem || null; +} + +function E() +{ + var html = arguments[0], + attr = (arguments[1] instanceof Object && !Array.isArray(arguments[1])) ? arguments[1] : null, + data = attr ? arguments[2] : arguments[1], + elem; + + if (isElem(html)) + elem = html; + else if (html.charCodeAt(0) === 60) + elem = toElem(html); + else + elem = document.createElement(html); + + if (!elem) + return null; + + if (attr) + for (var key in attr) + if (attr.hasOwnProperty(key)) + elem.setAttribute(key, attr[key]); + + if (typeof(data) === 'function') + data = data(elem); + + if (isElem(data)) { + elem.appendChild(data); + } + else if (Array.isArray(data)) { + for (var i = 0; i < data.length; i++) + if (isElem(data[i])) + elem.appendChild(data[i]); + else + elem.appendChild(document.createTextNode('' + data[i])); + } + else if (data !== null && data !== undefined) { + elem.innerHTML = '' + data; + } + + return elem; +} diff --git a/modules/luci-base/luasrc/cbi.lua b/modules/luci-base/luasrc/cbi.lua index 4728642118..4800d2aa72 100644 --- a/modules/luci-base/luasrc/cbi.lua +++ b/modules/luci-base/luasrc/cbi.lua @@ -1226,13 +1226,14 @@ function TypedSection.parse(self, novld) local stval = RESORT_PREFIX .. self.config .. "." .. self.sectiontype local order = self.map:formvalue(stval) if order and #order > 0 then - local sid - local num = 0 + local sids, sid = { }, nil for sid in util.imatch(order) do - self.map.uci:reorder(self.config, sid, num) - num = num + 1 + sids[#sids+1] = sid + end + if #sids > 0 then + self.map.uci:reorder(self.config, sids) + self.changed = true end - self.changed = (num > 0) end end diff --git a/modules/luci-base/luasrc/dispatcher.lua b/modules/luci-base/luasrc/dispatcher.lua index 45e1e308f8..6850d7e3a9 100644 --- a/modules/luci-base/luasrc/dispatcher.lua +++ b/modules/luci-base/luasrc/dispatcher.lua @@ -358,7 +358,7 @@ function dispatch(request) elseif key == "REQUEST_URI" then return build_url(unpack(ctx.requestpath)) elseif key == "FULL_REQUEST_URI" then - local url = { http.getenv("SCRIPT_NAME"), http.getenv("PATH_INFO") } + local url = { http.getenv("SCRIPT_NAME") or "", http.getenv("PATH_INFO") } local query = http.getenv("QUERY_STRING") if query and #query > 0 then url[#url+1] = "?" @@ -507,10 +507,11 @@ function dispatch(request) else ok, err = util.copcall(target, unpack(args)) end - assert(ok, - "Failed to execute " .. (type(c.target) == "function" and "function" or c.target.type or "unknown") .. - " dispatcher target for entry '/" .. table.concat(request, "/") .. "'.\n" .. - "The called action terminated with an exception:\n" .. tostring(err or "(unknown)")) + if not ok then + error500("Failed to execute " .. (type(c.target) == "function" and "function" or c.target.type or "unknown") .. + " dispatcher target for entry '/" .. table.concat(request, "/") .. "'.\n" .. + "The called action terminated with an exception:\n" .. tostring(err or "(unknown)")) + end else local root = node() if not root or not root.target then diff --git a/modules/luci-base/luasrc/util.lua b/modules/luci-base/luasrc/util.lua index ce42af2fb0..10428b0b35 100644 --- a/modules/luci-base/luasrc/util.lua +++ b/modules/luci-base/luasrc/util.lua @@ -100,6 +100,8 @@ end -- Scope manipulation routines -- +coxpt = setmetatable({}, { __mode = "kv" }) + local tl_meta = { __mode = "k", @@ -697,73 +699,69 @@ function checklib(fullpathexe, wantedlib) return false end +------------------------------------------------------------------------------- +-- Coroutine safe xpcall and pcall versions -- --- Coroutine safe xpcall and pcall versions modified for Luci --- original version: --- coxpcall 1.13 - Copyright 2005 - Kepler Project (www.keplerproject.org) +-- Encapsulates the protected calls with a coroutine based loop, so errors can +-- be dealed without the usual Lua 5.x pcall/xpcall issues with coroutines +-- yielding inside the call to pcall or xpcall. -- --- Copyright © 2005 Kepler Project. --- Permission is hereby granted, free of charge, to any person obtaining a --- copy of this software and associated documentation files (the "Software"), --- to deal in the Software without restriction, including without limitation --- the rights to use, copy, modify, merge, publish, distribute, sublicense, --- and/or sell copies of the Software, and to permit persons to whom the --- Software is furnished to do so, subject to the following conditions: +-- Authors: Roberto Ierusalimschy and Andre Carregal +-- Contributors: Thomas Harning Jr., Ignacio Burgueño, Fabio Mascarenhas -- --- The above copyright notice and this permission notice shall be --- included in all copies or substantial portions of the Software. +-- Copyright 2005 - Kepler Project -- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, --- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES --- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, --- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE --- OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -local performResume, handleReturnValue -local oldpcall, oldxpcall = pcall, xpcall -coxpt = {} -setmetatable(coxpt, {__mode = "kv"}) - --- Identity function for copcall -local function copcall_id(trace, ...) - return ... -end - --- values of either the function or the error handler -function coxpcall(f, err, ...) - local res, co = oldpcall(coroutine.create, f) - if not res then - local params = {...} - local newf = function() return f(unpack(params)) end - co = coroutine.create(newf) - end - local c = coroutine.running() - coxpt[co] = coxpt[c] or c or 0 +-- $Id: coxpcall.lua,v 1.13 2008/05/19 19:20:02 mascarenhas Exp $ +------------------------------------------------------------------------------- - return performResume(err, co, ...) -end - --- values of the function or the error object -function copcall(f, ...) - return coxpcall(f, copcall_id, ...) -end +------------------------------------------------------------------------------- +-- Implements xpcall with coroutines +------------------------------------------------------------------------------- +local coromap = setmetatable({}, { __mode = "k" }) --- Handle return value of protected call -function handleReturnValue(err, co, status, ...) +local function handleReturnValue(err, co, status, ...) if not status then return false, err(debug.traceback(co, (...)), ...) end - - if coroutine.status(co) ~= 'suspended' then + if coroutine.status(co) == 'suspended' then + return performResume(err, co, coroutine.yield(...)) + else return true, ... end - - return performResume(err, co, coroutine.yield(...)) end --- Resume execution of protected function call function performResume(err, co, ...) return handleReturnValue(err, co, coroutine.resume(co, ...)) end + +local function id(trace, ...) + return trace +end + +function coxpcall(f, err, ...) + local current = coroutine.running() + if not current then + if err == id then + return pcall(f, ...) + else + if select("#", ...) > 0 then + local oldf, params = f, { ... } + f = function() return oldf(unpack(params)) end + end + return xpcall(f, err) + end + else + local res, co = pcall(coroutine.create, f) + if not res then + local newf = function(...) return f(...) end + co = coroutine.create(newf) + end + coromap[co] = current + coxpt[co] = coxpt[current] or current or 0 + return performResume(err, co, ...) + end +end + +function copcall(f, ...) + return coxpcall(f, id, ...) +end diff --git a/modules/luci-base/luasrc/view/cbi/apply_widget.htm b/modules/luci-base/luasrc/view/cbi/apply_widget.htm index 543ef0b80b..702512f495 100644 --- a/modules/luci-base/luasrc/view/cbi/apply_widget.htm +++ b/modules/luci-base/luasrc/view/cbi/apply_widget.htm @@ -1,59 +1,98 @@ <% export("cbi_apply_widget", function(redirect_ok) -%> <style type="text/css"> - #cbi_apply_status { + .alert-message.notice { + background: linear-gradient(#fff 0%, #eee 100%); + } + + #cbi_apply_overlay { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: rgba(0, 0, 0, 0.7); + display: none; + z-index: 20000; + } + + #cbi_apply_overlay .alert-message { + position: relative; + top: 10%; + width: 60%; + margin: auto; display: flex; flex-wrap: wrap; min-height: 32px; align-items: center; - margin: 1.5em 0 1.5em 0; } - #cbi_apply_status > h4, - #cbi_apply_status > p, - #cbi_apply_status > div { + #cbi_apply_overlay .alert-message > h4, + #cbi_apply_overlay .alert-message > p, + #cbi_apply_overlay .alert-message > div { flex-basis: 100%; } - #cbi_apply_status > img { + #cbi_apply_overlay .alert-message > img { margin-right: 1em; flex-basis: 32px; } - #cbi_apply_status + script + .cbi-section { - margin-top: -1em; + body.apply-overlay-active { + overflow: hidden; + height: 100vh; } - .alert-message.notice { - background: linear-gradient(#fff 0%, #eee 100%); + body.apply-overlay-active #cbi_apply_overlay { + display: block; } </style> -<script type="text/javascript" src="<%=resource%>/cbi.js"></script> +<script type="text/javascript" src="<%=resource%>/cbi.js?v=git-18.138.59467-72fe5dd"></script> <script type="text/javascript">//<![CDATA[ var xhr = new XHR(), - stat, indicator, uci_apply_auth = { sid: '<%=luci.dispatcher.context.authsession%>', token: '<%=token%>' }, uci_apply_rollback = <%=math.max(luci.config and luci.config.apply and luci.config.apply.rollback or 30, 30)%>, uci_apply_holdoff = <%=math.max(luci.config and luci.config.apply and luci.config.apply.holdoff or 4, 1)%>, uci_apply_timeout = <%=math.max(luci.config and luci.config.apply and luci.config.apply.timeout or 5, 1)%>, uci_apply_display = <%=math.max(luci.config and luci.config.apply and luci.config.apply.display or 1.5, 1)%>; + function uci_status_message(type, content) { + var overlay = document.getElementById('cbi_apply_overlay') || document.body.appendChild(E('<div id="cbi_apply_overlay"><div class="alert-message"></div></div>')), + message = overlay.querySelector('.alert-message'); + + if (message && type) { + if (!message.classList.contains(type)) { + message.classList.remove('notice'); + message.classList.remove('warning'); + message.classList.add(type); + } + + if (content) + message.innerHTML = content; + + document.body.classList.add('apply-overlay-active'); + } + else { + document.body.classList.remove('apply-overlay-active'); + } + } + function uci_rollback(checked) { if (checked) { - stat.classList.remove('notice'); - stat.classList.add('warning'); - stat.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' + - '<%:Failed to confirm apply within %ds, waiting for rollback…%>'.format(uci_apply_rollback); + uci_status_message('warning', + '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' + + '<%:Failed to confirm apply within %ds, waiting for rollback…%>'.format(uci_apply_rollback)); var call = function(r) { if (r.status === 204) { - stat.innerHTML = '<h4><%:Configuration has been rolled back!%></h4>' + + uci_status_message('warning', + '<h4><%:Configuration has been rolled back!%></h4>' + '<p><%:The device could not be reached within %d seconds after applying the pending changes, which caused the configuration to be rolled back for safety reasons. If you believe that the configuration changes are correct nonetheless, perform an unchecked configuration apply. Alternatively, you can dismiss this warning and edit changes before attempting to apply again, or revert all pending changes to keep the currently working configuration state.%></p>'.format(uci_apply_rollback) + '<div class="right">' + - '<input type="button" class="btn" onclick="this.parentNode.parentNode.style.display=\'none\'" value="<%:Dismiss%>" /> ' + + '<input type="button" class="btn" onclick="uci_status_message(false)" value="<%:Dismiss%>" /> ' + '<input type="button" class="btn" onclick="uci_revert()" value="<%:Revert changes%>" /> ' + '<input type="button" class="btn danger" onclick="uci_apply(false)" value="<%:Apply unchecked%>" />' + - '</div>'; + '</div>'); return; } @@ -64,10 +103,9 @@ call({ status: 0 }); } else { - stat.classList.remove('notice'); - stat.classList.add('warning'); - stat.innerHTML = '<h4><%:Device unreachable!%></h4>' + - '<p><%:Could not regain access to the device after applying the configuration changes. You might need to reconnect if you modified network related settings such as the IP address or wireless security credentials.%></p>'; + uci_status_message('warning', + '<h4><%:Device unreachable!%></h4>' + + '<p><%:Could not regain access to the device after applying the configuration changes. You might need to reconnect if you modified network related settings such as the IP address or wireless security credentials.%></p>'); } } @@ -75,12 +113,7 @@ var tt; var ts = Date.now(); - stat = document.getElementById('cbi_apply_status'); - stat.style.display = ''; - stat.classList.remove('warning'); - stat.classList.add('notice'); - - indicator = document.querySelector('.uci_change_indicator'); + uci_status_message('notice'); var call = function(r) { if (Date.now() >= deadline) { @@ -88,15 +121,18 @@ return; } else if (r && (r.status === 200 || r.status === 204)) { - if (indicator) - indicator.style.display = 'none'; + var indicator = document.querySelector('.uci_change_indicator'); + if (indicator) indicator.style.display = 'none'; - stat.innerHTML = '<%:Configuration has been applied.%>'; + uci_status_message('notice', '<%:Configuration has been applied.%>'); window.clearTimeout(tt); window.setTimeout(function() { - stat.style.display = 'none'; - <% if redirect_ok then %>location.href = decodeURIComponent('<%=luci.util.urlencode(redirect_ok)%>');<% end %> + <% if redirect_ok then -%> + location.href = decodeURIComponent('<%=luci.util.urlencode(redirect_ok)%>'); + <%- else -%> + window.location = window.location.href.split('#')[0]; + <% end %> }, uci_apply_display * 1000); return; @@ -108,8 +144,9 @@ var tick = function() { var now = Date.now(); - stat.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' + - '<%:Waiting for configuration to get applied… %ds%>'.format(Math.max(Math.floor((deadline - Date.now()) / 1000), 0)); + uci_status_message('notice', + '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' + + '<%:Waiting for configuration to get applied… %ds%>'.format(Math.max(Math.floor((deadline - Date.now()) / 1000), 0))); if (now >= deadline) return; @@ -125,43 +162,39 @@ } function uci_apply(checked) { - stat = document.getElementById('cbi_apply_status'); - stat.style.display = ''; - stat.classList.remove('warning'); - stat.classList.add('notice'); - stat.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' + - '<%:Starting configuration apply…%>'; + uci_status_message('notice', + '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' + + '<%:Starting configuration apply…%>'); xhr.post('<%=url("admin/uci")%>/' + (checked ? 'apply_rollback' : 'apply_unchecked'), uci_apply_auth, function(r) { if (r.status === (checked ? 200 : 204)) { uci_confirm(checked, Date.now() + uci_apply_rollback * 1000); } else if (checked && r.status === 204) { - stat.innerHTML = '<%:There are no changes to apply.%>'; + uci_status_message('notice', '<%:There are no changes to apply.%>'); window.setTimeout(function() { - stat.style.display = 'none'; - <% if redirect_ok then %>location.href = decodeURIComponent('<%=luci.util.urlencode(redirect_ok)%>');<% end %> + <% if redirect_ok then -%> + location.href = decodeURIComponent('<%=luci.util.urlencode(redirect_ok)%>'); + <%- else -%> + uci_status_message(false); + <%- end %> }, uci_apply_display * 1000); } else { - stat.classList.add('warning'); - stat.classList.remove('notice'); - stat.innerHTML = '<%_Apply request failed with status <code>%h</code>%>'.format(r.responseText || r.statusText || r.status); + uci_status_message('warning', '<%_Apply request failed with status <code>%h</code>%>'.format(r.responseText || r.statusText || r.status)); + window.setTimeout(function() { uci_status_message(false); }, uci_apply_display * 1000); } }); } function uci_revert() { - stat = document.getElementById('cbi_apply_status'); - stat.style.display = ''; - stat.classList.remove('warning'); - stat.classList.add('notice'); - stat.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' + - '<%:Reverting configuration…%>'; + uci_status_message('notice', + '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' + + '<%:Reverting configuration…%>'); xhr.post('<%=url("admin/uci/revert")%>', uci_apply_auth, function(r) { if (r.status === 200) { - stat.innerHTML = '<%:Changes have been reverted.%>'; + uci_status_message('notice', '<%:Changes have been reverted.%>'); window.setTimeout(function() { <% if redirect_ok then -%> location.href = decodeURIComponent('<%=luci.util.urlencode(redirect_ok)%>'); @@ -171,9 +204,8 @@ }, uci_apply_display * 1000); } else { - stat.classList.add('warning'); - stat.classList.remove('notice'); - stat.innerHTML = '<%_Revert request failed with status <code>%h</code>%>'.format(r.statusText || r.status); + uci_status_message('warning', '<%_Revert request failed with status <code>%h</code>%>'.format(r.statusText || r.status)); + window.setTimeout(function() { uci_status_message(false); }, uci_apply_display * 1000); } }); } diff --git a/modules/luci-base/luasrc/view/cbi/cell_valuefooter.htm b/modules/luci-base/luasrc/view/cbi/cell_valuefooter.htm index 786ee43d10..bdd6bc9687 100644 --- a/modules/luci-base/luasrc/view/cbi/cell_valuefooter.htm +++ b/modules/luci-base/luasrc/view/cbi/cell_valuefooter.htm @@ -1,2 +1,2 @@ </div> -</td> +</div> diff --git a/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm b/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm index 9c9c21814b..a4b68cda72 100644 --- a/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm +++ b/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm @@ -1,2 +1,2 @@ -<td class="cbi-value-field<% if self.error and self.error[section] then %> cbi-value-error<% end %>"> +<div class="td cbi-value-field<% if self.error and self.error[section] then %> cbi-value-error<% end %>"> <div id="cbi-<%=self.config.."-"..section.."-"..self.option%>" data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>"> diff --git a/modules/luci-base/luasrc/view/cbi/map.htm b/modules/luci-base/luasrc/view/cbi/map.htm index 69ef3615a2..02b47f5455 100644 --- a/modules/luci-base/luasrc/view/cbi/map.htm +++ b/modules/luci-base/luasrc/view/cbi/map.htm @@ -1,5 +1,5 @@ <%- if firstmap and messages then local msg; for _, msg in ipairs(messages) do -%> - <div class="errorbox"><%=pcdata(msg)%></div> + <div class="alert-message warning"><%=pcdata(msg)%></div> <%- end end -%> <div class="cbi-map" id="cbi-<%=self.config%>"> diff --git a/modules/luci-base/luasrc/view/cbi/tblsection.htm b/modules/luci-base/luasrc/view/cbi/tblsection.htm index 3cb87563f1..bb11cf1c06 100644 --- a/modules/luci-base/luasrc/view/cbi/tblsection.htm +++ b/modules/luci-base/luasrc/view/cbi/tblsection.htm @@ -27,52 +27,52 @@ end <div class="cbi-section-descr"><%=self.description%></div> <div class="cbi-section-node"> <%- local count = 0 -%> - <table class="cbi-section-table"> - <tr class="cbi-section-table-titles"> + <div class="table cbi-section-table"> + <div class="tr cbi-section-table-titles"> <%- if not self.anonymous then -%> <%- if self.sectionhead then -%> - <th class="cbi-section-table-cell"><%=self.sectionhead%></th> + <div class="th cbi-section-table-cell"><%=self.sectionhead%></div> <%- else -%> - <th> </th> + <div class="th"> </div> <%- end -%> <%- count = count +1; end -%> <%- for i, k in pairs(self.children) do if not k.optional then -%> - <th class="cbi-section-table-cell"<%=width(k)%>> + <div class="th cbi-section-table-cell"<%=width(k)%>> <%- if k.titleref then -%><a title="<%=self.titledesc or translate('Go to relevant configuration page')%>" class="cbi-title-ref" href="<%=k.titleref%>"><%- end -%> <%-=k.title-%> <%- if k.titleref then -%></a><%- end -%> - </th> + </div> <%- count = count + 1; end; end; if self.sortable then -%> - <th class="cbi-section-table-cell"><%:Sort%></th> + <div class="th cbi-section-table-cell"><%:Sort%></div> <%- count = count + 1; end; if self.extedit or self.addremove then -%> - <th class="cbi-section-table-cell"> </th> + <div class="th cbi-section-table-cell"> </div> <%- count = count + 1; end -%> - </tr> - <tr class="cbi-section-table-descr"> + </div> + <div class="tr cbi-section-table-descr"> <%- if not self.anonymous then -%> <%- if self.sectiondesc then -%> - <th class="cbi-section-table-cell"><%=self.sectiondesc%></th> + <div class="th cbi-section-table-cell"><%=self.sectiondesc%></div> <%- else -%> - <th></th> + <div class="th"></div> <%- end -%> <%- end -%> <%- for i, k in pairs(self.children) do if not k.optional then -%> - <th class="cbi-section-table-cell"<%=width(k)%>><%=k.description%></th> + <div class="th cbi-section-table-cell"<%=width(k)%>><%=k.description%></div> <%- end; end; if self.sortable then -%> - <th class="cbi-section-table-cell"></th> + <div class="th cbi-section-table-cell"></div> <%- end; if self.extedit or self.addremove then -%> - <th class="cbi-section-table-cell"></th> + <div class="th cbi-section-table-cell"></div> <%- end -%> - </tr> + </div> <%- local isempty = true for i, k in ipairs(self:cfgsections()) do section = k isempty = false scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" } -%> - <tr class="cbi-section-table-row<% if self.extedit or self.rowcolors then %> cbi-rowstyle-<%=rowstyle()%><% end %>" id="cbi-<%=self.config%>-<%=section%>"> + <div class="tr cbi-section-table-row<% if self.extedit or self.rowcolors then %> cbi-rowstyle-<%=rowstyle()%><% end %>" id="cbi-<%=self.config%>-<%=section%>"> <% if not self.anonymous then -%> - <th><h3><%=(type(self.sectiontitle) == "function") and self:sectiontitle(section) or k%></h3></th> + <div class="th"><h3><%=(type(self.sectiontitle) == "function") and self:sectiontitle(section) or k%></h3></div> <%- end %> @@ -85,14 +85,14 @@ end -%> <%- if self.sortable then -%> - <td class="cbi-section-table-cell"> + <div class="td cbi-section-table-cell"> <input class="cbi-button cbi-button-up" type="button" value="" onclick="return cbi_row_swap(this, true, 'cbi.sts.<%=self.config%>.<%=self.sectiontype%>')" alt="<%:Move up%>" title="<%:Move up%>" /> <input class="cbi-button cbi-button-down" type="button" value="" onclick="return cbi_row_swap(this, false, 'cbi.sts.<%=self.config%>.<%=self.sectiontype%>')" alt="<%:Move down%>" title="<%:Move down%>" /> - </td> + </div> <%- end -%> <%- if self.extedit or self.addremove then -%> - <td class="cbi-section-table-cell"> + <div class="td cbi-section-table-cell"> <%- if self.extedit then -%> <input class="cbi-button cbi-button-edit" type="button" value="<%:Edit%>" <%- if type(self.extedit) == "string" then @@ -104,17 +104,17 @@ end <%- end; if self.addremove then %> <input class="cbi-button cbi-button-remove" type="submit" value="<%:Delete%>" onclick="this.form.cbi_state='del-section'; return true" name="cbi.rts.<%=self.config%>.<%=k%>" alt="<%:Delete%>" title="<%:Delete%>" /> <%- end -%> - </td> + </div> <%- end -%> - </tr> + </div> <%- end -%> <%- if isempty then -%> - <tr class="cbi-section-table-row"> - <td colspan="<%=count%>"><em><br /><%:This section contains no values yet%></em></td> - </tr> + <div class="tr cbi-section-table-row"> + <div class="td" colspan="<%=count%>"><em><br /><%:This section contains no values yet%></em></div> + </div> <%- end -%> - </table> + </div> <% if self.error then %> <div class="cbi-section-error"> diff --git a/modules/luci-base/luasrc/view/sysauth.htm b/modules/luci-base/luasrc/view/sysauth.htm index b3ec9b7617..e7a741aaab 100644 --- a/modules/luci-base/luasrc/view/sysauth.htm +++ b/modules/luci-base/luasrc/view/sysauth.htm @@ -8,7 +8,9 @@ <form method="post" action="<%=pcdata(FULL_REQUEST_URI)%>"> <%- if fuser then %> - <div class="errorbox"><%:Invalid username and/or password! Please try again.%></div> + <div class="alert-message warning"> + <p><%:Invalid username and/or password! Please try again.%></p> + </div> <% end -%> <div class="cbi-map"> diff --git a/modules/luci-base/po/ca/base.po b/modules/luci-base/po/ca/base.po index b08344b404..740795ec92 100644 --- a/modules/luci-base/po/ca/base.po +++ b/modules/luci-base/po/ca/base.po @@ -174,9 +174,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -213,9 +210,6 @@ msgstr "Número de dispositiu ATM" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "Concentrador d'accés" @@ -323,11 +317,6 @@ msgstr "Permet respostes del rang 127.0.0.0/8, p.e. per serveis RBL" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -406,11 +395,14 @@ msgstr "Configuració d'antena" msgid "Any zone" msgstr "Qualsevol zona" -msgid "Apply" -msgstr "Aplica" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Aplicant els canvis" +msgid "Apply unchecked" +msgstr "" + +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -426,6 +418,9 @@ msgstr "" msgid "Associated Stations" msgstr "Estacions associades" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -517,9 +512,6 @@ msgstr "Adreça mal especificada!" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -593,12 +585,20 @@ msgstr "Canvis" msgid "Changes applied." msgstr "Canvis aplicats." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Canvia la paraula clau de l'administrador per accedir al dispositiu" msgid "Channel" msgstr "Canal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Comprovació" @@ -678,12 +678,15 @@ msgstr "" msgid "Configuration" msgstr "Configuració" -msgid "Configuration applied." -msgstr "S'ha aplicat la configuració." - msgid "Configuration files will be kept." msgstr "Es mantindran els fitxers de configuració." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Confirmació" @@ -696,12 +699,15 @@ msgstr "Connectat" msgid "Connection Limit" msgstr "LÃmit de connexió" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "Connexions" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "PaÃs" @@ -830,9 +836,6 @@ msgstr "Passarel·la per defecte" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "Estat per defecte" @@ -872,6 +875,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnòstics" @@ -906,6 +912,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "Descarta les respostes RFC1918 des de dalt" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Mostrant només els paquets que contenen" @@ -1160,6 +1169,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Fitxer" @@ -1355,9 +1367,6 @@ msgstr "Penja" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1418,8 +1427,8 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "Tallafocs IPv4" -msgid "IPv4 WAN Status" -msgstr "Estat WAN IPv4" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "Adreça IPv4" @@ -1469,15 +1478,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" -msgstr "Estat WAN IPv6" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "Adreça IPv6" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2056,9 +2062,6 @@ msgstr "" msgid "NTP server candidates" msgstr "Candidats de servidor NTP" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "Nom" @@ -2182,6 +2185,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2233,12 +2239,6 @@ msgstr "Opció treta" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2699,9 +2699,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2760,6 +2757,15 @@ msgstr "Mostra/amaga la contrasenya" msgid "Revert" msgstr "Reverteix" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Arrel" @@ -2775,9 +2781,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2803,14 +2806,6 @@ msgstr "" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2838,9 +2833,6 @@ msgstr "Desa" msgid "Save & Apply" msgstr "Desa i aplica" -msgid "Save & Apply" -msgstr "Desa i aplica" - msgid "Scan" msgstr "Escaneja" @@ -2867,17 +2859,6 @@ msgstr "Clients separats" msgid "Server Settings" msgstr "Ajusts de servidor" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "Nom de servei" @@ -2971,9 +2952,6 @@ msgstr "Ordena" msgid "Source" msgstr "Origen" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "Especifica el directori a que el dispositiu està adjuntat" @@ -3012,6 +2990,9 @@ msgstr "Inici" msgid "Start priority" msgstr "Prioritat d'inici" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Arrencada" @@ -3166,6 +3147,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3191,9 +3182,6 @@ msgstr "" "<br />Fes clic a \"Procedeix\" a continuació per començar el procés " "d'escriptura a la memòria flaix." -msgid "The following changes have been committed" -msgstr "S'han comès els següents canvis" - msgid "The following changes have been reverted" msgstr "S'han desfet els següents canvis" @@ -3259,11 +3247,6 @@ msgstr "" "tinguis." msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3273,8 +3256,8 @@ msgstr "" msgid "There are no active leases." msgstr "No hi ha arrendaments actius." -msgid "There are no pending changes to apply!" -msgstr "No hi ha canvis pendents per aplicar!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "No hi ha canvis pendents per revertir!" @@ -3423,15 +3406,6 @@ msgstr "InterfÃcie del túnel" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "Potència Tx" @@ -3607,12 +3581,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "Classe de venidor per enviar al sol·licitar DHCP" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "Verifica" @@ -3644,16 +3612,15 @@ msgstr "" "La xifratge WPA requereix que sigui instal·lat el wpa_supplicant (pel mode " "client) o el hostapd (pels modes AP i ad hoc)." -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "Esperant que s'apliquin els canvis..." msgid "Waiting for command to complete..." msgstr "Esperant que s'acabi l'ordre..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "Esperant el dispositiu..." @@ -3668,12 +3635,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3817,9 +3778,6 @@ msgstr "kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "fitxer <abbr title=\"Domain Name System\">DNS</abbr> local" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3895,6 +3853,30 @@ msgstr "sÃ" msgid "« Back" msgstr "« Enrere" +#~ msgid "IPv4 WAN Status" +#~ msgstr "Estat WAN IPv4" + +#~ msgid "IPv6 WAN Status" +#~ msgstr "Estat WAN IPv6" + +#~ msgid "Apply" +#~ msgstr "Aplica" + +#~ msgid "Applying changes" +#~ msgstr "Aplicant els canvis" + +#~ msgid "Configuration applied." +#~ msgstr "S'ha aplicat la configuració." + +#~ msgid "Save & Apply" +#~ msgstr "Desa i aplica" + +#~ msgid "The following changes have been committed" +#~ msgstr "S'han comès els següents canvis" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "No hi ha canvis pendents per aplicar!" + #~ msgid "Action" #~ msgstr "Acció" diff --git a/modules/luci-base/po/cs/base.po b/modules/luci-base/po/cs/base.po index aa4144758b..b9523193ef 100644 --- a/modules/luci-base/po/cs/base.po +++ b/modules/luci-base/po/cs/base.po @@ -169,9 +169,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -208,9 +205,6 @@ msgstr "ÄÃslo ATM zaÅ™ÃzenÃ" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "PÅ™Ãstupový koncentrátor" @@ -319,11 +313,6 @@ msgstr "Povolit upstream odpovÄ›di na 127.0.0.0/8 rozsah, napÅ™. pro RBL služby msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -402,11 +391,14 @@ msgstr "Konfigurace antén" msgid "Any zone" msgstr "Libovolná zóna" -msgid "Apply" -msgstr "PoužÃt" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "ProbÃhá uplatňovánà nastavenÃ" +msgid "Apply unchecked" +msgstr "" + +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -422,6 +414,9 @@ msgstr "" msgid "Associated Stations" msgstr "PÅ™ipojenà klienti" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -512,9 +507,6 @@ msgstr "Zadána neplatná adresa!" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -586,12 +578,20 @@ msgstr "ZmÄ›ny" msgid "Changes applied." msgstr "ZmÄ›ny aplikovány." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "ZmÄ›nà administrátorské heslo pro pÅ™Ãstup k zaÅ™ÃzenÃ" msgid "Channel" msgstr "Kanál" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Kontrola" @@ -672,12 +672,15 @@ msgstr "" msgid "Configuration" msgstr "NastavenÃ" -msgid "Configuration applied." -msgstr "Nastavenà uplatnÄ›no." - msgid "Configuration files will be kept." msgstr "KonfiguraÄnà soubory budou zachovány." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "OvěřenÃ" @@ -690,12 +693,15 @@ msgstr "PÅ™ipojeno" msgid "Connection Limit" msgstr "Omezenà poÄtu pÅ™ipojenÃ" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "PÅ™ipojenÃ" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "ZemÄ›" @@ -824,9 +830,6 @@ msgstr "Výchozà brána" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "Výchozà stav" @@ -868,6 +871,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnostika" @@ -902,6 +908,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "VyÅ™adit upstream RFC1918 odpovÄ›di" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Zobrazeny pouze balÃÄky obsahujÃcÃ" @@ -1162,6 +1171,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Soubor" @@ -1355,9 +1367,6 @@ msgstr "ZavÄ›sit" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1417,8 +1426,8 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "IPv4 firewall" -msgid "IPv4 WAN Status" -msgstr "Stav IPv4 WAN" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "IPv4 adresa" @@ -1468,15 +1477,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" -msgstr "Stav IPv6 WAN" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "IPv6 adresa" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2064,9 +2070,6 @@ msgstr "" msgid "NTP server candidates" msgstr "Kandidáti NTP serveru" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "Název" @@ -2190,6 +2193,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Vypnutà prodlevy" @@ -2240,12 +2246,6 @@ msgstr "Volba odstranÄ›na" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2723,9 +2723,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2785,6 +2782,15 @@ msgstr "Odhalit/skrýt heslo" msgid "Revert" msgstr "Vrátit zpÄ›t" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Root" @@ -2800,9 +2806,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2827,14 +2830,6 @@ msgstr "Spustit kontrolu souborového systému" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2862,9 +2857,6 @@ msgstr "Uložit" msgid "Save & Apply" msgstr "Uložit & použÃt" -msgid "Save & Apply" -msgstr "Uložit & použÃt" - msgid "Scan" msgstr "Skenovat" @@ -2893,17 +2885,6 @@ msgstr "OddÄ›lovat klienty" msgid "Server Settings" msgstr "Nastavenà serveru" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "Název služby" @@ -3000,9 +2981,6 @@ msgstr "SeÅ™adit" msgid "Source" msgstr "Zdroj" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -3043,6 +3021,9 @@ msgstr "Start" msgid "Start priority" msgstr "Priorita spouÅ¡tÄ›nÃ" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Po spuÅ¡tÄ›nÃ" @@ -3206,6 +3187,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3230,9 +3221,6 @@ msgstr "" "souboru s originálnÃm souborem pro zajiÅ¡tÄ›nà integrity dat.<br /> KliknutÃm " "na \"PokraÄovat\" spustÃte proceduru flashovánÃ." -msgid "The following changes have been committed" -msgstr "NásledujÃcà zmÄ›ny byly provedeny" - msgid "The following changes have been reverted" msgstr "NásledujÃcà zmÄ›ny byly vráceny" @@ -3302,11 +3290,6 @@ msgstr "" "mohli znovu pÅ™ipojit." msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3314,8 +3297,8 @@ msgstr "" msgid "There are no active leases." msgstr "Nejsou žádné aktivnà zápůjÄky." -msgid "There are no pending changes to apply!" -msgstr "Nejsou zde žádné nevyÅ™Ãzené zmÄ›ny k aplikaci!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Nejsou zde žádné nevyÅ™Ãzené zmÄ›ny k navrácenÃ!" @@ -3463,15 +3446,6 @@ msgstr "Rozhranà tunelu" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "Tx-Power" @@ -3650,12 +3624,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "Ověřit" @@ -3687,16 +3655,15 @@ msgstr "" "Å ifrovánà WPA vyžaduje nainstalovaný wpa_supplicant (pro klientský režim) " "nebo hostapd (pro AP a ad-hoc režim)." -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "ÄŒekánà na realizaci zmÄ›n..." msgid "Waiting for command to complete..." msgstr "ÄŒekánà na dokonÄenà pÅ™Ãkazu..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3711,12 +3678,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3858,9 +3819,6 @@ msgstr "kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "mÃstnà <abbr title=\"Domain Name System\">DNS</abbr> soubor" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3936,6 +3894,30 @@ msgstr "ano" msgid "« Back" msgstr "« ZpÄ›t" +#~ msgid "IPv4 WAN Status" +#~ msgstr "Stav IPv4 WAN" + +#~ msgid "IPv6 WAN Status" +#~ msgstr "Stav IPv6 WAN" + +#~ msgid "Apply" +#~ msgstr "PoužÃt" + +#~ msgid "Applying changes" +#~ msgstr "ProbÃhá uplatňovánà nastavenÃ" + +#~ msgid "Configuration applied." +#~ msgstr "Nastavenà uplatnÄ›no." + +#~ msgid "Save & Apply" +#~ msgstr "Uložit & použÃt" + +#~ msgid "The following changes have been committed" +#~ msgstr "NásledujÃcà zmÄ›ny byly provedeny" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Nejsou zde žádné nevyÅ™Ãzené zmÄ›ny k aplikaci!" + #~ msgid "Action" #~ msgstr "Akce" diff --git a/modules/luci-base/po/de/base.po b/modules/luci-base/po/de/base.po index 574ddf184a..63cfaeaffd 100644 --- a/modules/luci-base/po/de/base.po +++ b/modules/luci-base/po/de/base.po @@ -172,9 +172,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -211,9 +208,6 @@ msgstr "ATM Geräteindex" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "Access Concentrator" @@ -322,13 +316,6 @@ msgstr "" msgid "Allowed IPs" msgstr "Erlaubte IP-Adressen" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" -"Siehe auch <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> bei SIXXS." - msgid "Always announce default router" msgstr "Immer Defaultrouter ankündigen" @@ -409,11 +396,14 @@ msgstr "Antennenkonfiguration" msgid "Any zone" msgstr "Beliebige Zone" -msgid "Apply" -msgstr "Anwenden" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" + +msgid "Apply unchecked" +msgstr "" -msgid "Applying changes" -msgstr "Änderungen werden angewandt" +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -433,6 +423,9 @@ msgstr "" msgid "Associated Stations" msgstr "Assoziierte Clients" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "Berechtigungsgruppe" @@ -523,9 +516,6 @@ msgstr "Ungültige Adresse angegeben!" msgid "Band" msgstr "Frequenztyp" -msgid "Behind NAT" -msgstr "NAT" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -604,12 +594,20 @@ msgstr "Änderungen" msgid "Changes applied." msgstr "Änderungen angewendet." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Ändert das Administratorpasswort für den Zugriff auf dieses Gerät" msgid "Channel" msgstr "Kanal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Prüfen" @@ -696,12 +694,15 @@ msgstr "" msgid "Configuration" msgstr "Konfiguration" -msgid "Configuration applied." -msgstr "Konfiguration angewendet." - msgid "Configuration files will be kept." msgstr "Konfigurationsdateien sichern" +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Bestätigung" @@ -714,12 +715,15 @@ msgstr "Verbunden" msgid "Connection Limit" msgstr "Verbindungslimit" -msgid "Connection to server fails when TLS cannot be used" -msgstr "TLS zwingend vorraussetzen und abbrechen wenn TLS fehlschlägt." - msgid "Connections" msgstr "Verbindungen" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Land" @@ -848,9 +852,6 @@ msgstr "Default Gateway" msgid "Default is stateless + stateful" msgstr "Der Standardwert ist zustandslos und zustandsorientiert" -msgid "Default route" -msgstr "Default Route" - msgid "Default state" msgstr "Ausgangszustand" @@ -892,6 +893,9 @@ msgstr "Das Gerät startet neu..." msgid "Device unreachable" msgstr "Das Gerät ist nicht erreichbar" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnosen" @@ -926,6 +930,9 @@ msgstr "Deaktiviert (Standard)" msgid "Discard upstream RFC1918 responses" msgstr "Eingehende RFC1918-Antworten verwerfen" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Nur Pakete mit folgendem Inhalt anzeigen" @@ -1192,6 +1199,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Datei" @@ -1394,9 +1404,6 @@ msgstr "Auflegen" msgid "Header Error Code Errors (HEC)" msgstr "Anzahl Header-Error-Code-Fehler (HEC)" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1455,8 +1462,8 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "IPv4 Firewall" -msgid "IPv4 WAN Status" -msgstr "IPv4 WAN Status" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "IPv4 Adresse" @@ -1506,15 +1513,12 @@ msgstr "IPv6 Einstellungen" msgid "IPv6 ULA-Prefix" msgstr "IPv6 ULA-Präfix" -msgid "IPv6 WAN Status" -msgstr "IPv6 WAN Status" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "IPv6 Adresse" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "Zum lokalen Tunnelendpunkt delegierte IPv6-Adresse (optional)" - msgid "IPv6 assignment hint" msgstr "IPv6 Zuweisungshinweis" @@ -2129,9 +2133,6 @@ msgstr "" msgid "NTP server candidates" msgstr "NTP Server Kandidaten" -msgid "NTP sync time-out" -msgstr "NTP Synchronisierungstimeout" - msgid "Name" msgstr "Name" @@ -2256,6 +2257,9 @@ msgstr "Chiffriertes Gruppenpasswort" msgid "Obfuscated Password" msgstr "Chiffriertes Passwort" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Verzögerung für Ausschalt-Zustand" @@ -2307,14 +2311,6 @@ msgstr "Option entfernt" msgid "Optional" msgstr "Optional" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" -"Optional, angeben um den Standardserver (tic.sixxs.net) zu überschreiben" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" -"Optional, angeben wenn das SIXSS Konto mehr als einen Tunnel beinhaltet" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2809,9 +2805,6 @@ msgstr "IPv6-Adresse anfordern" msgid "Request IPv6-prefix of length" msgstr "IPv6-Präfix dieser Länge anfordern" -msgid "Require TLS" -msgstr "TLS erfordern" - msgid "Required" msgstr "Benötigt" @@ -2879,6 +2872,15 @@ msgstr "Passwort zeigen/verstecken" msgid "Revert" msgstr "Verwerfen" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Root" @@ -2894,9 +2896,6 @@ msgstr "Erlaubte IP-Addressen routen" msgid "Route type" msgstr "Routen-Typ" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "Geroutetes IPv6-Präfix für nachgelagerte Schnittstellen" - msgid "Router Advertisement-Service" msgstr "Router-Advertisement-Dienst" @@ -2922,14 +2921,6 @@ msgstr "Dateisystemprüfung durchführen" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2957,9 +2948,6 @@ msgstr "Speichern" msgid "Save & Apply" msgstr "Speichern & Anwenden" -msgid "Save & Apply" -msgstr "Speichern & Anwenden" - msgid "Scan" msgstr "Scan" @@ -2988,19 +2976,6 @@ msgstr "Clients isolieren" msgid "Server Settings" msgstr "Servereinstellungen" -msgid "Server password" -msgstr "Server Passwort" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" -"Server Passwort bzw. das tunnelspezifische Passwort wenn der Benutzername " -"eine Tunnel-ID beinhaltet." - -msgid "Server username" -msgstr "Server Benutzername" - msgid "Service Name" msgstr "Service-Name" @@ -3101,9 +3076,6 @@ msgstr "Sortieren" msgid "Source" msgstr "Quelle" -msgid "Source routing" -msgstr "Quell-Routing" - msgid "Specifies the directory the device is attached to" msgstr "Nennt das Verzeichnis, an welches das Gerät angebunden ist" @@ -3150,6 +3122,9 @@ msgstr "Start" msgid "Start priority" msgstr "Startpriorität" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Systemstart" @@ -3325,6 +3300,16 @@ msgstr "" "werden:" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "Die Gerätedatei des Speichers oder der Partition (z.B.: /dev/sda)" @@ -3345,9 +3330,6 @@ msgstr "" "Integrität sicherzustellen.<br /> Klicken Sie \"Fortfahren\" um die Flash-" "Prozedur zu starten." -msgid "The following changes have been committed" -msgstr "Die folgenden Änderungen wurden angewendet" - msgid "The following changes have been reverted" msgstr "Die folgenden Änderungen wurden verworfen" @@ -3422,13 +3404,6 @@ msgstr "" "Adresse beziehen müssen um auf das Gerät zugreifen zu können." msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" -"Der lokale Tunnel-Endpunkt ist hinter einem NAT. Standard ist deaktiviert, " -"nur auf AYIYA anwendbar." - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3438,8 +3413,8 @@ msgstr "" msgid "There are no active leases." msgstr "Es gibt z.Z. keine aktiven Leases." -msgid "There are no pending changes to apply!" -msgstr "Es gibt keine ausstehenen Änderungen anzuwenden!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Es gibt keine ausstehenen Änderungen zurückzusetzen!" @@ -3600,15 +3575,6 @@ msgstr "Tunnelschnittstelle" msgid "Tunnel Link" msgstr "Basisschnittstelle" -msgid "Tunnel broker protocol" -msgstr "Tunnel-Boker-Protokoll" - -msgid "Tunnel setup server" -msgstr "Tunnel-Setup-Server" - -msgid "Tunnel type" -msgstr "Tunneltyp" - msgid "Tx-Power" msgstr "Sendestärke" @@ -3790,12 +3756,6 @@ msgstr "Hersteller" msgid "Vendor Class to send when requesting DHCP" msgstr "Bei DHCP-Anfragen gesendete Vendor-Klasse" -msgid "Verbose" -msgstr "Umfangreiche Ausgaben" - -msgid "Verbose logging by aiccu daemon" -msgstr "Aktiviert erweiterte Protokollierung durch den AICCU-Prozess" - msgid "Verify" msgstr "Verifizieren" @@ -3827,18 +3787,15 @@ msgstr "" "WPA-Verschlüsselung benötigt wpa_supplicant (für Client-Modus) oder hostapd " "(für AP oder Ad-Hoc Modus)." -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" -"Warte die angegebene Anzahl an Sekunden auf NTP-Synchronisierung, der Wert 0 " -"deaktiviert das Warten (optional)" - msgid "Waiting for changes to be applied..." msgstr "Änderungen werden angewandt..." msgid "Waiting for command to complete..." msgstr "Der Befehl wird ausgeführt..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "Warte auf Gerät..." @@ -3857,13 +3814,6 @@ msgstr "" "Wenn PSK in Verwendung ist, können PMK-Schlüssel lokal ohne Inter-Access-" "Point-Kommunikation erzeugt werden." -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" -"Gibt an, ob eine IPv6-Default-Route durch den Tunnel etabliert werden soll" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "Gibt an, ob nur Pakete von delegierten Präfixen geroutet werden sollen" - msgid "Width" msgstr "Breite" @@ -4005,9 +3955,6 @@ msgstr "kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "Lokale DNS-Datei" -msgid "minimum 1280, maximum 1480" -msgstr "Minimum 1280, Maximum 1480" - msgid "minutes" msgstr "Minuten" @@ -4083,107 +4030,8 @@ msgstr "ja" msgid "« Back" msgstr "« Zurück" -#~ msgid "Action" -#~ msgstr "Aktion" - -#~ msgid "Buttons" -#~ msgstr "Knöpfe" - -#~ msgid "Handler" -#~ msgstr "Handler" - -#~ msgid "Maximum hold time" -#~ msgstr "Maximalzeit zum Halten der Verbindung" - -#~ msgid "Minimum hold time" -#~ msgstr "Minimalzeit zum Halten der Verbindung" - -#~ msgid "Path to executable which handles the button event" -#~ msgstr "Ausführbare Datei welche das Schalter-Ereignis verarbeitet" - -#~ msgid "Specifies the button state to handle" -#~ msgstr "Gibt den zu behandelnden Tastenstatus an" - -#~ msgid "This page allows the configuration of custom button actions" -#~ msgstr "" -#~ "Diese Seite ermöglicht die Konfiguration benutzerdefinierter " -#~ "Tastenaktionen" - -#~ msgid "Leasetime" -#~ msgstr "Laufzeit" - -#~ msgid "Optional." -#~ msgstr "Optional" - -#~ msgid "AuthGroup" -#~ msgstr "Berechtigungsgruppe" - -#~ msgid "automatic" -#~ msgstr "automatisch" - -#~ msgid "AR Support" -#~ msgstr "AR-Unterstützung" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Atheros 802.11%s W-LAN Adapter" - -#~ msgid "Background Scan" -#~ msgstr "Hintergrundscan" - -#~ msgid "Compression" -#~ msgstr "Kompression" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Deaktiviere Hardware-Beacon Zeitgeber" - -#~ msgid "Do not send probe responses" -#~ msgstr "Scan-Anforderungen nicht beantworten" - -#~ msgid "Fast Frames" -#~ msgstr "Schnelle Frames" - -#~ msgid "Maximum Rate" -#~ msgstr "Höchstübertragungsrate" - -#~ msgid "Minimum Rate" -#~ msgstr "Mindestübertragungsrate" - -#~ msgid "Multicast Rate" -#~ msgstr "Multicastrate" - -#~ msgid "Outdoor Channels" -#~ msgstr "Funkkanal für den Ausseneinsatz" - -#~ msgid "Regulatory Domain" -#~ msgstr "Geltungsbereich (Regulatory Domain)" - -#~ msgid "Separate WDS" -#~ msgstr "Separates WDS" - -#~ msgid "Static WDS" -#~ msgstr "Statisches WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Turbo Modus" - -#~ msgid "XR Support" -#~ msgstr "XR-Unterstützung" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "" -#~ "Erzeugt ein zusätzliches Netzwerk wenn diese Option nicht ausgewählt ist" - -#~ msgid "Join Network: Settings" -#~ msgstr "Netzwerk beitreten: Einstellungen" - -#~ msgid "CPU" -#~ msgstr "Prozessor" - -#~ msgid "Port %d" -#~ msgstr "Port %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "Port %d ist untagged in mehreren VLANs!" +#~ msgid "IPv4 WAN Status" +#~ msgstr "IPv4 WAN Status" -#~ msgid "VLAN Interface" -#~ msgstr "VLAN Schnittstelle" +#~ msgid "IPv6 WAN Status" +#~ msgstr "IPv6 WAN Status" diff --git a/modules/luci-base/po/el/base.po b/modules/luci-base/po/el/base.po index f746db32a4..16008ddc9c 100644 --- a/modules/luci-base/po/el/base.po +++ b/modules/luci-base/po/el/base.po @@ -172,9 +172,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -211,9 +208,6 @@ msgstr "ΑÏιθμός συσκευής ATM" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "ΣυγκεντÏωτής Î Ïόσβασης " @@ -326,11 +320,6 @@ msgstr "" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -409,11 +398,14 @@ msgstr "" msgid "Any zone" msgstr "Οιαδήποτε ζώνη" -msgid "Apply" -msgstr "ΕφαÏμογή" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" + +msgid "Apply unchecked" +msgstr "" -msgid "Applying changes" -msgstr "ΕφαÏμογή αλλαγών" +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -429,6 +421,9 @@ msgstr "" msgid "Associated Stations" msgstr "ΣυνδεδεμÎνοι Σταθμοί" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -520,9 +515,6 @@ msgstr "Μη ÎγκυÏη διεÏθυνση!" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -595,12 +587,20 @@ msgstr "ΑλλαγÎÏ‚" msgid "Changes applied." msgstr "ΑλλαγÎÏ‚ εφαÏμόστηκαν." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Αλλάζει τον κωδικό διαχειÏιστή για Ï€Ïόσβαση στη συσκευή" msgid "Channel" msgstr "Κανάλι" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Έλεγχος" @@ -681,12 +681,15 @@ msgstr "" msgid "Configuration" msgstr "ΠαÏαμετÏοποίηση" -msgid "Configuration applied." -msgstr "Η ΠαÏαμετÏοποίηση εφαÏμόστηκε." - msgid "Configuration files will be kept." msgstr "Τα αÏχεία παÏαμετÏοποίησης θα διατηÏηθοÏν." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Επιβεβαίωση" @@ -699,12 +702,15 @@ msgstr "ΣυνδεδεμÎνος" msgid "Connection Limit" msgstr "ÎŒÏιο ΣυνδÎσεων" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "ΣυνδÎσεις" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "ΧώÏα" @@ -833,9 +839,6 @@ msgstr "Î ÏοεπιλεγμÎνη Ï€Ïλη" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "Î ÏοεπιλεγμÎνη κατάσταση" @@ -877,6 +880,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Διαγνωστικά" @@ -911,6 +917,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "Αγνόησε τις απαντήσεις ανοδικής Ïοής RFC1918" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Εμφάνιση μόνο πακÎτων που πεÏιÎχουν" @@ -1175,6 +1184,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "ΑÏχείο" @@ -1369,9 +1381,6 @@ msgstr "ΚÏÎμασμα" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1430,7 +1439,7 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "IPv4 Τείχος Î Ïοστασίας" -msgid "IPv4 WAN Status" +msgid "IPv4 Upstream" msgstr "" msgid "IPv4 address" @@ -1481,15 +1490,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" -msgstr "Κατάσταση IPv6 WAN" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "ΔιεÏθυνση IPv6" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2072,9 +2078,6 @@ msgstr "" msgid "NTP server candidates" msgstr "" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "Όνομα" @@ -2198,6 +2201,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2249,12 +2255,6 @@ msgstr "Η επιλογή αφαιÏÎθηκε" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2716,9 +2716,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2777,6 +2774,15 @@ msgstr "" msgid "Revert" msgstr "ΑναίÏεση" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Root" @@ -2792,9 +2798,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2821,14 +2824,6 @@ msgstr "ΕκτÎλεση ελÎγχου συστήματος αÏχείων" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2856,9 +2851,6 @@ msgstr "Αποθήκευση" msgid "Save & Apply" msgstr "Αποθήκευση & ΕφαÏμογή" -msgid "Save & Apply" -msgstr "Αποθήκευση & ΕφαÏμογή" - msgid "Scan" msgstr "ΣάÏωση" @@ -2886,17 +2878,6 @@ msgstr "Απομόνωση Πελατών" msgid "Server Settings" msgstr "Ρυθμίσεις ΕξυπηÏετητή" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "Όνομα ΥπηÏεσίας" @@ -2989,9 +2970,6 @@ msgstr "Ταξινόμηση" msgid "Source" msgstr "Πηγή" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -3032,6 +3010,9 @@ msgstr "ΑÏχή" msgid "Start priority" msgstr "Î ÏοτεÏαιότητα εκκίνησης" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Εκκίνηση" @@ -3184,6 +3165,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3205,9 +3196,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "Οι παÏακάτω αλλαγÎÏ‚ Îχουν υποβληθεί" - msgid "The following changes have been reverted" msgstr "Οι παÏακάτω αλλαγÎÏ‚ Îχουν αναιÏεθεί" @@ -3266,11 +3254,6 @@ msgstr "" "να αποκτήσετε ξανά Ï€Ïόσβαση στη συσκευή." msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3280,7 +3263,7 @@ msgstr "" msgid "There are no active leases." msgstr "Δεν υπάÏχουν ενεÏγά leases." -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3422,15 +3405,6 @@ msgstr "Διεπαφή ΤοÏνελ" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "ΙσχÏÏ‚ Εκπομπής" @@ -3603,12 +3577,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "" @@ -3638,16 +3606,15 @@ msgid "" "and ad-hoc mode) to be installed." msgstr "" -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3662,12 +3629,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3810,9 +3771,6 @@ msgstr "" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "τοπικό αÏχείο <abbr title=\"Domain Name System\">DNS</abbr>" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3888,6 +3846,24 @@ msgstr "ναι" msgid "« Back" msgstr "« Πίσω" +#~ msgid "IPv6 WAN Status" +#~ msgstr "Κατάσταση IPv6 WAN" + +#~ msgid "Apply" +#~ msgstr "ΕφαÏμογή" + +#~ msgid "Applying changes" +#~ msgstr "ΕφαÏμογή αλλαγών" + +#~ msgid "Configuration applied." +#~ msgstr "Η ΠαÏαμετÏοποίηση εφαÏμόστηκε." + +#~ msgid "Save & Apply" +#~ msgstr "Αποθήκευση & ΕφαÏμογή" + +#~ msgid "The following changes have been committed" +#~ msgstr "Οι παÏακάτω αλλαγÎÏ‚ Îχουν υποβληθεί" + #~ msgid "Action" #~ msgstr "ΕνÎÏγεια" diff --git a/modules/luci-base/po/en/base.po b/modules/luci-base/po/en/base.po index 50a7c92815..7c5f56d837 100644 --- a/modules/luci-base/po/en/base.po +++ b/modules/luci-base/po/en/base.po @@ -172,9 +172,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -211,9 +208,6 @@ msgstr "ATM device number" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "Access Concentrator" @@ -317,11 +311,6 @@ msgstr "" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -400,11 +389,14 @@ msgstr "" msgid "Any zone" msgstr "Any zone" -msgid "Apply" -msgstr "Apply" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" + +msgid "Apply unchecked" +msgstr "" -msgid "Applying changes" -msgstr "Applying changes" +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -420,6 +412,9 @@ msgstr "" msgid "Associated Stations" msgstr "Associated Stations" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -510,9 +505,6 @@ msgstr "Bad address specified!" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -584,12 +576,20 @@ msgstr "Changes" msgid "Changes applied." msgstr "Changes applied." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Changes the administrator password for accessing the device" msgid "Channel" msgstr "Channel" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Check" @@ -668,12 +668,15 @@ msgstr "" msgid "Configuration" msgstr "Configuration" -msgid "Configuration applied." -msgstr "Configuration applied." - msgid "Configuration files will be kept." msgstr "Configuration files will be kept." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Confirmation" @@ -686,12 +689,15 @@ msgstr "Connected" msgid "Connection Limit" msgstr "Connection Limit" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "Connections" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Country" @@ -820,9 +826,6 @@ msgstr "Default gateway" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "Default state" @@ -865,6 +868,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnostics" @@ -897,6 +903,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -1151,6 +1160,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "" @@ -1344,9 +1356,6 @@ msgstr "Hang Up" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1404,7 +1413,7 @@ msgstr "" msgid "IPv4 Firewall" msgstr "" -msgid "IPv4 WAN Status" +msgid "IPv4 Upstream" msgstr "" msgid "IPv4 address" @@ -1455,15 +1464,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" +msgid "IPv6 Upstream" msgstr "" msgid "IPv6 address" msgstr "" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2039,9 +2045,6 @@ msgstr "" msgid "NTP server candidates" msgstr "" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "Name" @@ -2165,6 +2168,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2216,12 +2222,6 @@ msgstr "" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2682,9 +2682,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2743,6 +2740,15 @@ msgstr "" msgid "Revert" msgstr "Revert" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2758,9 +2764,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2786,14 +2789,6 @@ msgstr "" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2821,9 +2816,6 @@ msgstr "Save" msgid "Save & Apply" msgstr "Save & Apply" -msgid "Save & Apply" -msgstr "" - msgid "Scan" msgstr "Scan" @@ -2850,17 +2842,6 @@ msgstr "Separate Clients" msgid "Server Settings" msgstr "" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "" @@ -2953,9 +2934,6 @@ msgstr "" msgid "Source" msgstr "Source" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2994,6 +2972,9 @@ msgstr "Start" msgid "Start priority" msgstr "Start priority" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "" @@ -3144,6 +3125,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3165,9 +3156,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "The following changes have been reverted" @@ -3226,11 +3214,6 @@ msgstr "" "settings." msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3240,7 +3223,7 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3379,15 +3362,6 @@ msgstr "" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "" @@ -3560,12 +3534,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "" @@ -3597,16 +3565,15 @@ msgstr "" "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " "and ad-hoc mode) to be installed." -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3621,12 +3588,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3767,9 +3728,6 @@ msgstr "" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "local <abbr title=\"Domain Name System\">DNS</abbr> file" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3845,6 +3803,15 @@ msgstr "" msgid "« Back" msgstr "« Back" +#~ msgid "Apply" +#~ msgstr "Apply" + +#~ msgid "Applying changes" +#~ msgstr "Applying changes" + +#~ msgid "Configuration applied." +#~ msgstr "Configuration applied." + #~ msgid "Action" #~ msgstr "Action" diff --git a/modules/luci-base/po/es/base.po b/modules/luci-base/po/es/base.po index 8aed2e9ee3..fabfded2c4 100644 --- a/modules/luci-base/po/es/base.po +++ b/modules/luci-base/po/es/base.po @@ -174,9 +174,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -213,9 +210,6 @@ msgstr "Número de dispositivo ATM" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "Concentrador de acceso" @@ -323,11 +317,6 @@ msgstr "" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -406,11 +395,14 @@ msgstr "Configuración de la antena" msgid "Any zone" msgstr "Cualquier zona" -msgid "Apply" -msgstr "Aplicar" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Aplicando cambios" +msgid "Apply unchecked" +msgstr "" + +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -426,6 +418,9 @@ msgstr "" msgid "Associated Stations" msgstr "Estaciones asociadas" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -516,9 +511,6 @@ msgstr "¡Dirección no válida!" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -591,12 +583,20 @@ msgstr "Cambios" msgid "Changes applied." msgstr "Cambios aplicados." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Cambie la contraseña del administrador para acceder al dispositivo" msgid "Channel" msgstr "Canal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Comprobar" @@ -677,12 +677,15 @@ msgstr "" msgid "Configuration" msgstr "Configuración" -msgid "Configuration applied." -msgstr "Configuración establecida." - msgid "Configuration files will be kept." msgstr "Se mantendrán los ficheros de configuración." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Confirmación" @@ -695,12 +698,15 @@ msgstr "Conectado" msgid "Connection Limit" msgstr "LÃmite de conexión" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "Conexiones" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "PaÃs" @@ -829,9 +835,6 @@ msgstr "Gateway por defecto" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "Estado por defecto" @@ -874,6 +877,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnósticos" @@ -908,6 +914,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "Descartar respuestas RFC1918 salientes" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Mostrar sólo paquete que contienen" @@ -1169,6 +1178,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Fichero" @@ -1365,9 +1377,6 @@ msgstr "Suspender" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1426,8 +1435,8 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "Cortafuegos IPv4" -msgid "IPv4 WAN Status" -msgstr "Estado de la WAN IPv4" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "Dirección IPv4" @@ -1477,15 +1486,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" -msgstr "Estado de la WAN IPv6" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "Dirección IPv6" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2078,9 +2084,6 @@ msgstr "" msgid "NTP server candidates" msgstr "Servidores NTP a consultar" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "Nombre" @@ -2204,6 +2207,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Retraso de desconexión" @@ -2254,12 +2260,6 @@ msgstr "Opción eliminada" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2736,9 +2736,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2797,6 +2794,15 @@ msgstr "Mostrar/ocultar contraseña" msgid "Revert" msgstr "Anular" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "RaÃz" @@ -2812,9 +2818,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2840,14 +2843,6 @@ msgstr "Comprobar el sistema de ficheros" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2875,9 +2870,6 @@ msgstr "Guardar" msgid "Save & Apply" msgstr "Guardar y aplicar" -msgid "Save & Apply" -msgstr "Guardar y aplicar" - msgid "Scan" msgstr "Explorar" @@ -2906,17 +2898,6 @@ msgstr "Aislar clientes" msgid "Server Settings" msgstr "Configuración del servidor" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "Nombre de servicio" @@ -3013,9 +2994,6 @@ msgstr "Ordenar" msgid "Source" msgstr "Origen" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "Especifica el directorio al que está enlazado el dispositivo" @@ -3059,6 +3037,9 @@ msgstr "Arrancar" msgid "Start priority" msgstr "Prioridad de arranque" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Arranque" @@ -3226,6 +3207,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3250,9 +3241,6 @@ msgstr "" "coinciden con los del original.<br />Pulse \"Proceder\" para empezar el " "grabado." -msgid "The following changes have been committed" -msgstr "Se han hecho los siguientes cambios" - msgid "The following changes have been reverted" msgstr "Se han anulado los siguientes cambios" @@ -3322,11 +3310,6 @@ msgstr "" "conexión de su ordenador para poder acceder de nuevo al dispositivo." msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3336,8 +3319,8 @@ msgstr "" msgid "There are no active leases." msgstr "Sin cesiones activas." -msgid "There are no pending changes to apply!" -msgstr "¡No hay cambios pendientes!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "¡No hay cambios a anular!" @@ -3488,15 +3471,6 @@ msgstr "Interfaz de túnel" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "Potencia-TX" @@ -3676,12 +3650,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "Clase de vendedor a enviar cuando solicite DHCP" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "Verificar" @@ -3713,16 +3681,15 @@ msgstr "" "WPA-Encryption necesita que estén instalados wpa_supplicant (para el modo " "cliente o hostapd (para los modos AP y ad-hoc)." -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "Esperando a que se realicen los cambios..." msgid "Waiting for command to complete..." msgstr "Esperando a que termine el comando..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3737,12 +3704,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3885,9 +3846,6 @@ msgstr "Kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "Archvo <abbr title=\"Domain Name System\">DNS</abbr> local" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3963,6 +3921,30 @@ msgstr "sÃ" msgid "« Back" msgstr "« Volver" +#~ msgid "IPv4 WAN Status" +#~ msgstr "Estado de la WAN IPv4" + +#~ msgid "IPv6 WAN Status" +#~ msgstr "Estado de la WAN IPv6" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Applying changes" +#~ msgstr "Aplicando cambios" + +#~ msgid "Configuration applied." +#~ msgstr "Configuración establecida." + +#~ msgid "Save & Apply" +#~ msgstr "Guardar y aplicar" + +#~ msgid "The following changes have been committed" +#~ msgstr "Se han hecho los siguientes cambios" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "¡No hay cambios pendientes!" + #~ msgid "Action" #~ msgstr "Acción" diff --git a/modules/luci-base/po/fr/base.po b/modules/luci-base/po/fr/base.po index e09343815d..148b39e011 100644 --- a/modules/luci-base/po/fr/base.po +++ b/modules/luci-base/po/fr/base.po @@ -173,9 +173,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -216,9 +213,6 @@ msgstr "Numéro de périphérique ATM" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "Concentrateur d'accès" @@ -329,11 +323,6 @@ msgstr "" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -412,11 +401,14 @@ msgstr "Configuration de l'antenne" msgid "Any zone" msgstr "N'importe quelle zone" -msgid "Apply" -msgstr "Appliquer" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Changements en cours" +msgid "Apply unchecked" +msgstr "" + +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -432,6 +424,9 @@ msgstr "" msgid "Associated Stations" msgstr "Équipements associés" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -522,9 +517,6 @@ msgstr "Adresse spécifiée incorrecte!" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -596,12 +588,20 @@ msgstr "Changements" msgid "Changes applied." msgstr "Changements appliqués." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Change le mot de passe administrateur pour accéder à l'équipement" msgid "Channel" msgstr "Canal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Vérification" @@ -684,12 +684,15 @@ msgstr "" msgid "Configuration" msgstr "Configuration" -msgid "Configuration applied." -msgstr "Configuration appliquée." - msgid "Configuration files will be kept." msgstr "Les fichiers de configuration seront préservés." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Confirmation" @@ -702,12 +705,15 @@ msgstr "Connecté" msgid "Connection Limit" msgstr "Limite de connexion" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "Connexions" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Pays" @@ -836,9 +842,6 @@ msgstr "Passerelle par défaut" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "État par défaut" @@ -881,6 +884,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnostics" @@ -915,6 +921,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "Jeter les réponses en RFC1918 amont" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "N'afficher que les paquets contenant" @@ -1181,6 +1190,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Fichier" @@ -1376,9 +1388,6 @@ msgstr "Signal (HUP)" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1438,8 +1447,8 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "Pare-feu IPv4" -msgid "IPv4 WAN Status" -msgstr "État IPv4 du WAN" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "Adresse IPv4" @@ -1489,15 +1498,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" -msgstr "État IPv6 du WAN" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "Adresse IPv6" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2092,9 +2098,6 @@ msgstr "" msgid "NTP server candidates" msgstr "Serveurs NTP candidats" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "Nom" @@ -2218,6 +2221,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Durée éteinte" @@ -2267,12 +2273,6 @@ msgstr "Option retirée" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2749,9 +2749,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2810,6 +2807,15 @@ msgstr "Montrer/cacher le mot de passe" msgid "Revert" msgstr "Revenir" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Racine" @@ -2825,9 +2831,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2854,14 +2857,6 @@ msgstr "Faire une vérification du système de fichiers" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2889,9 +2884,6 @@ msgstr "Sauvegarder" msgid "Save & Apply" msgstr "Sauvegarder et Appliquer" -msgid "Save & Apply" -msgstr "Sauvegarder et appliquer" - msgid "Scan" msgstr "Scan" @@ -2920,17 +2912,6 @@ msgstr "Isoler les clients" msgid "Server Settings" msgstr "Paramètres du serveur" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "Nom du service" @@ -3028,9 +3009,6 @@ msgstr "Trier" msgid "Source" msgstr "Source" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "Indique le répertoire auquel le périphérique est rattaché" @@ -3071,6 +3049,9 @@ msgstr "Démarrer" msgid "Start priority" msgstr "Priorité de démarrage" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Démarrage" @@ -3238,6 +3219,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "Le périphérique de bloc contenant la partition (ex : /dev/sda1)" @@ -3260,9 +3251,6 @@ msgstr "" "assurer de son intégrité.<br /> Cliquez sur \"Continuer\" pour lancer la " "procédure d'écriture." -msgid "The following changes have been committed" -msgstr "Les changements suivants ont été appliqués" - msgid "The following changes have been reverted" msgstr "Les changements suivants ont été annulés" @@ -3335,11 +3323,6 @@ msgstr "" "settings." msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3349,8 +3332,8 @@ msgstr "" msgid "There are no active leases." msgstr "Il n'y a aucun bail actif." -msgid "There are no pending changes to apply!" -msgstr "Il n'y a aucun changement en attente d'être appliqués !" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Il n'y a aucun changement à annuler !" @@ -3506,15 +3489,6 @@ msgstr "Interface du tunnel" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "Puissance d'émission" @@ -3695,12 +3669,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "Classe de fournisseur à envoyer dans les requêtes DHCP" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "Vérifier" @@ -3732,16 +3700,15 @@ msgstr "" "Le chiffrage WPA nécessite l'installation du paquet wpa_supplicant (en mode " "client) ou hostapd (en mode Point d'accès ou Ad-hoc)." -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "En attente de l'application des changements..." msgid "Waiting for command to complete..." msgstr "En attente de la fin de la commande..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3756,12 +3723,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3903,9 +3864,6 @@ msgstr "kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "fichier de résolution local" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3981,6 +3939,30 @@ msgstr "oui" msgid "« Back" msgstr "« Retour" +#~ msgid "IPv4 WAN Status" +#~ msgstr "État IPv4 du WAN" + +#~ msgid "IPv6 WAN Status" +#~ msgstr "État IPv6 du WAN" + +#~ msgid "Apply" +#~ msgstr "Appliquer" + +#~ msgid "Applying changes" +#~ msgstr "Changements en cours" + +#~ msgid "Configuration applied." +#~ msgstr "Configuration appliquée." + +#~ msgid "Save & Apply" +#~ msgstr "Sauvegarder et appliquer" + +#~ msgid "The following changes have been committed" +#~ msgstr "Les changements suivants ont été appliqués" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Il n'y a aucun changement en attente d'être appliqués !" + #~ msgid "Action" #~ msgstr "Action" diff --git a/modules/luci-base/po/he/base.po b/modules/luci-base/po/he/base.po index cb4c74a3f6..9ac8e74162 100644 --- a/modules/luci-base/po/he/base.po +++ b/modules/luci-base/po/he/base.po @@ -163,9 +163,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -203,9 +200,6 @@ msgstr "מס' התקן של ATM" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - #, fuzzy msgid "Access Concentrator" msgstr "מרכז גישות" @@ -316,11 +310,6 @@ msgstr "" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -401,11 +390,14 @@ msgstr "הגדרות ×× ×˜× ×”" msgid "Any zone" msgstr "כל תחו×" -msgid "Apply" -msgstr "החל" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" + +msgid "Apply unchecked" +msgstr "" -msgid "Applying changes" -msgstr "מחיל הגדרות" +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -421,6 +413,9 @@ msgstr "" msgid "Associated Stations" msgstr "×ª×—× ×•×ª קשורות" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -511,9 +506,6 @@ msgstr "פורטה כתובת ×œ× ×ª×§×™× ×”" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -586,12 +578,20 @@ msgstr "×©×™× ×•×™×™×" msgid "Changes applied." msgstr "×”×©×™× ×•×™×™× ×”×•×—×œ×•" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "×ž×©× ×” ×ת סיסמת ×”×ž× ×”×œ לגישה למכשיר" msgid "Channel" msgstr "ערוץ" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "לבדוק" @@ -661,12 +661,15 @@ msgstr "" msgid "Configuration" msgstr "הגדרות" -msgid "Configuration applied." -msgstr "הגדרות הוחלו" - msgid "Configuration files will be kept." msgstr "קבצי ההגדרות ישמרו." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "×ישור" @@ -679,12 +682,15 @@ msgstr "מחובר" msgid "Connection Limit" msgstr "מגבלת חיבורי×" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "חיבורי×" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "×ž×“×™× ×”" @@ -813,9 +819,6 @@ msgstr "" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "" @@ -857,6 +860,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "×בחון" @@ -889,6 +895,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "מציג רק חבילות המכילות" @@ -1136,6 +1145,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "" @@ -1329,9 +1341,6 @@ msgstr "" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1387,7 +1396,7 @@ msgstr "" msgid "IPv4 Firewall" msgstr "" -msgid "IPv4 WAN Status" +msgid "IPv4 Upstream" msgstr "" msgid "IPv4 address" @@ -1438,15 +1447,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" +msgid "IPv6 Upstream" msgstr "" msgid "IPv6 address" msgstr "" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2012,9 +2018,6 @@ msgstr "" msgid "NTP server candidates" msgstr "" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "ש×" @@ -2138,6 +2141,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2183,12 +2189,6 @@ msgstr "" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2650,9 +2650,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2711,6 +2708,15 @@ msgstr "" msgid "Revert" msgstr "" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2726,9 +2732,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2752,14 +2755,6 @@ msgstr "הרץ בדיקת מערכת קבצי×" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2787,9 +2782,6 @@ msgstr "" msgid "Save & Apply" msgstr "" -msgid "Save & Apply" -msgstr "" - msgid "Scan" msgstr "" @@ -2816,17 +2808,6 @@ msgstr "" msgid "Server Settings" msgstr "" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "" @@ -2922,9 +2903,6 @@ msgstr "מיין" msgid "Source" msgstr "מקור" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2963,6 +2941,9 @@ msgstr "" msgid "Start priority" msgstr "" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "×תחול" @@ -3116,6 +3097,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3132,9 +3123,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "" @@ -3189,11 +3177,6 @@ msgid "" msgstr "" msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3201,7 +3184,7 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3337,15 +3320,6 @@ msgstr "" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "עוצמת שידור" @@ -3518,12 +3492,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "" @@ -3553,16 +3521,15 @@ msgid "" "and ad-hoc mode) to be installed." msgstr "" -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3577,12 +3544,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3718,9 +3679,6 @@ msgstr "" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3796,6 +3754,15 @@ msgstr "כן" msgid "« Back" msgstr "<< ×חורה" +#~ msgid "Apply" +#~ msgstr "החל" + +#~ msgid "Applying changes" +#~ msgstr "מחיל הגדרות" + +#~ msgid "Configuration applied." +#~ msgstr "הגדרות הוחלו" + #~ msgid "Action" #~ msgstr "פעולה" diff --git a/modules/luci-base/po/hu/base.po b/modules/luci-base/po/hu/base.po index e49b5303f0..42eb6bc907 100644 --- a/modules/luci-base/po/hu/base.po +++ b/modules/luci-base/po/hu/base.po @@ -170,9 +170,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -209,9 +206,6 @@ msgstr "ATM eszközszám" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "Elérési központ" @@ -322,11 +316,6 @@ msgstr "" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -405,11 +394,14 @@ msgstr "Antenna beállÃtások" msgid "Any zone" msgstr "Bármelyik zóna" -msgid "Apply" -msgstr "Alkalmaz" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "MódosÃtások alkalmazása" +msgid "Apply unchecked" +msgstr "" + +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -425,6 +417,9 @@ msgstr "" msgid "Associated Stations" msgstr "Kapcsolódó kliensek" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -515,9 +510,6 @@ msgstr "Hibás cÃmet adott meg!" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -590,6 +582,9 @@ msgstr "MódosÃtások" msgid "Changes applied." msgstr "A módosÃtások alkalmazva." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "" "Itt módosÃthatja az eszköz eléréséhez szükséges adminisztrátori jelszót" @@ -597,6 +592,11 @@ msgstr "" msgid "Channel" msgstr "Csatorna" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "EllenÅ‘rzés" @@ -679,12 +679,15 @@ msgstr "" msgid "Configuration" msgstr "BeállÃtás" -msgid "Configuration applied." -msgstr "BeállÃtások alkalmazva." - msgid "Configuration files will be kept." msgstr "A konfigurációs fájlok megmaradnak." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "MegerÅ‘sÃtés" @@ -697,12 +700,15 @@ msgstr "Kapcsolódva" msgid "Connection Limit" msgstr "Kapcsolati korlát" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "Kapcsolatok" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Ország" @@ -831,9 +837,6 @@ msgstr "Alapértelmezett átjáró" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "Alapértelmezett állapot" @@ -875,6 +878,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnosztika" @@ -909,6 +915,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "BeérkezÅ‘ RFC1918 DHCP válaszok elvetése. " +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Csak azon csomagok megjelenÃtése, amelyek tartalmazzák" @@ -1170,6 +1179,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Fájl" @@ -1365,9 +1377,6 @@ msgstr "Befejezés" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1427,8 +1436,8 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "IPv4 tűzfal" -msgid "IPv4 WAN Status" -msgstr "IPv4 WAN állapot" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "IPv4 cÃm" @@ -1478,15 +1487,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" -msgstr "IPv6 WAN állapot" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "IPv6 cÃm" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2081,9 +2087,6 @@ msgstr "" msgid "NTP server candidates" msgstr "Kijelölt NTP kiszolgálók" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "Név" @@ -2207,6 +2210,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Kikapcsolt állapot késleltetés" @@ -2257,12 +2263,6 @@ msgstr "BeállÃtás eltávolÃtva" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2740,9 +2740,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2802,6 +2799,15 @@ msgstr "Jelszó mutatása/elrejtése" msgid "Revert" msgstr "Visszavonás" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Gyökérkönyvtár" @@ -2817,9 +2823,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2845,14 +2848,6 @@ msgstr "Fájlrendszer ellenÅ‘rzés futtatása" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2880,9 +2875,6 @@ msgstr "Mentés" msgid "Save & Apply" msgstr "Mentés & Alkalmazás" -msgid "Save & Apply" -msgstr "Mentés & Alkalmazás" - msgid "Scan" msgstr "FelderÃtés" @@ -2911,17 +2903,6 @@ msgstr "Kliensek szétválasztása" msgid "Server Settings" msgstr "Kiszolgáló beállÃtásai" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "Szolgáltatás neve" @@ -3018,9 +2999,6 @@ msgstr "Sorbarendezés" msgid "Source" msgstr "Forrás" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "Megadja az eszköz csatlakozási könyvtárát." @@ -3062,6 +3040,9 @@ msgstr "IndÃtás" msgid "Start priority" msgstr "IndÃtás prioritása" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "RendszerindÃtás" @@ -3227,6 +3208,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3252,9 +3243,6 @@ msgstr "" "ellenÅ‘rzéséhez.<br />Kattintson az alábbi \"Folytatás\" gombra a flash-elési " "eljárás elindÃtásához." -msgid "The following changes have been committed" -msgstr "A következÅ‘ módosÃtások lettek alkalmazva" - msgid "The following changes have been reverted" msgstr "A következÅ‘ módosÃtások lettek visszavonva" @@ -3324,11 +3312,6 @@ msgstr "" "megújÃtása." msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3338,8 +3321,8 @@ msgstr "" msgid "There are no active leases." msgstr "Nincsenek aktÃv bérletek." -msgid "There are no pending changes to apply!" -msgstr "Nincsenek alkalmazásra váró módosÃtások!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Nincsenek visszavonásra váró változtatások!" @@ -3494,15 +3477,6 @@ msgstr "Tunnel interfész" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "AdóteljesÃtmény" @@ -3682,12 +3656,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "DHCP kérés során küldendÅ‘ 'Vendor Class'" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "EllenÅ‘rzés" @@ -3719,16 +3687,15 @@ msgstr "" "WPA titkosÃtáshoz kliens módnál 'wpa_supplicant', hozzáférési pont illetve " "ad-hoc módnál 'hostapd' telepÃtése szükséges." -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "Várakozás a változtatások alkalmazására..." msgid "Waiting for command to complete..." msgstr "Várakozás a parancs befejezésére..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3743,12 +3710,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3892,9 +3853,6 @@ msgstr "kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "helyi <abbr title=\"Domain Name System\">DNS</abbr> fájl" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3970,6 +3928,30 @@ msgstr "igen" msgid "« Back" msgstr "« Vissza" +#~ msgid "IPv4 WAN Status" +#~ msgstr "IPv4 WAN állapot" + +#~ msgid "IPv6 WAN Status" +#~ msgstr "IPv6 WAN állapot" + +#~ msgid "Apply" +#~ msgstr "Alkalmaz" + +#~ msgid "Applying changes" +#~ msgstr "MódosÃtások alkalmazása" + +#~ msgid "Configuration applied." +#~ msgstr "BeállÃtások alkalmazva." + +#~ msgid "Save & Apply" +#~ msgstr "Mentés & Alkalmazás" + +#~ msgid "The following changes have been committed" +#~ msgstr "A következÅ‘ módosÃtások lettek alkalmazva" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Nincsenek alkalmazásra váró módosÃtások!" + #~ msgid "Action" #~ msgstr "Művelet" diff --git a/modules/luci-base/po/it/base.po b/modules/luci-base/po/it/base.po index ce866d9e7b..3f687f0977 100644 --- a/modules/luci-base/po/it/base.po +++ b/modules/luci-base/po/it/base.po @@ -177,9 +177,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -216,9 +213,6 @@ msgstr "Numero dispositivo ATM " msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "Accesso Concentratore" @@ -331,11 +325,6 @@ msgstr "" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -414,11 +403,14 @@ msgstr "Configurazione dell'Antenna" msgid "Any zone" msgstr "Qualsiasi Zona" -msgid "Apply" -msgstr "Applica" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" + +msgid "Apply unchecked" +msgstr "" -msgid "Applying changes" -msgstr "Applica modifiche" +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -434,6 +426,9 @@ msgstr "" msgid "Associated Stations" msgstr "Dispositivi Wi-Fi connessi" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -524,9 +519,6 @@ msgstr "E' stato specificato un indirizzo errato!" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -598,12 +590,20 @@ msgstr "Modifiche" msgid "Changes applied." msgstr "Modifiche applicate." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Cambia la password di amministratore per accedere al dispositivo" msgid "Channel" msgstr "Canale" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Verifica" @@ -684,12 +684,15 @@ msgstr "" msgid "Configuration" msgstr "Configurazione" -msgid "Configuration applied." -msgstr "Configurazione salvata." - msgid "Configuration files will be kept." msgstr "I file di configurazione verranno mantenuti." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Conferma" @@ -702,12 +705,15 @@ msgstr "Connesso" msgid "Connection Limit" msgstr "Limite connessioni" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "Connessioni" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Nazione" @@ -836,9 +842,6 @@ msgstr "Gateway predefinito" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "Stato Predefinito" @@ -881,6 +884,9 @@ msgstr "Dispositivo in riavvio..." msgid "Device unreachable" msgstr "Dispositivo irraggiungibile" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnostica" @@ -915,6 +921,9 @@ msgstr "Disabilitato (default)" msgid "Discard upstream RFC1918 responses" msgstr "Ignora risposte RFC1918 upstream" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Visualizza solo i pacchetti contenenti" @@ -1174,6 +1183,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "File" @@ -1369,9 +1381,6 @@ msgstr "Hangup" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1432,8 +1441,8 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "IPv4 Firewall" -msgid "IPv4 WAN Status" -msgstr "Stato WAN IPv4" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "Indirizzi IPv4" @@ -1483,15 +1492,12 @@ msgstr "Impostazioni IPv6" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" -msgstr "Stato WAN IPv6" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "Indirizzi IPv6" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2081,9 +2087,6 @@ msgstr "" msgid "NTP server candidates" msgstr "Candidati server NTP" -msgid "NTP sync time-out" -msgstr "Sincronizzazione NTP scaduta" - msgid "Name" msgstr "Nome" @@ -2207,6 +2210,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2257,12 +2263,6 @@ msgstr "Opzione cancellata" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2633,13 +2633,15 @@ msgid "" "Really shut down network?\\nYou might lose access to this device if you are " "connected via this interface." msgstr "" -"Vuoi davvero spegnere questa interfaccia \"%s\" ?\\nPotresti perdere " -"l'accesso a questo router se stai usando questa interfaccia." +"Vuoi davvero spegnere questa interfaccia?\\nPotresti perdere l'accesso a " +"questo router se sei connesso usando questa interfaccia." msgid "" "Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " "you are connected via this interface." msgstr "" +"Vuoi davvero spegnere questa interfaccia \"%s\" ?\\nPotresti perdere " +"l'accesso a questo router se stai usando questa interfaccia." msgid "Really switch protocol?" msgstr "Cambiare veramente il protocollo?" @@ -2728,9 +2730,6 @@ msgstr "Richiede indirizzo-IPv6" msgid "Request IPv6-prefix of length" msgstr "Richiede prefisso-IPv6 di lunghezza" -msgid "Require TLS" -msgstr "Richiede TLS" - msgid "Required" msgstr "Richiesto" @@ -2789,6 +2788,15 @@ msgstr "Rivela/nascondi password" msgid "Revert" msgstr "Ripristina" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2804,9 +2812,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2832,14 +2837,6 @@ msgstr "Esegui controllo del filesystem" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2867,9 +2864,6 @@ msgstr "Salva" msgid "Save & Apply" msgstr "Salva & applica" -msgid "Save & Apply" -msgstr "Salva & Applica" - msgid "Scan" msgstr "Scan" @@ -2896,17 +2890,6 @@ msgstr "Isola utenti" msgid "Server Settings" msgstr "Impostazioni Server" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "" @@ -3003,9 +2986,6 @@ msgstr "Ordina" msgid "Source" msgstr "Origine" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "Specifica la cartella a cui è collegato il dispositivo in" @@ -3048,6 +3028,9 @@ msgstr "Inizio" msgid "Start priority" msgstr "Priorità di avvio" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Avvio" @@ -3213,6 +3196,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3233,9 +3226,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "Le seguenti modifiche sono state annullate" @@ -3294,11 +3284,6 @@ msgstr "" "settings." msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3308,8 +3293,8 @@ msgstr "" msgid "There are no active leases." msgstr "Non ci sono contratti attivi." -msgid "There are no pending changes to apply!" -msgstr "Non ci sono cambiamenti pendenti da applicare!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Non ci sono cambiamenti pendenti da regredire" @@ -3451,15 +3436,6 @@ msgstr "" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "" @@ -3641,12 +3617,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "Classe del Produttore da 'inviare al momento della richiesta DHCP" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "Verifica" @@ -3678,18 +3648,15 @@ msgstr "" "La crittografia WPA richiede wpa_supplicant (per la modalità client) o " "hostapd (per AP e modalità ad hoc) per essere installato." -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" -"Attendi sincro NTP quei dati secondi, immetti 0 per disabilitare l'attesa " -"(opzionale)" - msgid "Waiting for changes to be applied..." msgstr "In attesa delle modifiche da applicare ..." msgid "Waiting for command to complete..." msgstr "In attesa del comando da completare..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3704,12 +3671,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3854,9 +3815,6 @@ msgstr "kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "File <abbr title=\"Sistema Nome Dominio\">DNS</abbr> locale" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3932,84 +3890,8 @@ msgstr "Sì" msgid "« Back" msgstr "« Indietro" -#~ msgid "Action" -#~ msgstr "Azione" - -#~ msgid "Buttons" -#~ msgstr "Pulsanti" - -#~ msgid "Handler" -#~ msgstr "Gestore" - -#~ msgid "Maximum hold time" -#~ msgstr "Tempo massimo di attesa" - -#~ msgid "Minimum hold time" -#~ msgstr "Velocità minima" - -#~ msgid "Specifies the button state to handle" -#~ msgstr "Specifica lo stato del pulsante da gestire" - -#~ msgid "Leasetime" -#~ msgstr "Tempo di contratto" - -#, fuzzy -#~ msgid "automatic" -#~ msgstr "statico" - -#~ msgid "AR Support" -#~ msgstr "Supporto AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Dispositivo Wireless Atheros 802.11%s" - -#~ msgid "Background Scan" -#~ msgstr "Scansione in background" - -#~ msgid "Compression" -#~ msgstr "Compressione" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Disabilita Timer Beacon HW" - -#~ msgid "Do not send probe responses" -#~ msgstr "Disabilita Probe-Responses" - -#~ msgid "Fast Frames" -#~ msgstr "Frame veloci" - -#~ msgid "Maximum Rate" -#~ msgstr "Velocità massima" - -#~ msgid "Minimum Rate" -#~ msgstr "Velocità minima" - -#~ msgid "Multicast Rate" -#~ msgstr "Velocità multicast" - -#~ msgid "Separate WDS" -#~ msgstr "WDS separati" - -#~ msgid "Static WDS" -#~ msgstr "WDS statico" - -#~ msgid "Turbo Mode" -#~ msgstr "Modalità turbo" - -#~ msgid "XR Support" -#~ msgstr "Supporto XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Sarà creata una rete aggiuntiva se lasci questo senza spunta." - -#~ msgid "Join Network: Settings" -#~ msgstr "Aggiunta Rete: Impostazioni" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Porta %d" +#~ msgid "IPv4 WAN Status" +#~ msgstr "Stato WAN IPv4" -#~ msgid "VLAN Interface" -#~ msgstr "Interfaccia VLAN" +#~ msgid "IPv6 WAN Status" +#~ msgstr "Stato WAN IPv6" diff --git a/modules/luci-base/po/ja/base.po b/modules/luci-base/po/ja/base.po index 07eeec5ee3..20c2449594 100644 --- a/modules/luci-base/po/ja/base.po +++ b/modules/luci-base/po/ja/base.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2018-05-03 00:23+0900\n" +"PO-Revision-Date: 2018-06-01 02:42+0900\n" "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n" "Language: ja\n" "MIME-Version: 1.0\n" @@ -175,9 +175,6 @@ msgstr "A43C + J43 + A43 + V43" msgid "ADSL" msgstr "ADSL" -msgid "AICCU (SIXXS)" -msgstr "AICCU (SIXXS)" - msgid "ANSI T1.413" msgstr "ANSI T1.413" @@ -211,9 +208,6 @@ msgstr "ATMデãƒã‚¤ã‚¹ç•ªå·" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "Access Concentrator" @@ -321,11 +315,6 @@ msgstr "" msgid "Allowed IPs" msgstr "許å¯ã•ã‚Œã‚‹IP" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "常ã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ ルーターã¨ã—ã¦é€šçŸ¥ã™ã‚‹" @@ -406,11 +395,14 @@ msgstr "アンテナè¨å®š" msgid "Any zone" msgstr "å…¨ã¦ã®ã‚¾ãƒ¼ãƒ³" -msgid "Apply" -msgstr "é©ç”¨" +msgid "Apply request failed with status <code>%h</code>" +msgstr "é©ç”¨ãƒªã‚¯ã‚¨ã‚¹ãƒˆã¯ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ <code>%h</code> ã«ã‚ˆã‚Šå¤±æ•—ã—ã¾ã—ãŸ" + +msgid "Apply unchecked" +msgstr "ãƒã‚§ãƒƒã‚¯ãªã—ã®é©ç”¨" -msgid "Applying changes" -msgstr "変更をé©ç”¨" +msgid "Architecture" +msgstr "アーã‚テクãƒãƒ£" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -426,6 +418,9 @@ msgstr "" msgid "Associated Stations" msgstr "èªè¨¼æ¸ˆã¿ç«¯æœ«" +msgid "Associations" +msgstr "アソシエーション数" + msgid "Auth Group" msgstr "èªè¨¼ã‚°ãƒ«ãƒ¼ãƒ—" @@ -516,9 +511,6 @@ msgstr "無効ãªã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã™!" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -593,12 +585,22 @@ msgstr "変更" msgid "Changes applied." msgstr "変更ãŒé©ç”¨ã•ã‚Œã¾ã—ãŸã€‚" +msgid "Changes have been reverted." +msgstr "変更ã¯å–り消ã•ã‚Œã¾ã—ãŸã€‚" + msgid "Changes the administrator password for accessing the device" msgstr "デãƒã‚¤ã‚¹ã®ç®¡ç†è€…パスワードを変更ã—ã¾ã™" msgid "Channel" msgstr "ãƒãƒ£ãƒãƒ«" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" +"ãƒãƒ£ãƒ³ãƒãƒ« %d ã¯ã€ %s é ˜åŸŸå†…ã§ã¯è¦åˆ¶ã«ã‚ˆã‚Šåˆ©ç”¨ã§ãã¾ã›ã‚“。%d ã¸è‡ªå‹•èª¿æ•´ã•ã‚Œã¾" +"ã—ãŸã€‚" + msgid "Check" msgstr "ãƒã‚§ãƒƒã‚¯" @@ -685,12 +687,15 @@ msgstr "" msgid "Configuration" msgstr "è¨å®š" -msgid "Configuration applied." -msgstr "è¨å®šã‚’é©ç”¨ã—ã¾ã—ãŸã€‚" - msgid "Configuration files will be kept." msgstr "è¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã¯ä¿æŒã•ã‚Œã¾ã™ã€‚" +msgid "Configuration has been applied." +msgstr "è¨å®šãŒé©ç”¨ã•ã‚Œã¾ã—ãŸã€‚" + +msgid "Configuration has been rolled back!" +msgstr "è¨å®šã¯ãƒãƒ¼ãƒ«ãƒãƒƒã‚¯ã•ã‚Œã¾ã—ãŸï¼" + msgid "Confirmation" msgstr "確èª" @@ -703,12 +708,18 @@ msgstr "接続ä¸" msgid "Connection Limit" msgstr "接続制é™" -msgid "Connection to server fails when TLS cannot be used" -msgstr "TLSãŒä½¿ç”¨ã§ããªã„ã¨ãã€ã‚µãƒ¼ãƒãƒ¼ã¸ã®æŽ¥ç¶šã¯å¤±æ•—ã—ã¾ã™ã€‚" - msgid "Connections" msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯æŽ¥ç¶š" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" +"è¨å®šã®å¤‰æ›´ã‚’é©ç”¨å¾Œã€ãƒ‡ãƒã‚¤ã‚¹ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’回復ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ã‚‚ã— IP アド" +"レスや無線ã®ã‚»ã‚ュリティèªè¨¼æƒ…å ±ãªã©ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯é–¢é€£ã®è¨å®šã‚’変更ã—ãŸå ´åˆã€" +"å†æŽ¥ç¶šãŒå¿…è¦ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。" + msgid "Country" msgstr "国" @@ -841,9 +852,6 @@ msgstr "デフォルト ゲートウェイ" msgid "Default is stateless + stateful" msgstr "デフォルト㯠ステートレス + ステートフル ã§ã™ã€‚" -msgid "Default route" -msgstr "デフォルト ルート" - msgid "Default state" msgstr "標準状態" @@ -885,6 +893,9 @@ msgstr "デãƒã‚¤ã‚¹ã‚’å†èµ·å‹•ä¸ã§ã™..." msgid "Device unreachable" msgstr "デãƒã‚¤ã‚¹ã«åˆ°é”ã§ãã¾ã›ã‚“" +msgid "Device unreachable!" +msgstr "デãƒã‚¤ã‚¹ã«åˆ°é”ã§ãã¾ã›ã‚“ï¼" + msgid "Diagnostics" msgstr "診æ–機能" @@ -919,6 +930,9 @@ msgstr "無効(デフォルト)" msgid "Discard upstream RFC1918 responses" msgstr "RFC1918ã®å¿œç”ã‚’ç ´æ£„ã—ã¾ã™" +msgid "Dismiss" +msgstr "è¦å‘Šã®é™¤åŽ»" + msgid "Displaying only packages containing" msgstr "å³è¨˜ã®æ–‡å—列をå«ã‚“ã パッケージã®ã¿ã‚’表示ä¸" @@ -1180,6 +1194,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "%d 秒以内ã®é©ç”¨ã‚’確èªã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ãƒãƒ¼ãƒ«ãƒãƒƒã‚¯ä¸ã§ã™..." + msgid "File" msgstr "ファイル" @@ -1378,9 +1395,6 @@ msgstr "å†èµ·å‹•" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "ãƒãƒ¼ãƒˆãƒ“ート" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1438,8 +1452,8 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "IPv4 ファイアウォール" -msgid "IPv4 WAN Status" -msgstr "IPv4 WAN ステータス" +msgid "IPv4 Upstream" +msgstr "IPv4 アップストリーム" msgid "IPv4 address" msgstr "IPv4 アドレス" @@ -1489,15 +1503,12 @@ msgstr "IPv6 è¨å®š" msgid "IPv6 ULA-Prefix" msgstr "IPv6 ULA-プレフィクス" -msgid "IPv6 WAN Status" -msgstr "IPv6 WAN ステータス" +msgid "IPv6 Upstream" +msgstr "IPv6 アップストリーム" msgid "IPv6 address" msgstr "IPv6 アドレス" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2092,9 +2103,6 @@ msgstr "NT ドメイン" msgid "NTP server candidates" msgstr "NTPサーãƒãƒ¼å€™è£œ" -msgid "NTP sync time-out" -msgstr "NTP åŒæœŸã‚¿ã‚¤ãƒ アウト" - msgid "Name" msgstr "åå‰" @@ -2220,6 +2228,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "消ç¯æ™‚é–“" @@ -2271,12 +2282,6 @@ msgstr "削除ã•ã‚Œã‚‹ã‚ªãƒ—ション" msgid "Optional" msgstr "オプション" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2759,9 +2764,6 @@ msgstr "IPv6-アドレスã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆ" msgid "Request IPv6-prefix of length" msgstr "リクエストã™ã‚‹IPv6-プレフィクス長" -msgid "Require TLS" -msgstr "TLSãŒå¿…è¦" - msgid "Required" msgstr "å¿…é ˆ" @@ -2822,6 +2824,15 @@ msgstr "パスワードを表示ã™ã‚‹/éš ã™" msgid "Revert" msgstr "å…ƒã«æˆ»ã™" +msgid "Revert changes" +msgstr "変更ã®å–り消ã—" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "å–り消ã—ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã¯ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ <code>%h</code> ã«ã‚ˆã‚Šå¤±æ•—ã—ã¾ã—ãŸ" + +msgid "Reverting configuration…" +msgstr "è¨å®šã‚’å…ƒã«æˆ»ã—ã¦ã„ã¾ã™..." + msgid "Root" msgstr "ルート" @@ -2837,9 +2848,6 @@ msgstr "" msgid "Route type" msgstr "ルート タイプ" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "ルーター アドãƒã‚¿ã‚¤ã‚ºãƒ¡ãƒ³ãƒˆ-サービス" @@ -2865,14 +2873,6 @@ msgstr "ファイルシステムãƒã‚§ãƒƒã‚¯ã‚’è¡Œã†" msgid "SHA256" msgstr "SHA256" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "SNR" @@ -2900,9 +2900,6 @@ msgstr "ä¿å˜" msgid "Save & Apply" msgstr "ä¿å˜ & é©ç”¨" -msgid "Save & Apply" -msgstr "ä¿å˜ & é©ç”¨" - msgid "Scan" msgstr "スã‚ャン" @@ -2931,17 +2928,6 @@ msgstr "クライアントã®åˆ†é›¢" msgid "Server Settings" msgstr "サーãƒãƒ¼è¨å®š" -msgid "Server password" -msgstr "サーãƒãƒ¼ パスワード" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "サーãƒãƒ¼ ユーザーå" - msgid "Service Name" msgstr "サービスå" @@ -3037,9 +3023,6 @@ msgstr "ソート" msgid "Source" msgstr "é€ä¿¡å…ƒ" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "デãƒã‚¤ã‚¹ãŒæŽ¥ç¶šã™ã‚‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’è¨å®šã—ã¾ã™" @@ -3078,6 +3061,9 @@ msgstr "開始" msgid "Start priority" msgstr "å„ªå…ˆé †ä½" +msgid "Starting configuration apply…" +msgstr "è¨å®šã®é©ç”¨ã‚’開始ã—ã¦ã„ã¾ã™..." + msgid "Startup" msgstr "スタートアップ" @@ -3240,6 +3226,22 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "è¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã¯ä»¥ä¸‹ã®ã‚¨ãƒ©ãƒ¼ã«ã‚ˆã‚Šèªã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" +"未é©ç”¨ã®å¤‰æ›´ã‚’é©ç”¨å¾Œã€ãƒ‡ãƒã‚¤ã‚¹ã¯ %d 秒以内ã«å®Œäº†ã§ããªã‹ã£ãŸå¯èƒ½æ€§ãŒã‚ã‚Šã¾" +"ã™ã€‚ã“ã‚Œã¯ã€å®‰å…¨ä¸Šã®ç†ç”±ã«ã‚ˆã‚Šãƒãƒ¼ãƒ«ãƒãƒƒã‚¯ã•ã‚Œã‚‹è¨å®šã«èµ·å› ã™ã‚‹ã‚‚ã®ã§ã™ã€‚ãã‚Œ" +"ã§ã‚‚è¨å®šã®å¤‰æ›´ãŒæ£ã—ã„ã¨æ€ã†å ´åˆã¯ã€ãƒã‚§ãƒƒã‚¯ãªã—ã®å¤‰æ›´ã®é©ç”¨ã‚’è¡Œã£ã¦ãã ã•" +"ã„。もã—ãã¯ã€å†åº¦é©ç”¨ã‚’試行ã™ã‚‹å‰ã«ã“ã®è¦å‘Šã‚’除去ã—ã¦è¨å®šå†…容ã®ç·¨é›†ã‚’è¡Œã†" +"ã‹ã€ç¾åœ¨å‹•ä½œã—ã¦ã„ã‚‹è¨å®šçŠ¶æ³ã‚’ç¶æŒã™ã‚‹ãŸã‚ã«æœªé©ç”¨ã®å¤‰æ›´ã‚’å–り消ã—ã¦ãã ã•" +"ã„。" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3264,9 +3266,6 @@ msgstr "" "イズã§ã™ã€‚オリジナルファイルã¨æ¯”較ã—ã€æ•´åˆæ€§ã‚’確èªã—ã¦ãã ã•ã„。<br />\"続行" "\"ボタンをクリックã™ã‚‹ã¨ã€æ›´æ–°å‡¦ç†ã‚’開始ã—ã¾ã™ã€‚" -msgid "The following changes have been committed" -msgstr "以下ã®å¤‰æ›´ãŒé©ç”¨ã•ã‚Œã¾ã—ãŸ" - msgid "The following changes have been reverted" msgstr "以下ã®å¤‰æ›´ãŒå–り消ã•ã‚Œã¾ã—ãŸ" @@ -3332,11 +3331,6 @@ msgstr "" "ã‚Œã°ãªã‚‰ãªã„å ´åˆãŒã‚ã‚Šã¾ã™ã€‚" msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3347,8 +3341,8 @@ msgstr "" msgid "There are no active leases." msgstr "リースä¸ã®IPアドレスã¯ã‚ã‚Šã¾ã›ã‚“。" -msgid "There are no pending changes to apply!" -msgstr "é©ç”¨ãŒæœªå®Œäº†ã®å¤‰æ›´ã¯ã‚ã‚Šã¾ã›ã‚“ï¼" +msgid "There are no changes to apply." +msgstr "é©ç”¨ã™ã‚‹å¤‰æ›´ã¯ã‚ã‚Šã¾ã›ã‚“。" msgid "There are no pending changes to revert!" msgstr "復元ãŒæœªå®Œäº†ã®å¤‰æ›´ã¯ã‚ã‚Šã¾ã›ã‚“ï¼" @@ -3504,15 +3498,6 @@ msgstr "トンãƒãƒ«ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹" msgid "Tunnel Link" msgstr "トンãƒãƒ«ãƒªãƒ³ã‚¯" -msgid "Tunnel broker protocol" -msgstr "トンãƒãƒ«ãƒ–ãƒãƒ¼ã‚«ãƒ¼ プãƒãƒˆã‚³ãƒ«" - -msgid "Tunnel setup server" -msgstr "トンãƒãƒ«ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ— サーãƒãƒ¼" - -msgid "Tunnel type" -msgstr "トンãƒãƒ«ã‚¿ã‚¤ãƒ—" - msgid "Tx-Power" msgstr "é€ä¿¡é›»åŠ›" @@ -3693,12 +3678,6 @@ msgstr "ベンダー" msgid "Vendor Class to send when requesting DHCP" msgstr "DHCPリクエストé€ä¿¡æ™‚ã®ãƒ™ãƒ³ãƒ€ãƒ¼ã‚¯ãƒ©ã‚¹ã‚’è¨å®š" -msgid "Verbose" -msgstr "詳細" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "確èª" @@ -3731,16 +3710,15 @@ msgstr "" "hostapd (アクセスãƒã‚¤ãƒ³ãƒˆåŠã³ã‚¢ãƒ‰ãƒ›ãƒƒã‚¯) ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾" "ã™ã€‚" -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "変更をé©ç”¨ä¸ã§ã™..." msgid "Waiting for command to complete..." msgstr "コマンド実行ä¸ã§ã™..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "è¨å®šã‚’é©ç”¨ä¸ã§ã™... %d 秒" + msgid "Waiting for device..." msgstr "デãƒã‚¤ã‚¹ã‚’èµ·å‹•ä¸ã§ã™..." @@ -3755,12 +3733,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "帯域幅" @@ -3905,9 +3877,6 @@ msgstr "kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "ãƒãƒ¼ã‚«ãƒ« <abbr title=\"Domain Name System\">DNS</abbr>ファイル" -msgid "minimum 1280, maximum 1480" -msgstr "最å°å€¤ 1280ã€æœ€å¤§å€¤ 1480" - msgid "minutes" msgstr "分" diff --git a/modules/luci-base/po/ko/base.po b/modules/luci-base/po/ko/base.po index e4f77c78f5..d7b33cf0d7 100644 --- a/modules/luci-base/po/ko/base.po +++ b/modules/luci-base/po/ko/base.po @@ -168,9 +168,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -204,9 +201,6 @@ msgstr "" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "" @@ -311,11 +305,6 @@ msgstr "" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -394,10 +383,13 @@ msgstr "" msgid "Any zone" msgstr "" -msgid "Apply" -msgstr "ì ìš©" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" + +msgid "Apply unchecked" +msgstr "" -msgid "Applying changes" +msgid "Architecture" msgstr "" msgid "" @@ -414,6 +406,9 @@ msgstr "" msgid "Associated Stations" msgstr "ì—°ê²°ëœ station 들" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -504,9 +499,6 @@ msgstr "" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -580,12 +572,20 @@ msgstr "변경 사í•" msgid "Changes applied." msgstr "" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "장비 ì ‘ê·¼ì„ ìœ„í•œ ê´€ë¦¬ìž ì•”í˜¸ë¥¼ 변경합니다" msgid "Channel" msgstr "" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "" @@ -664,10 +664,13 @@ msgstr "" msgid "Configuration" msgstr "ì„¤ì •" -msgid "Configuration applied." +msgid "Configuration files will be kept." msgstr "" -msgid "Configuration files will be kept." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" msgstr "" msgid "Confirmation" @@ -682,12 +685,15 @@ msgstr "ì—°ê²° 시간" msgid "Connection Limit" msgstr "" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "ì—°ê²°" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "" @@ -818,9 +824,6 @@ msgstr "" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "기본 ìƒíƒœ" @@ -863,6 +866,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "진단" @@ -897,6 +903,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -1149,6 +1158,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "" @@ -1342,9 +1354,6 @@ msgstr "" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1403,8 +1412,8 @@ msgstr "" msgid "IPv4 Firewall" msgstr "IPv4 방화벽" -msgid "IPv4 WAN Status" -msgstr "IPv4 WAN ìƒíƒœ" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "IPv4 주소" @@ -1454,13 +1463,10 @@ msgstr "IPv6 ì„¤ì •" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" -msgstr "IPv6 WAN ìƒíƒœ" - -msgid "IPv6 address" +msgid "IPv6 Upstream" msgstr "" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" +msgid "IPv6 address" msgstr "" msgid "IPv6 assignment hint" @@ -2030,9 +2036,6 @@ msgstr "" msgid "NTP server candidates" msgstr "NTP 서버 목ë¡" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "ì´ë¦„" @@ -2156,6 +2159,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2207,12 +2213,6 @@ msgstr "ì‚ì œëœ option" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2677,9 +2677,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2738,6 +2735,15 @@ msgstr "암호 ë³´ì´ê¸°/숨기기" msgid "Revert" msgstr "변경 취소" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2753,9 +2759,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2781,14 +2784,6 @@ msgstr "" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2816,9 +2811,6 @@ msgstr "ì €ìž¥" msgid "Save & Apply" msgstr "ì €ìž¥ & ì ìš©" -msgid "Save & Apply" -msgstr "ì €ìž¥ & ì ìš©" - msgid "Scan" msgstr "Scan 하기" @@ -2845,17 +2837,6 @@ msgstr "" msgid "Server Settings" msgstr "서버 ì„¤ì •" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "" @@ -2948,9 +2929,6 @@ msgstr "순서" msgid "Source" msgstr "" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2989,6 +2967,9 @@ msgstr "시작" msgid "Start priority" msgstr "시작 ìš°ì„ ìˆœìœ„" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "시작 프로그램" @@ -3147,6 +3128,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3163,9 +3154,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "다ìŒì˜ 변경 사í•ë“¤ì´ 취소ë˜ì—ˆìŠµë‹ˆë‹¤" @@ -3224,11 +3212,6 @@ msgid "" msgstr "" msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3236,7 +3219,7 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3381,15 +3364,6 @@ msgstr "" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "" @@ -3570,12 +3544,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "DHCP ìš”ì²ì‹œ ì „ì†¡í• Vendor Class" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "" @@ -3605,16 +3573,15 @@ msgid "" "and ad-hoc mode) to be installed." msgstr "" -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "변경 사í•ì´ ì ìš©ë˜ê¸°ë¥¼ 기다리는 중입니다..." msgid "Waiting for command to complete..." msgstr "실행한 ëª…ë ¹ì´ ë나기를 기다리는 중입니다..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3629,12 +3596,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3776,9 +3737,6 @@ msgstr "" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "local <abbr title=\"Domain Name System\">DNS</abbr> 파ì¼" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3854,5 +3812,17 @@ msgstr "" msgid "« Back" msgstr "" +#~ msgid "IPv4 WAN Status" +#~ msgstr "IPv4 WAN ìƒíƒœ" + +#~ msgid "IPv6 WAN Status" +#~ msgstr "IPv6 WAN ìƒíƒœ" + +#~ msgid "Apply" +#~ msgstr "ì ìš©" + +#~ msgid "Save & Apply" +#~ msgstr "ì €ìž¥ & ì ìš©" + #~ msgid "Leasetime" #~ msgstr "임대 시간" diff --git a/modules/luci-base/po/ms/base.po b/modules/luci-base/po/ms/base.po index d5c889580b..be6d707279 100644 --- a/modules/luci-base/po/ms/base.po +++ b/modules/luci-base/po/ms/base.po @@ -165,9 +165,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -201,9 +198,6 @@ msgstr "" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "" @@ -306,11 +300,6 @@ msgstr "" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -389,11 +378,14 @@ msgstr "" msgid "Any zone" msgstr "" -msgid "Apply" -msgstr "Melaksanakan" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" + +msgid "Apply unchecked" +msgstr "" -msgid "Applying changes" -msgstr "Melaksanakan perubahan" +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -409,6 +401,9 @@ msgstr "" msgid "Associated Stations" msgstr "Associated Stesen" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -499,9 +494,6 @@ msgstr "" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -570,12 +562,20 @@ msgstr "Laman" msgid "Changes applied." msgstr "Laman diterapkan." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "" msgid "Channel" msgstr "Saluran" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "" @@ -646,10 +646,13 @@ msgstr "" msgid "Configuration" msgstr "Konfigurasi" -msgid "Configuration applied." +msgid "Configuration files will be kept." msgstr "" -msgid "Configuration files will be kept." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" msgstr "" msgid "Confirmation" @@ -664,10 +667,13 @@ msgstr "" msgid "Connection Limit" msgstr "Sambungan Batas" -msgid "Connection to server fails when TLS cannot be used" +msgid "Connections" msgstr "" -msgid "Connections" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." msgstr "" msgid "Country" @@ -796,9 +802,6 @@ msgstr "" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "" @@ -838,6 +841,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "" @@ -870,6 +876,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -1121,6 +1130,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "" @@ -1314,9 +1326,6 @@ msgstr "Menutup" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1374,7 +1383,7 @@ msgstr "" msgid "IPv4 Firewall" msgstr "" -msgid "IPv4 WAN Status" +msgid "IPv4 Upstream" msgstr "" msgid "IPv4 address" @@ -1425,15 +1434,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" +msgid "IPv6 Upstream" msgstr "" msgid "IPv6 address" msgstr "" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2010,9 +2016,6 @@ msgstr "" msgid "NTP server candidates" msgstr "" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "Nama" @@ -2136,6 +2139,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2186,12 +2192,6 @@ msgstr "" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2651,9 +2651,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2712,6 +2709,15 @@ msgstr "" msgid "Revert" msgstr "Kembali" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2727,9 +2733,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2755,14 +2758,6 @@ msgstr "" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2790,9 +2785,6 @@ msgstr "Simpan" msgid "Save & Apply" msgstr "Simpan & Melaksanakan" -msgid "Save & Apply" -msgstr "" - msgid "Scan" msgstr "Scan" @@ -2819,17 +2811,6 @@ msgstr "Pisahkan Pelanggan" msgid "Server Settings" msgstr "" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "" @@ -2922,9 +2903,6 @@ msgstr "" msgid "Source" msgstr "Sumber" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2963,6 +2941,9 @@ msgstr "Mula" msgid "Start priority" msgstr "" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "" @@ -3116,6 +3097,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "Fail peranti memori atau partisyen, (contohnya: /dev/sda)" @@ -3136,9 +3127,6 @@ msgstr "" "integriti data.<br /> Klik butang terus di bawah untuk memulakan prosedur " "flash." -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "Laman berikut telah kembali" @@ -3197,11 +3185,6 @@ msgstr "" "bergantung pada tetapan anda." msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3211,7 +3194,7 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3352,15 +3335,6 @@ msgstr "" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "" @@ -3533,12 +3507,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "" @@ -3570,16 +3538,15 @@ msgstr "" "WPA-Enkripsi memerlukan pemohan wpa (untuk mod pelanggan) atau hostapd " "(untuk AP dan mod ad-hoc) yang akan dipasangkan." -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3594,12 +3561,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3735,9 +3696,6 @@ msgstr "" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "Fail DNS tempatan" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3813,6 +3771,12 @@ msgstr "" msgid "« Back" msgstr "« Kembali" +#~ msgid "Apply" +#~ msgstr "Melaksanakan" + +#~ msgid "Applying changes" +#~ msgstr "Melaksanakan perubahan" + #~ msgid "Action" #~ msgstr "Aksi" diff --git a/modules/luci-base/po/no/base.po b/modules/luci-base/po/no/base.po index 1805d8e990..7212e4b80e 100644 --- a/modules/luci-base/po/no/base.po +++ b/modules/luci-base/po/no/base.po @@ -167,9 +167,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -210,9 +207,6 @@ msgstr "<abbr title=\"Asynchronous Transfer Mode\">ATM</abbr> enhetsnummer" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "Tilgangskonsentrator" @@ -315,11 +309,6 @@ msgstr "Tillat oppstrøms svar i 127.0.0.0/8 nettet, f.eks for RBL tjenester" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -398,11 +387,14 @@ msgstr "Antennekonfigurasjon" msgid "Any zone" msgstr "Alle soner" -msgid "Apply" -msgstr "Bruk" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" + +msgid "Apply unchecked" +msgstr "" -msgid "Applying changes" -msgstr "Utfører endringer" +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -418,6 +410,9 @@ msgstr "" msgid "Associated Stations" msgstr "Tilkoblede Klienter" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -508,9 +503,6 @@ msgstr "Ugyldig adresse oppgitt!" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -582,12 +574,20 @@ msgstr "Endringer" msgid "Changes applied." msgstr "Endringer utført." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Endrer administrator passordet for tilgang til enheten" msgid "Channel" msgstr "Kanal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Kontroller" @@ -668,12 +668,15 @@ msgstr "" msgid "Configuration" msgstr "Konfigurasjon" -msgid "Configuration applied." -msgstr "Konfigurasjons endring utført." - msgid "Configuration files will be kept." msgstr "Konfigurasjonsfiler vil bli bevart." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Bekreftelse" @@ -686,12 +689,15 @@ msgstr "Tilkoblet" msgid "Connection Limit" msgstr "Tilkoblingsgrense (antall)" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "Tilkoblinger" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Land" @@ -820,9 +826,6 @@ msgstr "Standard gateway" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "Standard tilstand" @@ -864,6 +867,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Nettverksdiagnostikk" @@ -898,6 +904,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "Forkast oppstrøms RFC1918 svar" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Viser bare pakker som inneholder" @@ -1157,6 +1166,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Fil" @@ -1351,9 +1363,6 @@ msgstr "SlÃ¥ av" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1413,8 +1422,8 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "IPv4 Brannmur" -msgid "IPv4 WAN Status" -msgstr "IPv4 WAN Status" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "IPv4 adresse" @@ -1464,15 +1473,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" -msgstr "IPv6 WAN Status" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "IPv6 adresse" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2055,9 +2061,6 @@ msgstr "" msgid "NTP server candidates" msgstr "NTP server kandidater" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "Navn" @@ -2181,6 +2184,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Forsinkelse ved tilstand Av" @@ -2232,12 +2238,6 @@ msgstr "Innstilling fjernet" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2714,9 +2714,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2775,6 +2772,15 @@ msgstr "Vis/Skjul passord" msgid "Revert" msgstr "Tilbakestill" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Rot" @@ -2790,9 +2796,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2818,14 +2821,6 @@ msgstr "Kjør filsystem sjekk" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2853,9 +2848,6 @@ msgstr "Lagre" msgid "Save & Apply" msgstr "Lagre & Aktiver" -msgid "Save & Apply" -msgstr "Lagre & Aktiver" - msgid "Scan" msgstr "Skann" @@ -2884,17 +2876,6 @@ msgstr "Separerte Klienter" msgid "Server Settings" msgstr "Server Innstillinger" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "Tjeneste navn" @@ -2991,9 +2972,6 @@ msgstr "Sortering" msgid "Source" msgstr "Kilde" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "Hvor lagrings enheten blir tilsluttet filsystemet (f.eks. /mnt/sda1)" @@ -3033,6 +3011,9 @@ msgstr "Start" msgid "Start priority" msgstr "Start prioritet" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Oppstart" @@ -3198,6 +3179,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3222,9 +3213,6 @@ msgstr "" "sammenlign dem med den opprinnelige filen for Ã¥ sikre dataintegriteten.<br /" "> Klikk \"Fortsett\" nedenfor for Ã¥ starte flash prosedyren." -msgid "The following changes have been committed" -msgstr "Følgende endringer er foretatt" - msgid "The following changes have been reverted" msgstr "Følgende endringer er forkastet" @@ -3293,11 +3281,6 @@ msgstr "" "datamaskinen din for Ã¥ nÃ¥ enheten pÃ¥ nytt. (avhengig av innstillingene dine)" msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3307,8 +3290,8 @@ msgstr "" msgid "There are no active leases." msgstr "Det er ingen aktive leieavtaler." -msgid "There are no pending changes to apply!" -msgstr "Det finnes ingen endringer som kan utføres!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Det finnes ingen endriger Ã¥ reversere!" @@ -3459,15 +3442,6 @@ msgstr "Tunnel grensesnitt" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "Tx-Styrke" @@ -3647,12 +3621,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "Leverandør klasse som sendes ved DHCP spørring" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "Bekreft" @@ -3684,16 +3652,15 @@ msgstr "" "WPA-Kryptering krever at wpa_supplicant (for klient-modus) eller hostapd " "(for AP og ad-hoc-modus) er installert." -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "Venter pÃ¥ at endringer utføres..." msgid "Waiting for command to complete..." msgstr "Venter pÃ¥ at kommando fullføres..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3708,12 +3675,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3857,9 +3818,6 @@ msgstr "kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "lokal <abbr title=\"Domain Navn System\">DNS</abbr>-fil" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3935,6 +3893,30 @@ msgstr "ja" msgid "« Back" msgstr "« Tilbake" +#~ msgid "IPv4 WAN Status" +#~ msgstr "IPv4 WAN Status" + +#~ msgid "IPv6 WAN Status" +#~ msgstr "IPv6 WAN Status" + +#~ msgid "Apply" +#~ msgstr "Bruk" + +#~ msgid "Applying changes" +#~ msgstr "Utfører endringer" + +#~ msgid "Configuration applied." +#~ msgstr "Konfigurasjons endring utført." + +#~ msgid "Save & Apply" +#~ msgstr "Lagre & Aktiver" + +#~ msgid "The following changes have been committed" +#~ msgstr "Følgende endringer er foretatt" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Det finnes ingen endringer som kan utføres!" + #~ msgid "Action" #~ msgstr "Handling" diff --git a/modules/luci-base/po/pl/base.po b/modules/luci-base/po/pl/base.po index 390e489e29..bc5734bd8a 100644 --- a/modules/luci-base/po/pl/base.po +++ b/modules/luci-base/po/pl/base.po @@ -162,8 +162,8 @@ msgid "" "<br/>Note: you need to manually restart the cron service if the crontab file " "was empty before editing." msgstr "" -"<br/>Uwaga: musisz rÄ™cznie zrestartować usÅ‚ugÄ™ cron, jeÅ›li plik crontab " -"byÅ‚ pusty przed edycjÄ…." +"<br/>Uwaga: musisz rÄ™cznie zrestartować usÅ‚ugÄ™ cron, jeÅ›li plik crontab byÅ‚ " +"pusty przed edycjÄ…." msgid "A43C + J43 + A43" msgstr "" @@ -174,9 +174,6 @@ msgstr "" msgid "ADSL" msgstr "ADSL" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -205,9 +202,9 @@ msgid "" "Linux network interfaces which can be used in conjunction with DHCP or PPP " "to dial into the provider network." msgstr "" -"Mosty ATM eksponujÄ… enkapsulowanÄ… sieć Ethernet w poÅ‚Ä…czeniach AAL5 jako wirtualne " -"interfejsy sieciowe systemu Linux, które mogÄ… być używane w poÅ‚Ä…czeniu z protokoÅ‚em " -"DHCP lub PPP w celu polÄ…czenia siÄ™ z sieciÄ… dostawcy." +"Mosty ATM eksponujÄ… enkapsulowanÄ… sieć Ethernet w poÅ‚Ä…czeniach AAL5 jako " +"wirtualne interfejsy sieciowe systemu Linux, które mogÄ… być używane w " +"poÅ‚Ä…czeniu z protokoÅ‚em DHCP lub PPP w celu polÄ…czenia siÄ™ z sieciÄ… dostawcy." msgid "ATM device number" msgstr "Numer urzÄ…dzenia ATM" @@ -215,9 +212,6 @@ msgstr "Numer urzÄ…dzenia ATM" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - # co to takiego? msgid "Access Concentrator" msgstr "Koncentrator dostÄ™powy ATM" @@ -290,7 +284,8 @@ msgstr "Alarm" msgid "" "Allocate IP addresses sequentially, starting from the lowest available " "address" -msgstr "Przydziel sekwencyjnie adresy IP, zaczynajÄ…c od najmniejszego dostÄ™pnego" +msgstr "" +"Przydziel sekwencyjnie adresy IP, zaczynajÄ…c od najmniejszego dostÄ™pnego" msgid "Allocate IP sequentially" msgstr "Przydzielaj adresy IP po kolei" @@ -311,7 +306,8 @@ msgid "Allow localhost" msgstr "Pozwól tylko sobie (localhost)" msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "Zezwalaj zdalnym hostom na Å‚Ä…czenie siÄ™ z lokalnie przekazywanymi portami SSH" +msgstr "" +"Zezwalaj zdalnym hostom na Å‚Ä…czenie siÄ™ z lokalnie przekazywanymi portami SSH" msgid "Allow root logins with password" msgstr "Zezwól na logowanie roota przy pomocy hasÅ‚a" @@ -327,11 +323,6 @@ msgstr "" msgid "Allowed IPs" msgstr "Dozwolone adresy IP" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "Zawsze rozgÅ‚aszaj domyÅ›lny router" @@ -410,11 +401,14 @@ msgstr "Ustawienia anteny" msgid "Any zone" msgstr "Dowolna strefa" -msgid "Apply" -msgstr "Zatwierdź" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Wprowadzam zmiany" +msgid "Apply unchecked" +msgstr "" + +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -430,6 +424,9 @@ msgstr "" msgid "Associated Stations" msgstr "PoÅ‚Ä…czone stacje" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -521,9 +518,6 @@ msgstr "Wprowadzono zÅ‚y adres" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -596,12 +590,20 @@ msgstr "Zmiany" msgid "Changes applied." msgstr "Zmiany zostaÅ‚y zastosowane." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Zmienia hasÅ‚o administratora" msgid "Channel" msgstr "KanaÅ‚" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Sprawdź" @@ -678,17 +680,24 @@ msgid "" "workaround might cause interoperability issues and reduced robustness of key " "negotiation especially in environments with heavy traffic load." msgstr "" -"Komplikuje atak ponownej instalacji klucza po stronie klienta, wyÅ‚Ä…czajÄ…c retransmisjÄ™ ramek klucza EAPOL, które sÄ… używane do instalowania kluczy. To obejÅ›cie może powodować problemy z interoperacyjnoÅ›ciÄ… i zmniejszonÄ… odporność kluczowych negocjacji, szczególnie w Å›rodowiskach o dużym natężeniu ruchu." +"Komplikuje atak ponownej instalacji klucza po stronie klienta, wyÅ‚Ä…czajÄ…c " +"retransmisjÄ™ ramek klucza EAPOL, które sÄ… używane do instalowania kluczy. To " +"obejÅ›cie może powodować problemy z interoperacyjnoÅ›ciÄ… i zmniejszonÄ… " +"odporność kluczowych negocjacji, szczególnie w Å›rodowiskach o dużym " +"natężeniu ruchu." msgid "Configuration" msgstr "Konfiguracja" -msgid "Configuration applied." -msgstr "Konfiguracja zostaÅ‚a zastosowana." - msgid "Configuration files will be kept." msgstr "Pliki konfiguracyjne zostanÄ… zachowane." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Potwierdzenie" @@ -701,12 +710,15 @@ msgstr "PoÅ‚Ä…czony" msgid "Connection Limit" msgstr "Limit poÅ‚Ä…czeÅ„" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "PoÅ‚Ä…czenia" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Kraj" @@ -836,9 +848,6 @@ msgstr "Brama domyÅ›lna" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "Stan domyÅ›lny" @@ -881,6 +890,9 @@ msgstr "UrzÄ…dzenie jest uruchamiane ponownie ..." msgid "Device unreachable" msgstr "UrzÄ…dzenie nieosiÄ…galne" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnostyka" @@ -915,6 +927,9 @@ msgstr "WyÅ‚Ä…czone (domyÅ›lnie)" msgid "Discard upstream RFC1918 responses" msgstr "Odrzuć wychodzÄ…ce odpowiedzi RFC1918" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "PokazujÄ™ tylko paczki zawierajÄ…ce" @@ -1037,7 +1052,9 @@ msgstr "WÅ‚Ä…cz" msgid "" "Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> " "snooping" -msgstr "WÅ‚Ä…cz nasÅ‚uchiwanie <abbr title=\"Internet Group Management Protocol\">IGMP</abbr>" +msgstr "" +"WÅ‚Ä…cz nasÅ‚uchiwanie <abbr title=\"Internet Group Management Protocol\">IGMP</" +"abbr>" msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgstr "WÅ‚Ä…cz <abbr title=\"Spanning Tree Protocol\">STP</abbr>" @@ -1102,8 +1119,9 @@ msgstr "WÅ‚Ä…cz nasÅ‚uchiwanie IGMP na tym moÅ›cie" msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" -msgstr "Aktywuje szybki roaming pomiÄ™dzy punktami dostÄ™powymi, które należą " -"do tej samej domeny" +msgstr "" +"Aktywuje szybki roaming pomiÄ™dzy punktami dostÄ™powymi, które należą do tej " +"samej domeny" msgid "Enables the Spanning Tree Protocol on this bridge" msgstr "" @@ -1182,6 +1200,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Plik" @@ -1378,9 +1399,6 @@ msgstr "RozÅ‚Ä…cz" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1443,8 +1461,8 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "Firewall IPv4" -msgid "IPv4 WAN Status" -msgstr "Status IPv4 WAN" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "Adres IPv4" @@ -1494,15 +1512,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" -msgstr "Status WAN IPv6" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "Adres IPv6" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -1623,7 +1638,8 @@ msgid "Install" msgstr "Instaluj" msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "Zainstaluj iputils-traceroute6 w celu skorzystania z traceroute dla iPv6" +msgstr "" +"Zainstaluj iputils-traceroute6 w celu skorzystania z traceroute dla iPv6" msgid "Install package %q" msgstr "Instaluj pakiet %q" @@ -1958,8 +1974,8 @@ msgid "" "Make sure to clone the root filesystem using something like the commands " "below:" msgstr "" -"Upewnij siÄ™, że klonujesz główny system plików, używajÄ…c czegoÅ› podobnego " -"do poleceÅ„ poniżej:" +"Upewnij siÄ™, że klonujesz główny system plików, używajÄ…c czegoÅ› podobnego do " +"poleceÅ„ poniżej:" msgid "Manual" msgstr "" @@ -2096,9 +2112,6 @@ msgstr "" msgid "NTP server candidates" msgstr "Lista serwerów NTP" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "Nazwa" @@ -2222,6 +2235,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "ZwÅ‚oka wyÅ‚Ä…czenia" @@ -2272,12 +2288,6 @@ msgstr "UsuniÄ™to wartość" msgid "Optional" msgstr "Opcjonalny" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2755,9 +2765,6 @@ msgstr "Zażądaj adresu IPv6" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "Wymagaj TLS" - msgid "Required" msgstr "Wymagany" @@ -2816,6 +2823,15 @@ msgstr "OdsÅ‚oÅ„/Ukryj hasÅ‚o" msgid "Revert" msgstr "Przywróć" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Root" @@ -2831,9 +2847,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2860,14 +2873,6 @@ msgstr "Sprawdź czy system plików nie zawiera bÅ‚Ä™dów" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "SNR" @@ -2895,9 +2900,6 @@ msgstr "Zapisz" msgid "Save & Apply" msgstr "Zapisz i zastosuj" -msgid "Save & Apply" -msgstr "Zapisz i zastosuj" - msgid "Scan" msgstr "Skanuj" @@ -2927,17 +2929,6 @@ msgstr "Rozdziel klientów" msgid "Server Settings" msgstr "Ustawienia serwera" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "Nazwa serwisu" @@ -2951,8 +2942,8 @@ msgid "" "Set interface properties regardless of the link carrier (If set, carrier " "sense events do not invoke hotplug handlers)." msgstr "" -"Ustaw wÅ‚aÅ›ciwoÅ›ci interfejsu, niezależnie od operatora Å‚Ä…cza (nie wpÅ‚ywa" -" na programy operatora które ustanawiajÄ… poÅ‚Ä…czenie)." +"Ustaw wÅ‚aÅ›ciwoÅ›ci interfejsu, niezależnie od operatora Å‚Ä…cza (nie wpÅ‚ywa na " +"programy operatora które ustanawiajÄ… poÅ‚Ä…czenie)." #, fuzzy msgid "Set up Time Synchronization" @@ -3036,9 +3027,6 @@ msgstr "Posortuj" msgid "Source" msgstr "ŹródÅ‚o" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "Podaje katalog do którego jest podÅ‚Ä…czone urzÄ…dzenie" @@ -3080,6 +3068,9 @@ msgstr "Uruchomienie" msgid "Start priority" msgstr "Priorytet uruchomienia" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Autostart" @@ -3247,6 +3238,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3273,9 +3274,6 @@ msgstr "" "upewnić siÄ™, że zostaÅ‚ przesÅ‚any poprawnie.<br /> WciÅ›nij \"Wykonaj\" aby " "kontynuować aktualizacjÄ™." -msgid "The following changes have been committed" -msgstr "NastÄ™pujÄ…ce zmiany zostaÅ‚y zatwierdzone" - msgid "The following changes have been reverted" msgstr "NastÄ™pujÄ…ce zmiany zostaÅ‚y odrzucone" @@ -3346,11 +3344,6 @@ msgstr "" "siÄ™ do urzÄ…dzenia." msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3360,8 +3353,8 @@ msgstr "" msgid "There are no active leases." msgstr "Brak aktywnych dzierżaw." -msgid "There are no pending changes to apply!" -msgstr "Brak oczekujÄ…cych zmian do zastosowania!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Brak oczekujÄ…cych zmian do przywrócenia!" @@ -3471,8 +3464,8 @@ msgid "" "To restore configuration files, you can upload a previously generated backup " "archive here." msgstr "" -"Aby przywrócić pliki konfiguracyjne, możesz tutaj przesÅ‚ać wczeÅ›niej utworzonÄ… " -"kopiÄ™ zapasowÄ…." +"Aby przywrócić pliki konfiguracyjne, możesz tutaj przesÅ‚ać wczeÅ›niej " +"utworzonÄ… kopiÄ™ zapasowÄ…." msgid "Tone" msgstr "" @@ -3516,15 +3509,6 @@ msgstr "Interfejs tunelu" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "Typ tunelu" - msgid "Tx-Power" msgstr "Moc nadawania" @@ -3582,8 +3566,9 @@ msgid "" "compatible firmware image)." msgstr "" "PrzeÅ›lij tutaj obraz zgodny z funkcjÄ… sysupgrade, aby zastÄ…pić aktualnie " -"dziaÅ‚ajÄ…ce opragramowanie. Zaznacz opcjÄ™ \"Zachowaj ustawienia\", aby zachować " -"bieżącÄ… konfiguracjÄ™ (wymagany obraz zgodny z bieżącym opragramowaniem)." +"dziaÅ‚ajÄ…ce opragramowanie. Zaznacz opcjÄ™ \"Zachowaj ustawienia\", aby " +"zachować bieżącÄ… konfiguracjÄ™ (wymagany obraz zgodny z bieżącym " +"opragramowaniem)." msgid "Upload archive..." msgstr "ZaÅ‚aduj archiwum..." @@ -3705,12 +3690,6 @@ msgstr "Producent" msgid "Vendor Class to send when requesting DHCP" msgstr "Klasa producenta do wysÅ‚ania podczas żądania DHCP" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "Zweryfikuj" @@ -3739,12 +3718,8 @@ msgid "" "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " "and ad-hoc mode) to be installed." msgstr "" -"Kodowanie WPA wymaga zainstalowanych modułów wpa_supplicant (tryb " -"klienta) lub hostapd (tryb AP lub ad-hoc)" - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" +"Kodowanie WPA wymaga zainstalowanych modułów wpa_supplicant (tryb klienta) " +"lub hostapd (tryb AP lub ad-hoc)" msgid "Waiting for changes to be applied..." msgstr "Trwa wprowadzenie zmian..." @@ -3752,6 +3727,9 @@ msgstr "Trwa wprowadzenie zmian..." msgid "Waiting for command to complete..." msgstr "Trwa wykonanie polecenia..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "Oczekiwanie na urzÄ…dzenie..." @@ -3759,20 +3737,15 @@ msgid "Warning" msgstr "Ostrzeżenie" msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "Ostrzeżenie: IstniejÄ… niezapisane zmiany, które zostanÄ… utracone " -"po ponownym uruchomieniu urzÄ…dzenia!" +msgstr "" +"Ostrzeżenie: IstniejÄ… niezapisane zmiany, które zostanÄ… utracone po ponownym " +"uruchomieniu urzÄ…dzenia!" msgid "" "When using a PSK, the PMK can be generated locally without inter AP " "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "Szerokość" @@ -3839,9 +3812,9 @@ msgid "" "upgrade it to at least version 7 or use another browser like Firefox, Opera " "or Safari." msgstr "" -"Twój Internet Explorer jest za stary, aby poprawnie wyÅ›wietlić tÄ™ stronÄ™" +"Twój Internet Explorer jest za stary, aby poprawnie wyÅ›wietlić tÄ™ stronÄ™ " "zaktualizuj go do wersji co najmniej 7 lub użyj innej przeglÄ…darki, takiej " -"jak Firefox, Opera czy Safari". +"jak Firefox, Opera czy Safari." msgid "any" msgstr "dowolny" @@ -3919,9 +3892,6 @@ msgstr "kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "lokalny plik <abbr title=\"Domain Name System\">DNS</abbr>" -msgid "minimum 1280, maximum 1480" -msgstr "minimum 1280, maksimum 1480" - msgid "minutes" msgstr "minuty" @@ -3998,101 +3968,8 @@ msgstr "tak" msgid "« Back" msgstr "« Wróć" -#~ msgid "Action" -#~ msgstr "Akcja" - -#~ msgid "Buttons" -#~ msgstr "Przyciski" - -#~ msgid "Handler" -#~ msgstr "Uchwyt" - -#~ msgid "Maximum hold time" -#~ msgstr "Maksymalny czas podtrzymania" - -#~ msgid "Minimum hold time" -#~ msgstr "Minimalny czas podtrzymania" - -#~ msgid "Path to executable which handles the button event" -#~ msgstr "" -#~ "Åšcieżka do pliku wykonywalnego, który obsÅ‚uguje zdarzenie dla danego " -#~ "przycisku" - -#~ msgid "Specifies the button state to handle" -#~ msgstr "OkreÅ›la zachowanie w zależnoÅ›ci od stanu przycisku" - -#~ msgid "This page allows the configuration of custom button actions" -#~ msgstr "" -#~ "Poniższa strona umożliwia konfiguracjÄ™ dziaÅ‚ania niestandardowych " -#~ "przycisków" - -#~ msgid "Leasetime" -#~ msgstr "Czas dzierżawy" - -# Wydaje mi siÄ™ że brakuje litery R... -#~ msgid "AR Support" -#~ msgstr "Wsparcie dla ARP" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Bezprzewodowy kontroler Atheros 802.11%s" - -#~ msgid "Background Scan" -#~ msgstr "Skanowanie w tle" - -#~ msgid "Compression" -#~ msgstr "Kompresja" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "WyÅ‚Ä…cz zegar HW-Beacon" - -#~ msgid "Do not send probe responses" -#~ msgstr "Nie wysyÅ‚aj ramek probe response" - -#~ msgid "Fast Frames" -#~ msgstr "Szybkie ramki (Fast Frames)" - -#~ msgid "Maximum Rate" -#~ msgstr "Maksymalna Szybkość" - -#~ msgid "Minimum Rate" -#~ msgstr "Minimalna Szybkość" - -#~ msgid "Multicast Rate" -#~ msgstr "Szybkość Multicast`u" - -#~ msgid "Outdoor Channels" -#~ msgstr "KanaÅ‚y zewnÄ™trzne" - -#~ msgid "Regulatory Domain" -#~ msgstr "Domena regulacji" - -#~ msgid "Separate WDS" -#~ msgstr "Rozdziel WDS" - -#~ msgid "Static WDS" -#~ msgstr "Statyczny WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Tryb Turbo" - -#~ msgid "XR Support" -#~ msgstr "Wsparcie XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "" -#~ "Zostanie utworzona dodatkowa sieć jeÅ›li zostawisz tÄ… opcjÄ™ niezaznaczonÄ…." - -#~ msgid "Join Network: Settings" -#~ msgstr "PrzyÅ‚Ä…cz do sieci: Ustawienia" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Port %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "Port %d jest nietagowany w wielu VLAN`ach!" +#~ msgid "IPv4 WAN Status" +#~ msgstr "Status IPv4 WAN" -#~ msgid "VLAN Interface" -#~ msgstr "Interfejs VLAN" +#~ msgid "IPv6 WAN Status" +#~ msgstr "Status WAN IPv6" diff --git a/modules/luci-base/po/pt-br/base.po b/modules/luci-base/po/pt-br/base.po index a51d11d2a5..eeb7208c0b 100644 --- a/modules/luci-base/po/pt-br/base.po +++ b/modules/luci-base/po/pt-br/base.po @@ -185,11 +185,6 @@ msgstr "" "<abbr title=\"Assymetrical Digital Subscriber Line/Linha Digital Assimétrica " "para Assinante\">ADSL</abbr>" -msgid "AICCU (SIXXS)" -msgstr "" -"<abbr title=\"Automatic IPv6 Connectivity Client Utility/Utilitário Cliente " -"de Conectividade IPv6 Automática\">AICCU (SIXXS)</abbr>" - msgid "ANSI T1.413" msgstr "ANSI T1.413" @@ -232,9 +227,6 @@ msgstr "Número do dispositivo ATM" msgid "ATU-C System Vendor ID" msgstr "Identificador de" -msgid "AYIYA" -msgstr "AYIYA" - msgid "Access Concentrator" msgstr "Concentrador de Acesso" @@ -348,13 +340,6 @@ msgstr "" msgid "Allowed IPs" msgstr "Endereços IP autorizados" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" -"Veja também a <a href=\"https://www.sixxs.net/faq/connectivity/?" -"faq=comparison\">Comparação de Tunelamentos</a> em SIXXS" - msgid "Always announce default router" msgstr "Sempre anuncie o roteador padrão" @@ -434,11 +419,14 @@ msgstr "configuração de antena" msgid "Any zone" msgstr "Qualquer zona" -msgid "Apply" -msgstr "Aplicar" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" + +msgid "Apply unchecked" +msgstr "" -msgid "Applying changes" -msgstr "Aplicar as alterações" +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -458,6 +446,9 @@ msgstr "" msgid "Associated Stations" msgstr "Estações associadas" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "Grupo de Autenticação" @@ -552,9 +543,6 @@ msgstr "Endereço especificado está incorreto!" msgid "Band" msgstr "Banda" -msgid "Behind NAT" -msgstr "Atrás da NAT" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -631,12 +619,20 @@ msgstr "Alterações" msgid "Changes applied." msgstr "Alterações aplicadas." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Muda a senha do administrador para acessar este dispositivo" msgid "Channel" msgstr "Canal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Verificar" @@ -719,12 +715,15 @@ msgstr "" msgid "Configuration" msgstr "Configuração" -msgid "Configuration applied." -msgstr "Configuração aplicada." - msgid "Configuration files will be kept." msgstr "Os arquivos de configuração serão mantidos." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Confirmação" @@ -737,12 +736,15 @@ msgstr "Conectado" msgid "Connection Limit" msgstr "Limite de conexão" -msgid "Connection to server fails when TLS cannot be used" -msgstr "A conexão para este servidor falhará quando o TLS não puder ser usado" - msgid "Connections" msgstr "Conexões" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "PaÃs" @@ -873,9 +875,6 @@ msgstr "Roteador Padrão" msgid "Default is stateless + stateful" msgstr "O padrão é sem estado + com estado" -msgid "Default route" -msgstr "Rota padrão" - msgid "Default state" msgstr "Estado padrão" @@ -918,6 +917,9 @@ msgstr "O dispositivo está reiniciando..." msgid "Device unreachable" msgstr "Dispositivo não alcançável" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnóstico" @@ -953,6 +955,9 @@ msgid "Discard upstream RFC1918 responses" msgstr "" "Descartar respostas de servidores externos para redes privadas (RFC1918)" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Mostre somente os pacotes contendo" @@ -1222,6 +1227,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Arquivo" @@ -1426,9 +1434,6 @@ msgstr "" "Erros de Código de Erro de Cabeçalho (<abbr title=\"Header Error Code\">HEC</" "abbr>)" -msgid "Heartbeat" -msgstr "Pulso de vida" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1494,8 +1499,8 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "Firewall para IPv4" -msgid "IPv4 WAN Status" -msgstr "Estado IPv4 da WAN" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "Endereço IPv4" @@ -1547,15 +1552,12 @@ msgstr "" "Prefixo <abbr title=\"Unique Local Address/Endereço Local Único\">ULA</abbr> " "IPv6" -msgid "IPv6 WAN Status" -msgstr "Estado IPv6 da WAN" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "Endereço IPv6" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "Endereços IPv6 delegados para o ponta local do túnel (opcional)" - msgid "IPv6 assignment hint" msgstr "Sugestão de atribuição IPv6" @@ -2179,9 +2181,6 @@ msgstr "DomÃnio NT" msgid "NTP server candidates" msgstr "Candidatos a servidor NTP" -msgid "NTP sync time-out" -msgstr "Tempo limite da sincronia do NTP" - msgid "Name" msgstr "Nome" @@ -2307,6 +2306,9 @@ msgstr "Senha Ofuscada do Grupo" msgid "Obfuscated Password" msgstr "Senha Ofuscada" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Atraso no estado de desligado" @@ -2359,13 +2361,6 @@ msgstr "Opção removida" msgid "Optional" msgstr "Opcional" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" -"Opcional, especifique para sobrescrever o servidor padrão (tic.sixxs.net)" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "Opcional, para usar quando a conta SIXXS tem mais de um túnel" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2856,9 +2851,6 @@ msgstr "Solicita endereço IPv6" msgid "Request IPv6-prefix of length" msgstr "Solicita prefixo IPv6 de tamanho" -msgid "Require TLS" -msgstr "Requer TLS" - msgid "Required" msgstr "Necessário" @@ -2923,6 +2915,15 @@ msgstr "Relevar/esconder senha" msgid "Revert" msgstr "Reverter" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Raiz" @@ -2938,9 +2939,6 @@ msgstr "Roteie Andereços IP Autorizados" msgid "Route type" msgstr "Tipo de rota" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "Prefixo roteável IPv6 para interfaces internas" - msgid "Router Advertisement-Service" msgstr "Serviço de Anúncio de Roteador" @@ -2967,16 +2965,6 @@ msgstr "Execute a verificação do sistema de arquivos " msgid "SHA256" msgstr "SHA256" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" -"O SIXXS suporta somente TIC. Use o 6in4 para túneis estáticos usando o " -"protocolo IP 41 (RFC4213)" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "Identificador do SIXXS[/Identificador do Túnel]" - msgid "SNR" msgstr "SNR" @@ -3004,9 +2992,6 @@ msgstr "Salvar" msgid "Save & Apply" msgstr "Salvar & Aplicar" -msgid "Save & Apply" -msgstr "Save & Aplicar" - msgid "Scan" msgstr "Procurar" @@ -3035,19 +3020,6 @@ msgstr "Isolar Clientes" msgid "Server Settings" msgstr "Configurações do Servidor" -msgid "Server password" -msgstr "Senha do servidor" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" -"Senha do servidor. Informe a senha para este túnel quando o nome do usuário " -"contiver o identificador do túnel" - -msgid "Server username" -msgstr "Usuário do servidor" - msgid "Service Name" msgstr "Nome do Serviço" @@ -3145,9 +3117,6 @@ msgstr "Ordenar" msgid "Source" msgstr "Origem" -msgid "Source routing" -msgstr "Roteamento pela origem" - msgid "Specifies the directory the device is attached to" msgstr "Especifica o diretório que o dispositivo está conectado" @@ -3194,6 +3163,9 @@ msgstr "Iniciar" msgid "Start priority" msgstr "Prioridade de iniciação" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Iniciação" @@ -3364,6 +3336,16 @@ msgstr "" "O arquivo de configuração não pode ser carregado devido ao seguinte erro:" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3389,9 +3371,6 @@ msgstr "" "garantir a integridade dos dados. <br /> Clique em \"Proceder\" para iniciar " "o procedimetno de gravação." -msgid "The following changes have been committed" -msgstr "As seguintes mudanças foram aplicadas" - msgid "The following changes have been reverted" msgstr "As seguintes alterações foram revertidas" @@ -3461,13 +3440,6 @@ msgstr "" "computador para poder conectar novamente ao roteador." msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" -"O final do túnel está atrás de um NAT. Por padrão será desabilitado e " -"somente se aplica a AYIYA" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3477,8 +3449,8 @@ msgstr "" msgid "There are no active leases." msgstr "Não existem alocações ativas." -msgid "There are no pending changes to apply!" -msgstr "Não existem modificações pendentes para aplicar!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Não existem modificações pendentes para reverter!" @@ -3638,15 +3610,6 @@ msgstr "Interface de Tunelamento" msgid "Tunnel Link" msgstr "Enlace do túnel" -msgid "Tunnel broker protocol" -msgstr "Protocolo do agente do túnel" - -msgid "Tunnel setup server" -msgstr "Servidor de configuração do túnel" - -msgid "Tunnel type" -msgstr "Tipo de túnel" - msgid "Tx-Power" msgstr "Potência de transmissão" @@ -3833,12 +3796,6 @@ msgstr "Fabricante" msgid "Vendor Class to send when requesting DHCP" msgstr "Classe do fabricante para enviar quando requisitar o DHCP" -msgid "Verbose" -msgstr "Detalhado" - -msgid "Verbose logging by aiccu daemon" -msgstr "Habilite registros detalhados do serviço AICCU" - msgid "Verify" msgstr "Verificar" @@ -3870,18 +3827,15 @@ msgstr "" "A cifragem WPA requer a instalação do wpa_supplicant (para modo cliente) ou " "do hostapd (para modo AP ou ad-hoc)." -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" -"Espere esta quantidade de segundos pela sincronia do NTP. Definindo como 0 " -"desabilita a espera (opcional)" - msgid "Waiting for changes to be applied..." msgstr "Esperando a aplicação das mudanças..." msgid "Waiting for command to complete..." msgstr "Esperando o término do comando..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "Esperando pelo dispositivo..." @@ -3896,12 +3850,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "Se deve criar uma rota padrão IPv6 sobre o túnel" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "Se deve rotear somente pacotes de prefixos delegados" - msgid "Width" msgstr "Largura" @@ -4050,9 +3998,6 @@ msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "" "Arquivo local de <abbr title=\"Sistema de Nomes de DomÃnios\">DNS</abbr>" -msgid "minimum 1280, maximum 1480" -msgstr "mÃnimo 1280, máximo 1480" - msgid "minutes" msgstr "minutos" @@ -4129,116 +4074,8 @@ msgstr "sim" msgid "« Back" msgstr "« Voltar" -#~ msgid "Action" -#~ msgstr "Ação" - -#~ msgid "Buttons" -#~ msgstr "Botões" - -# Não sei que contexto isto está sendo usado -#~ msgid "Handler" -#~ msgstr "Responsável" - -# Desconheço o uso -#~ msgid "Maximum hold time" -#~ msgstr "Tempo máximo de espera" - -#~ msgid "Minimum hold time" -#~ msgstr "Tempo mÃnimo de espera" - -#~ msgid "Path to executable which handles the button event" -#~ msgstr "Caminho para o executável que trata o evento do botão" - -#~ msgid "Specifies the button state to handle" -#~ msgstr "Especifica o estado do botão para ser tratado" - -#~ msgid "This page allows the configuration of custom button actions" -#~ msgstr "" -#~ "Esta página permite a configuração de ações personalizadas para os botões" - -#~ msgid "Leasetime" -#~ msgstr "Tempo de atribuição do DHCP" - -#~ msgid "Optional." -#~ msgstr "Opcional." - -#~ msgid "navigation Navigation" -#~ msgstr "navegação Navegação" - -#~ msgid "skiplink1 Skip to navigation" -#~ msgstr "skiplink1 Pular para a navegação" - -#~ msgid "skiplink2 Skip to content" -#~ msgstr "skiplink2 Pular para o conteúdo" - -#~ msgid "AuthGroup" -#~ msgstr "Grupo de Autenticação" - -#~ msgid "automatic" -#~ msgstr "automático" - -#~ msgid "AR Support" -#~ msgstr "Suporte AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Controlador Wireless Atheros 802.11%s" - -#~ msgid "Background Scan" -#~ msgstr "Busca em Segundo Plano" - -#~ msgid "Compression" -#~ msgstr "Compressão" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Desativar temporizador de Beacon de Hardware" - -#~ msgid "Do not send probe responses" -#~ msgstr "Não enviar respostas de exames" - -#~ msgid "Fast Frames" -#~ msgstr "Quadros Rápidos" - -#~ msgid "Maximum Rate" -#~ msgstr "Taxa Máxima" - -#~ msgid "Minimum Rate" -#~ msgstr "Taxa MÃnima" - -#~ msgid "Multicast Rate" -#~ msgstr "Taxa de Multicast" - -#~ msgid "Outdoor Channels" -#~ msgstr "Canais para externo" - -#~ msgid "Regulatory Domain" -#~ msgstr "DomÃnio Regulatório" - -#~ msgid "Separate WDS" -#~ msgstr "Separar WDS" - -#~ msgid "Static WDS" -#~ msgstr "WDS Estático" - -#~ msgid "Turbo Mode" -#~ msgstr "Modo Turbo" - -#~ msgid "XR Support" -#~ msgstr "Suporte a XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Uma rede adicional será criada se você deixar isto desmarcado." - -#~ msgid "Join Network: Settings" -#~ msgstr "Conectar à Rede: Configurações" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Porta %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "Porta %d está sem etiqueta para mútliplas VLANs!" +#~ msgid "IPv4 WAN Status" +#~ msgstr "Estado IPv4 da WAN" -#~ msgid "VLAN Interface" -#~ msgstr "Interface VLAN" +#~ msgid "IPv6 WAN Status" +#~ msgstr "Estado IPv6 da WAN" diff --git a/modules/luci-base/po/pt/base.po b/modules/luci-base/po/pt/base.po index 843a4cac86..96efbe2721 100644 --- a/modules/luci-base/po/pt/base.po +++ b/modules/luci-base/po/pt/base.po @@ -177,9 +177,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -216,9 +213,6 @@ msgstr "Número de Dispositivo ATM" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "Concentrador de Acesso" @@ -328,11 +322,6 @@ msgstr "" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -411,11 +400,14 @@ msgstr "Configuração das Antenas" msgid "Any zone" msgstr "Qualquer zona" -msgid "Apply" -msgstr "Aplicar" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "A aplicar as alterações" +msgid "Apply unchecked" +msgstr "" + +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -431,6 +423,9 @@ msgstr "" msgid "Associated Stations" msgstr "Estações Associadas" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -521,9 +516,6 @@ msgstr "Endereço mal especificado!" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -595,12 +587,20 @@ msgstr "Alterações" msgid "Changes applied." msgstr "Alterações aplicadas." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Altera a password de administrador para acesso ao dispositivo" msgid "Channel" msgstr "Canal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Verificar" @@ -681,12 +681,15 @@ msgstr "" msgid "Configuration" msgstr "Configuração" -msgid "Configuration applied." -msgstr "Configuração aplicada." - msgid "Configuration files will be kept." msgstr "Os ficheiros de configuração serão mantidos." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Confirmação" @@ -699,12 +702,15 @@ msgstr "Ligado" msgid "Connection Limit" msgstr "Limite de Ligações" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "Ligações" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "PaÃs" @@ -833,9 +839,6 @@ msgstr "Gateway predefinido" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "Estado predefinido" @@ -878,6 +881,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnósticos" @@ -912,6 +918,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "Descartar respostas RFC1918 a montante" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Mostrar somente pacotes contendo" @@ -1175,6 +1184,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Ficheiro" @@ -1369,9 +1381,6 @@ msgstr "Suspender" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1434,8 +1443,8 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "Firewall IPv4" -msgid "IPv4 WAN Status" -msgstr "Estado WAN IPv4" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "Endereço IPv4" @@ -1485,15 +1494,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" -msgstr "Estado WAN IPv6" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "Endereço IPv6" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2079,9 +2085,6 @@ msgstr "" msgid "NTP server candidates" msgstr "Candidatos a servidor NTP" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "Nome" @@ -2205,6 +2208,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Atraso do Off-State" @@ -2256,12 +2262,6 @@ msgstr "Opção removida" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2733,9 +2733,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2794,6 +2791,15 @@ msgstr "Revelar/esconder password" msgid "Revert" msgstr "Reverter" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2809,9 +2815,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2838,14 +2841,6 @@ msgstr "Correr uma verificação do sistema de ficheiros" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2873,9 +2868,6 @@ msgstr "Salvar" msgid "Save & Apply" msgstr "Salvar & Aplicar" -msgid "Save & Apply" -msgstr "Salvar & Aplicar" - msgid "Scan" msgstr "Procurar" @@ -2902,17 +2894,6 @@ msgstr "Isolar Clientes" msgid "Server Settings" msgstr "" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "Nome do Serviço" @@ -3006,9 +2987,6 @@ msgstr "Ordenar" msgid "Source" msgstr "Origem" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -3047,6 +3025,9 @@ msgstr "Iniciar" msgid "Start priority" msgstr "Prioridade de inicialização" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "" @@ -3203,6 +3184,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3227,9 +3218,6 @@ msgstr "" "compare com o ficheiro original para assegurar a integração de dados.<br /> " "Click em \"Proceder\" para iniciar o procedimento." -msgid "The following changes have been committed" -msgstr "As seguintes alterações foram escritas" - msgid "The following changes have been reverted" msgstr "Foram recuperadas as seguintes alterações " @@ -3300,11 +3288,6 @@ msgstr "" "para poder ligar novamente ao router." msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3314,8 +3297,8 @@ msgstr "" msgid "There are no active leases." msgstr "Não há concessões ativas." -msgid "There are no pending changes to apply!" -msgstr "Não há alterações pendentes para aplicar!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Não há alterações pendentes para reverter!" @@ -3460,15 +3443,6 @@ msgstr "Interface de Túnel" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "Potência de Tx" @@ -3641,12 +3615,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "Verificar" @@ -3678,16 +3646,15 @@ msgstr "" "A encriptação-WPA necessita do wpa_supplicant (para modo cliente) ou do " "hostapd (para modo AP ou ah-hoc) esteja instalado." -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "A aguardar que as mudanças sejam aplicadas..." msgid "Waiting for command to complete..." msgstr "A aguardar que o comando termine..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3702,12 +3669,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3853,9 +3814,6 @@ msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "" "Ficheiro local de <abbr title=\"Sistema de Nomes de DomÃnios\">DNS</abbr>" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3931,6 +3889,30 @@ msgstr "sim" msgid "« Back" msgstr "« Voltar" +#~ msgid "IPv4 WAN Status" +#~ msgstr "Estado WAN IPv4" + +#~ msgid "IPv6 WAN Status" +#~ msgstr "Estado WAN IPv6" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Applying changes" +#~ msgstr "A aplicar as alterações" + +#~ msgid "Configuration applied." +#~ msgstr "Configuração aplicada." + +#~ msgid "Save & Apply" +#~ msgstr "Salvar & Aplicar" + +#~ msgid "The following changes have been committed" +#~ msgstr "As seguintes alterações foram escritas" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Não há alterações pendentes para aplicar!" + #~ msgid "Action" #~ msgstr "Acção" diff --git a/modules/luci-base/po/ro/base.po b/modules/luci-base/po/ro/base.po index 748bfdbc53..058c3e8db1 100644 --- a/modules/luci-base/po/ro/base.po +++ b/modules/luci-base/po/ro/base.po @@ -168,9 +168,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -207,9 +204,6 @@ msgstr "ATM numar echipament" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "Concentrator de Access " @@ -314,11 +308,6 @@ msgstr "" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -397,11 +386,14 @@ msgstr "Configurarea Antenei" msgid "Any zone" msgstr "Orice Zona" -msgid "Apply" -msgstr "Aplica" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Se aplica modificarile" +msgid "Apply unchecked" +msgstr "" + +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -417,6 +409,9 @@ msgstr "" msgid "Associated Stations" msgstr "Statiile asociate" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -507,9 +502,6 @@ msgstr "Adresa specificata gresit !" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -578,12 +570,20 @@ msgstr "Modificari" msgid "Changes applied." msgstr "Modificari aplicate." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Schimba parola administratorului pentru accesarea dispozitivului" msgid "Channel" msgstr "Canal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Verificare" @@ -656,12 +656,15 @@ msgstr "" msgid "Configuration" msgstr "Configurare" -msgid "Configuration applied." -msgstr "Configurarea aplicata." - msgid "Configuration files will be kept." msgstr "Fisierele de configurare vor fi pastrate." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Confirmare" @@ -674,12 +677,15 @@ msgstr "Conectat" msgid "Connection Limit" msgstr "Limita de conexiune" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "Conexiuni" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Tara" @@ -806,9 +812,6 @@ msgstr "" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "Stare implicita" @@ -848,6 +851,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "Diagnosticuri" @@ -882,6 +888,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -1127,6 +1136,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Fisier" @@ -1321,9 +1333,6 @@ msgstr "" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1381,8 +1390,8 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "Firewall IPv4" -msgid "IPv4 WAN Status" -msgstr "Statusul IPv4 pe WAN" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "Adresa IPv4" @@ -1432,15 +1441,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" -msgstr "Statusul IPv6 pe WAN" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "Adresa IPv6" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2009,9 +2015,6 @@ msgstr "" msgid "NTP server candidates" msgstr "" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "Nume" @@ -2135,6 +2138,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2180,12 +2186,6 @@ msgstr "Optiunea eliminata" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2646,9 +2646,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2707,6 +2704,15 @@ msgstr "Arata / ascunde parola" msgid "Revert" msgstr "" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2722,9 +2728,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2748,14 +2751,6 @@ msgstr "" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2783,9 +2778,6 @@ msgstr "Salveaza" msgid "Save & Apply" msgstr "Salveaza si aplica" -msgid "Save & Apply" -msgstr "Salveaza & Aplica" - msgid "Scan" msgstr "Scan" @@ -2812,17 +2804,6 @@ msgstr "" msgid "Server Settings" msgstr "Setarile serverului" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "Nume serviciu" @@ -2916,9 +2897,6 @@ msgstr "" msgid "Source" msgstr "Sursa" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2957,6 +2935,9 @@ msgstr "Start" msgid "Start priority" msgstr "" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Pornire" @@ -3107,6 +3088,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3123,9 +3114,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "" @@ -3179,11 +3167,6 @@ msgid "" msgstr "" msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3191,8 +3174,8 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" -msgstr "Nu exista modificari in asteptare de aplicat !" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Nu exista modificari in asteptare de anulat !" @@ -3328,15 +3311,6 @@ msgstr "Interfata de tunel" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "Puterea TX" @@ -3509,12 +3483,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "" @@ -3546,16 +3514,15 @@ msgstr "" "Criptarea WPA necesita wpa_supplicant (pentru modul client) sau hostapd " "(pentru modul AP sau ad-hoc) instalate." -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3570,12 +3537,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3711,9 +3672,6 @@ msgstr "" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3789,6 +3747,27 @@ msgstr "da" msgid "« Back" msgstr "« Inapoi" +#~ msgid "IPv4 WAN Status" +#~ msgstr "Statusul IPv4 pe WAN" + +#~ msgid "IPv6 WAN Status" +#~ msgstr "Statusul IPv6 pe WAN" + +#~ msgid "Apply" +#~ msgstr "Aplica" + +#~ msgid "Applying changes" +#~ msgstr "Se aplica modificarile" + +#~ msgid "Configuration applied." +#~ msgstr "Configurarea aplicata." + +#~ msgid "Save & Apply" +#~ msgstr "Salveaza & Aplica" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Nu exista modificari in asteptare de aplicat !" + #~ msgid "Action" #~ msgstr "Actiune" diff --git a/modules/luci-base/po/ru/base.po b/modules/luci-base/po/ru/base.po index 35a697620e..d43cc266cc 100644 --- a/modules/luci-base/po/ru/base.po +++ b/modules/luci-base/po/ru/base.po @@ -177,9 +177,6 @@ msgstr "A43C + J43 + A43 + V43" msgid "ADSL" msgstr "ADSL" -msgid "AICCU (SIXXS)" -msgstr "AICCU (SIXXS)" - msgid "ANSI T1.413" msgstr "ANSI T1.413" @@ -216,9 +213,6 @@ msgstr "ATM номер уÑтройÑтва" msgid "ATU-C System Vendor ID" msgstr "ATU-C System Vendor ID" -msgid "AYIYA" -msgstr "AYIYA" - msgid "Access Concentrator" msgstr "Концентратор доÑтупа" @@ -330,13 +324,6 @@ msgstr "" msgid "Allowed IPs" msgstr "Разрешенные IP-адреÑа" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" -"Также Ñмотрите <a href=\"https://www.sixxs.net/faq/connectivity/?" -"faq=comparison\">Tunneling Comparison</a> on SIXXS" - msgid "Always announce default router" msgstr "ОбъÑвлÑÑ‚ÑŒ вÑегда, как дефолтный маршрутизатор" @@ -417,11 +404,14 @@ msgstr "ÐаÑтройка антенн" msgid "Any zone" msgstr "Ð›ÑŽÐ±Ð°Ñ Ð·Ð¾Ð½Ð°" -msgid "Apply" -msgstr "ПринÑÑ‚ÑŒ" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" + +msgid "Apply unchecked" +msgstr "" -msgid "Applying changes" -msgstr "Применение изменений" +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -441,6 +431,9 @@ msgstr "" msgid "Associated Stations" msgstr "Подключенные клиенты" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "Группа аутентификации" @@ -537,9 +530,6 @@ msgstr "Указан неправильный адреÑ!" msgid "Band" msgstr "Диапазон" -msgid "Behind NAT" -msgstr "За NAT-ом" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -616,12 +606,20 @@ msgstr "ИзменениÑ" msgid "Changes applied." msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð½ÑÑ‚Ñ‹." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Изменить пароль админиÑтратора Ð´Ð»Ñ Ð´Ð¾Ñтупа к уÑтройÑтву." msgid "Channel" msgstr "Канал" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Проверить" @@ -710,12 +708,15 @@ msgstr "" msgid "Configuration" msgstr "ÐаÑтройка config файла" -msgid "Configuration applied." -msgstr "Изменение наÑтроек config файлов." - msgid "Configuration files will be kept." msgstr "Config файлы будут Ñохранены." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Подтверждение паролÑ" @@ -728,12 +729,15 @@ msgstr "Подключен" msgid "Connection Limit" msgstr "Ограничение Ñоединений" -msgid "Connection to server fails when TLS cannot be used" -msgstr "СвÑзь Ñ Ñервером прерываетÑÑ, когда TLS не может быть иÑпользован" - msgid "Connections" msgstr "СоединениÑ" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Страна" @@ -864,9 +868,6 @@ msgstr "Шлюз по умолчанию" msgid "Default is stateless + stateful" msgstr "Значение по умолчанию - 'stateless + stateful'." -msgid "Default route" -msgstr "Маршрут по умолчанию" - msgid "Default state" msgstr "Ðачальное ÑоÑтоÑние" @@ -909,6 +910,9 @@ msgstr "Перезагрузка..." msgid "Device unreachable" msgstr "УÑтройÑтво недоÑтупно" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "ДиагноÑтика" @@ -943,6 +947,9 @@ msgstr "Отключено (по умолчанию)" msgid "Discard upstream RFC1918 responses" msgstr "ОтбраÑывать ответы внешней Ñети RFC1918." +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "ПоказываютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ пакеты, Ñодержащие" @@ -1207,6 +1214,9 @@ msgstr "FT над the Air" msgid "FT protocol" msgstr "FT протокол" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Файл" @@ -1405,9 +1415,6 @@ msgstr "ПерезапуÑтить" msgid "Header Error Code Errors (HEC)" msgstr "Ошибки кода ошибки заголовка (HEC)" -msgid "Heartbeat" -msgstr "Heartbeat" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1467,8 +1474,8 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "МежÑетевой Ñкран IPv4" -msgid "IPv4 WAN Status" -msgstr "СоÑтоÑние IPv4 WAN" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "IPv4-адреÑ" @@ -1518,16 +1525,12 @@ msgstr "IPv6 ÐаÑтройки" msgid "IPv6 ULA-Prefix" msgstr "IPv6 ULA-Prefix" -msgid "IPv6 WAN Status" -msgstr "СоÑтоÑние IPv6 WAN" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "IPv6-адреÑ" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" -"IPv6-адреÑ, делегированный локальной конечной точке Ñ‚ÑƒÐ½Ð½ÐµÐ»Ñ (необÑзательно)." - msgid "IPv6 assignment hint" msgstr "IPv6 подÑказка приÑвоениÑ" @@ -2137,9 +2140,6 @@ msgstr "NT домен" msgid "NTP server candidates" msgstr "СпиÑок NTP-Ñерверов" -msgid "NTP sync time-out" -msgstr "NTP ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ ожиданиÑ" - msgid "Name" msgstr "ИмÑ" @@ -2263,6 +2263,9 @@ msgstr "Obfuscated Group Password" msgid "Obfuscated Password" msgstr "Obfuscated Password" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Задержка выключенного ÑоÑтоÑниÑ" @@ -2314,16 +2317,6 @@ msgstr "ÐžÐ¿Ñ†Ð¸Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð°" msgid "Optional" msgstr "ÐеобÑзательно" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" -"ÐеобÑзательно. Укажите, чтобы переопределить дефолтный Ñервер (tic.sixxs." -"net)." - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" -"ÐеобÑзательно. ИÑпользуетÑÑ, когда ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ SIXXS имеет более одного " -"туннелÑ." - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2815,9 +2808,6 @@ msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ IPv6 адреÑа" msgid "Request IPv6-prefix of length" msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ IPv6 Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð´Ð»Ð¸Ð½Ñ‹" -msgid "Require TLS" -msgstr "Требовать TLS" - msgid "Required" msgstr "Требовать" @@ -2884,6 +2874,15 @@ msgstr "Показать/Ñкрыть пароль" msgid "Revert" msgstr "Вернуть" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Корень" @@ -2899,9 +2898,6 @@ msgstr "Маршрут разрешенный Ð´Ð»Ñ IP адреÑов" msgid "Route type" msgstr "Тип маршрута" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð¼Ð°Ñ€ÑˆÑ€ÑƒÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ð¸ IPv6 Ð´Ð»Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñов внутренней Ñети" - msgid "Router Advertisement-Service" msgstr "ДоÑтупные<br />режимы работы" @@ -2927,16 +2923,6 @@ msgstr "Проверить" msgid "SHA256" msgstr "SHA256" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" -"SIXXS поддерживает только TIC, Ð´Ð»Ñ ÑтатичеÑких туннелей Ñ Ð¸Ñпользованием IP-" -"протокола 41 (RFC4213) иÑпользуетÑÑ Ð²Ð¼ÐµÑто 6in4." - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "SIXXS-управление[/Туннель-ID]" - msgid "SNR" msgstr "SNR" @@ -2964,9 +2950,6 @@ msgstr "Сохранить" msgid "Save & Apply" msgstr "Сохранить и применить" -msgid "Save & Apply" -msgstr "Сохранить и применить" - msgid "Scan" msgstr "ПоиÑк" @@ -2995,19 +2978,6 @@ msgstr "РазделÑÑ‚ÑŒ клиентов" msgid "Server Settings" msgstr "ÐаÑтройки Ñервера" -msgid "Server password" -msgstr "Пароль доÑтупа к Ñерверу" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" -"Пароль Ñервера. Введите пароль из тоннелÑ, когда Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñодержит " -"ID туннелÑ." - -msgid "Server username" -msgstr "Логин доÑтупа к Ñерверу" - msgid "Service Name" msgstr "Ð˜Ð¼Ñ Ñлужбы" @@ -3104,9 +3074,6 @@ msgstr "Сортировка" msgid "Source" msgstr "ИÑточник" -msgid "Source routing" -msgstr "Ð¼Ð°Ñ€ÑˆÑ€ÑƒÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ иÑточника" - msgid "Specifies the directory the device is attached to" msgstr "Папка, к которой монтируетÑÑ Ñ€Ð°Ð·Ð´ÐµÐ» уÑтройÑтва." @@ -3152,6 +3119,9 @@ msgstr "Старт" msgid "Start priority" msgstr "Приоритет" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "Загрузка" @@ -3320,6 +3290,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "Ðе удалоÑÑŒ загрузить config файл из-за Ñледующей ошибки:" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3343,9 +3323,6 @@ msgstr "" "удоÑтоверитьÑÑ Ð² целоÑтноÑти данных.<br /> Ðажмите 'Продолжить', чтобы " "начать процедуру Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸." -msgid "The following changes have been committed" -msgstr "Ваши наÑтройки были применены." - msgid "The following changes have been reverted" msgstr "Ваши наÑтройки были отвергнуты." @@ -3413,13 +3390,6 @@ msgstr "" "в завиÑимоÑти от наÑтроек." msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" -"ÐšÐ¾Ð½ÐµÑ‡Ð½Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° Ñ‚ÑƒÐ½Ð½ÐµÐ»Ñ Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚ÑÑ Ð·Ð° NAT, по умолчанию отключена и " -"применÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ к AYIYA." - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3429,8 +3399,8 @@ msgstr "" msgid "There are no active leases." msgstr "Ðет активных арендованных адреÑов." -msgid "There are no pending changes to apply!" -msgstr "Ðет изменений, которые можно применить!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Ðет изменений, которые можно отменить!" @@ -3589,15 +3559,6 @@ msgstr "Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñ‚ÑƒÐ½Ð½ÐµÐ»Ñ" msgid "Tunnel Link" msgstr "СÑылка на туннель" -msgid "Tunnel broker protocol" -msgstr "Протокол поÑредника туннелÑ" - -msgid "Tunnel setup server" -msgstr "Сервер наÑтройки туннелÑ" - -msgid "Tunnel type" -msgstr "Тип туннелÑ" - msgid "Tx-Power" msgstr "МощноÑÑ‚ÑŒ передатчика" @@ -3783,12 +3744,6 @@ msgid "Vendor Class to send when requesting DHCP" msgstr "" "КлаÑÑ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»Ñ (Vendor class), который отправлÑÑ‚ÑŒ при DHCP-запроÑах" -msgid "Verbose" -msgstr "Verbose" - -msgid "Verbose logging by aiccu daemon" -msgstr "Verbose ведение журнала демоном aiccu" - msgid "Verify" msgstr "Проверить" @@ -3820,18 +3775,15 @@ msgstr "" "Ðеобходимо уÑтановить wpa_supplicant (режим клиента) или hostapd (режим " "точки доÑтупа или ad-hoc) Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ WPA." -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" -"Задать Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ñинхронизации NTP, уÑтановка Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ - '0', отключает " -"ожидание (необÑзательно)." - msgid "Waiting for changes to be applied..." msgstr "Ожидание Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹..." msgid "Waiting for command to complete..." msgstr "Ожидание Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "Ожидание Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ ÑƒÑтройÑтва..." @@ -3848,12 +3800,6 @@ msgid "" "communications" msgstr "При иÑпользовании PSK, PMK может быть Ñоздан локально, без AP в ÑвÑзи." -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "Создание маршрута по умолчанию IPv6 через туннель." - -msgid "Whether to route only packets from delegated prefixes" -msgstr "ÐœÐ°Ñ€ÑˆÑ€ÑƒÑ‚Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ пакетов из делегированных префикÑов." - msgid "Width" msgstr "Ширина" @@ -4000,9 +3946,6 @@ msgstr "kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "Локальный <abbr title=\"Служба доменных имён\">DNS</abbr>-файл." -msgid "minimum 1280, maximum 1480" -msgstr "минимум 1280, макÑимум 1480" - msgid "minutes" msgstr "минут(Ñ‹)" @@ -4077,3 +4020,9 @@ msgstr "да" msgid "« Back" msgstr "« Ðазад" + +#~ msgid "IPv4 WAN Status" +#~ msgstr "СоÑтоÑние IPv4 WAN" + +#~ msgid "IPv6 WAN Status" +#~ msgstr "СоÑтоÑние IPv6 WAN" diff --git a/modules/luci-base/po/sk/base.po b/modules/luci-base/po/sk/base.po index acc57792b3..36d7bd6325 100644 --- a/modules/luci-base/po/sk/base.po +++ b/modules/luci-base/po/sk/base.po @@ -159,9 +159,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -195,9 +192,6 @@ msgstr "" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "" @@ -300,11 +294,6 @@ msgstr "" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -383,10 +372,13 @@ msgstr "" msgid "Any zone" msgstr "" -msgid "Apply" +msgid "Apply request failed with status <code>%h</code>" msgstr "" -msgid "Applying changes" +msgid "Apply unchecked" +msgstr "" + +msgid "Architecture" msgstr "" msgid "" @@ -403,6 +395,9 @@ msgstr "" msgid "Associated Stations" msgstr "" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -493,9 +488,6 @@ msgstr "" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -564,12 +556,20 @@ msgstr "" msgid "Changes applied." msgstr "" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "" msgid "Channel" msgstr "" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "" @@ -639,10 +639,13 @@ msgstr "" msgid "Configuration" msgstr "" -msgid "Configuration applied." +msgid "Configuration files will be kept." msgstr "" -msgid "Configuration files will be kept." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" msgstr "" msgid "Confirmation" @@ -657,10 +660,13 @@ msgstr "" msgid "Connection Limit" msgstr "" -msgid "Connection to server fails when TLS cannot be used" +msgid "Connections" msgstr "" -msgid "Connections" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." msgstr "" msgid "Country" @@ -789,9 +795,6 @@ msgstr "" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "" @@ -831,6 +834,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "" @@ -863,6 +869,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -1108,6 +1117,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "" @@ -1301,9 +1313,6 @@ msgstr "" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1359,7 +1368,7 @@ msgstr "" msgid "IPv4 Firewall" msgstr "" -msgid "IPv4 WAN Status" +msgid "IPv4 Upstream" msgstr "" msgid "IPv4 address" @@ -1410,15 +1419,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" +msgid "IPv6 Upstream" msgstr "" msgid "IPv6 address" msgstr "" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -1984,9 +1990,6 @@ msgstr "" msgid "NTP server candidates" msgstr "" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "" @@ -2110,6 +2113,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2155,12 +2161,6 @@ msgstr "" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2619,9 +2619,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2680,6 +2677,15 @@ msgstr "" msgid "Revert" msgstr "" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2695,9 +2701,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2721,14 +2724,6 @@ msgstr "" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2756,9 +2751,6 @@ msgstr "" msgid "Save & Apply" msgstr "" -msgid "Save & Apply" -msgstr "" - msgid "Scan" msgstr "" @@ -2785,17 +2777,6 @@ msgstr "" msgid "Server Settings" msgstr "" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "" @@ -2888,9 +2869,6 @@ msgstr "" msgid "Source" msgstr "" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2929,6 +2907,9 @@ msgstr "" msgid "Start priority" msgstr "" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "" @@ -3079,6 +3060,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3095,9 +3086,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "" @@ -3151,11 +3139,6 @@ msgid "" msgstr "" msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3163,7 +3146,7 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3298,15 +3281,6 @@ msgstr "" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "" @@ -3479,12 +3453,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "" @@ -3514,16 +3482,15 @@ msgid "" "and ad-hoc mode) to be installed." msgstr "" -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3538,12 +3505,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3679,9 +3640,6 @@ msgstr "" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" diff --git a/modules/luci-base/po/sv/base.po b/modules/luci-base/po/sv/base.po index 632ea6f745..be886c1df2 100644 --- a/modules/luci-base/po/sv/base.po +++ b/modules/luci-base/po/sv/base.po @@ -167,9 +167,6 @@ msgstr "A43C + J43 + A43 + V43" msgid "ADSL" msgstr "ADSL" -msgid "AICCU (SIXXS)" -msgstr "AICCU (SIXXS)" - msgid "ANSI T1.413" msgstr "ANSI T1.413" @@ -203,9 +200,6 @@ msgstr "" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "AYIYA" - msgid "Access Concentrator" msgstr "" @@ -311,11 +305,6 @@ msgstr "" msgid "Allowed IPs" msgstr "TillÃ¥tna IP-adresser" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -394,11 +383,14 @@ msgstr "Konfiguration av antenn" msgid "Any zone" msgstr "NÃ¥gon zon" -msgid "Apply" -msgstr "Verkställ" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "Verkställer ändringar" +msgid "Apply unchecked" +msgstr "" + +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -414,6 +406,9 @@ msgstr "" msgid "Associated Stations" msgstr "Associerade stationer" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "Autentiseringsgrupp" @@ -504,9 +499,6 @@ msgstr "Fel adress angiven!" msgid "Band" msgstr "Band" -msgid "Behind NAT" -msgstr "Bakom NAT" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -576,12 +568,20 @@ msgstr "Ändringar" msgid "Changes applied." msgstr "Tillämpade ändringar" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Ändrar administratörens lösenord för att fÃ¥ tillgÃ¥ng till enheten" msgid "Channel" msgstr "Kanal" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Kontrollera" @@ -653,12 +653,15 @@ msgstr "" msgid "Configuration" msgstr "Konfiguration" -msgid "Configuration applied." -msgstr "Konfigurationen tillämpades" - msgid "Configuration files will be kept." msgstr "Konfigurationsfiler kommer att behÃ¥llas." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "Bekräftelse" @@ -671,12 +674,15 @@ msgstr "Ansluten" msgid "Connection Limit" msgstr "Anslutningsgräns" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "Anslutningar" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Land" @@ -803,9 +809,6 @@ msgstr "Standard gateway" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "Standardrutt" - msgid "Default state" msgstr "" @@ -845,6 +848,9 @@ msgstr "Enheten startar om..." msgid "Device unreachable" msgstr "Enheten kan inte nÃ¥s" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "" @@ -879,6 +885,9 @@ msgstr "Inaktiverad (standard)" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -1128,6 +1137,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Fil" @@ -1321,9 +1333,6 @@ msgstr "Lägg pÃ¥" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "Hjärtslag" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1379,7 +1388,7 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "IPv4-brandvägg" -msgid "IPv4 WAN Status" +msgid "IPv4 Upstream" msgstr "" msgid "IPv4 address" @@ -1430,15 +1439,12 @@ msgstr "IPv6-inställningar" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" +msgid "IPv6 Upstream" msgstr "" msgid "IPv6 address" msgstr "IPv6-adress" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2005,9 +2011,6 @@ msgstr "NT-domän" msgid "NTP server candidates" msgstr "NTP-serverkandidater" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "Namn" @@ -2131,6 +2134,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2176,12 +2182,6 @@ msgstr "Alternativet togs bort" msgid "Optional" msgstr "Valfri" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2642,9 +2642,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "Kräv TLS" - msgid "Required" msgstr "Krävs!" @@ -2703,6 +2700,15 @@ msgstr "Visa/göm lösenord" msgid "Revert" msgstr "Ã…tergÃ¥" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Root" @@ -2718,9 +2724,6 @@ msgstr "" msgid "Route type" msgstr "Typ av rutt" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2744,14 +2747,6 @@ msgstr "Kör filsystemskontrollen" msgid "SHA256" msgstr "SHA256" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "SNR" @@ -2779,9 +2774,6 @@ msgstr "Spara" msgid "Save & Apply" msgstr "Spara och Verkställ" -msgid "Save & Apply" -msgstr "Spara & Verkställ" - msgid "Scan" msgstr "Skanna" @@ -2808,17 +2800,6 @@ msgstr "Separera klienter" msgid "Server Settings" msgstr "Inställningar för server" -msgid "Server password" -msgstr "Lösenordet för servern" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "Användarnamnet för servern" - msgid "Service Name" msgstr "Namn pÃ¥ tjänst" @@ -2911,9 +2892,6 @@ msgstr "Sortera" msgid "Source" msgstr "Källa" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2952,6 +2930,9 @@ msgstr "" msgid "Start priority" msgstr "" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "" @@ -3102,6 +3083,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3118,9 +3109,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "Följande ändringar har skickats in" - msgid "The following changes have been reverted" msgstr "" @@ -3174,11 +3162,6 @@ msgid "" msgstr "" msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3186,8 +3169,8 @@ msgstr "" msgid "There are no active leases." msgstr "Det finns inga aktiva kontrakt." -msgid "There are no pending changes to apply!" -msgstr "Det finns inga pendlande ändringar att verkställa!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Det finns inga pendlande ändringar att Ã¥terkalla" @@ -3325,15 +3308,6 @@ msgstr "Tunnelgränssnitt" msgid "Tunnel Link" msgstr "Tunnel-länk" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "Tunnel-typ" - msgid "Tx-Power" msgstr "" @@ -3506,12 +3480,6 @@ msgstr "Tillverkare" msgid "Vendor Class to send when requesting DHCP" msgstr "" -msgid "Verbose" -msgstr "Utförlig" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "Verkställ" @@ -3541,16 +3509,15 @@ msgid "" "and ad-hoc mode) to be installed." msgstr "" -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "Väntar pÃ¥ att ändringarna ska tillämpas..." msgid "Waiting for command to complete..." msgstr "Väntar pÃ¥ att kommandot ska avsluta..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "Väntar pÃ¥ enheten..." @@ -3566,12 +3533,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "Bredd" @@ -3712,9 +3673,6 @@ msgstr "kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "lokal <abbr title=\"Domain Name System\">DNS</abbr>-fil" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "minuter" @@ -3789,9 +3747,3 @@ msgstr "ja" msgid "« Back" msgstr "« BakÃ¥t" - -#~ msgid "Action" -#~ msgstr "Ã…tgärd" - -#~ msgid "Buttons" -#~ msgstr "Knappar" diff --git a/modules/luci-base/po/templates/base.pot b/modules/luci-base/po/templates/base.pot index ddf2e56faa..e39fd962ef 100644 --- a/modules/luci-base/po/templates/base.pot +++ b/modules/luci-base/po/templates/base.pot @@ -152,9 +152,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -188,9 +185,6 @@ msgstr "" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "" @@ -293,11 +287,6 @@ msgstr "" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -376,10 +365,13 @@ msgstr "" msgid "Any zone" msgstr "" -msgid "Apply" +msgid "Apply request failed with status <code>%h</code>" msgstr "" -msgid "Applying changes" +msgid "Apply unchecked" +msgstr "" + +msgid "Architecture" msgstr "" msgid "" @@ -396,6 +388,9 @@ msgstr "" msgid "Associated Stations" msgstr "" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -486,9 +481,6 @@ msgstr "" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -557,12 +549,20 @@ msgstr "" msgid "Changes applied." msgstr "" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "" msgid "Channel" msgstr "" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "" @@ -632,10 +632,13 @@ msgstr "" msgid "Configuration" msgstr "" -msgid "Configuration applied." +msgid "Configuration files will be kept." msgstr "" -msgid "Configuration files will be kept." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" msgstr "" msgid "Confirmation" @@ -650,10 +653,13 @@ msgstr "" msgid "Connection Limit" msgstr "" -msgid "Connection to server fails when TLS cannot be used" +msgid "Connections" msgstr "" -msgid "Connections" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." msgstr "" msgid "Country" @@ -782,9 +788,6 @@ msgstr "" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "" @@ -824,6 +827,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "" @@ -856,6 +862,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -1101,6 +1110,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "" @@ -1294,9 +1306,6 @@ msgstr "" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1352,7 +1361,7 @@ msgstr "" msgid "IPv4 Firewall" msgstr "" -msgid "IPv4 WAN Status" +msgid "IPv4 Upstream" msgstr "" msgid "IPv4 address" @@ -1403,15 +1412,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" +msgid "IPv6 Upstream" msgstr "" msgid "IPv6 address" msgstr "" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -1977,9 +1983,6 @@ msgstr "" msgid "NTP server candidates" msgstr "" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "" @@ -2103,6 +2106,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2148,12 +2154,6 @@ msgstr "" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2612,9 +2612,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2673,6 +2670,15 @@ msgstr "" msgid "Revert" msgstr "" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2688,9 +2694,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2714,14 +2717,6 @@ msgstr "" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2749,9 +2744,6 @@ msgstr "" msgid "Save & Apply" msgstr "" -msgid "Save & Apply" -msgstr "" - msgid "Scan" msgstr "" @@ -2778,17 +2770,6 @@ msgstr "" msgid "Server Settings" msgstr "" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "" @@ -2881,9 +2862,6 @@ msgstr "" msgid "Source" msgstr "" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2922,6 +2900,9 @@ msgstr "" msgid "Start priority" msgstr "" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "" @@ -3072,6 +3053,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3088,9 +3079,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "" @@ -3144,11 +3132,6 @@ msgid "" msgstr "" msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3156,7 +3139,7 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3291,15 +3274,6 @@ msgstr "" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "" @@ -3472,12 +3446,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "" @@ -3507,16 +3475,15 @@ msgid "" "and ad-hoc mode) to be installed." msgstr "" -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3531,12 +3498,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3672,9 +3633,6 @@ msgstr "" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" diff --git a/modules/luci-base/po/tr/base.po b/modules/luci-base/po/tr/base.po index 953d1e9669..5f8fb29c57 100644 --- a/modules/luci-base/po/tr/base.po +++ b/modules/luci-base/po/tr/base.po @@ -39,13 +39,13 @@ msgid "-- custom --" msgstr "-- özel --" msgid "-- match by device --" -msgstr "" +msgstr "-- cihaza göre eÅŸleÅŸtir --" msgid "-- match by label --" -msgstr "" +msgstr "-- etikete göre eÅŸleÅŸtir --" msgid "-- match by uuid --" -msgstr "" +msgstr "-- uuid'e göre eÅŸleÅŸtir --" msgid "1 Minute Load:" msgstr "1 Dakikalık Yük:" @@ -54,7 +54,7 @@ msgid "15 Minute Load:" msgstr "15 Dakikalık Yük:" msgid "4-character hexadecimal ID" -msgstr "" +msgstr "4 karakterli HEX ID" msgid "464XLAT (CLAT)" msgstr "" @@ -168,9 +168,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -204,9 +201,6 @@ msgstr "" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "" @@ -313,11 +307,6 @@ msgstr "" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -396,11 +385,14 @@ msgstr "Anten Yapılandırması" msgid "Any zone" msgstr "" -msgid "Apply" -msgstr "Uygula" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "DeÄŸiÅŸiklikleri uygula" +msgid "Apply unchecked" +msgstr "" + +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -416,6 +408,9 @@ msgstr "" msgid "Associated Stations" msgstr "" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -435,7 +430,7 @@ msgid "Auto Refresh" msgstr "Otomatik Yenileme" msgid "Automatic" -msgstr "" +msgstr "Otomatik" msgid "Automatic Homenet (HNCP)" msgstr "" @@ -474,7 +469,7 @@ msgid "BR / DMR / AFTR" msgstr "" msgid "BSSID" -msgstr "" +msgstr "BSSID" msgid "Back" msgstr "Geri" @@ -506,9 +501,6 @@ msgstr "" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -560,27 +552,35 @@ msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" msgid "CPU usage (%)" -msgstr "" +msgstr "CPU kullanımı (%)" msgid "Cancel" -msgstr "" +msgstr "Vazgeç" msgid "Category" -msgstr "" +msgstr "Kategori" msgid "Chain" -msgstr "" +msgstr "Zincir" msgid "Changes" -msgstr "" +msgstr "DeÄŸiÅŸiklikler" msgid "Changes applied." msgstr "" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "" msgid "Channel" +msgstr "Kanal" + +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." msgstr "" msgid "Check" @@ -652,10 +652,13 @@ msgstr "" msgid "Configuration" msgstr "" -msgid "Configuration applied." +msgid "Configuration files will be kept." +msgstr "" + +msgid "Configuration has been applied." msgstr "" -msgid "Configuration files will be kept." +msgid "Configuration has been rolled back!" msgstr "" msgid "Confirmation" @@ -670,10 +673,13 @@ msgstr "" msgid "Connection Limit" msgstr "" -msgid "Connection to server fails when TLS cannot be used" +msgid "Connections" msgstr "" -msgid "Connections" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." msgstr "" msgid "Country" @@ -802,9 +808,6 @@ msgstr "" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "" @@ -844,6 +847,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "" @@ -876,6 +882,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -1121,6 +1130,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "" @@ -1314,9 +1326,6 @@ msgstr "" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1372,7 +1381,7 @@ msgstr "" msgid "IPv4 Firewall" msgstr "" -msgid "IPv4 WAN Status" +msgid "IPv4 Upstream" msgstr "" msgid "IPv4 address" @@ -1423,15 +1432,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" +msgid "IPv6 Upstream" msgstr "" msgid "IPv6 address" msgstr "" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -1821,10 +1827,10 @@ msgid "Logging" msgstr "" msgid "Login" -msgstr "" +msgstr "Oturum Aç" msgid "Logout" -msgstr "" +msgstr "Oturumu Kapat" msgid "Loss of Signal Seconds (LOSS)" msgstr "" @@ -1997,9 +2003,6 @@ msgstr "" msgid "NTP server candidates" msgstr "" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "" @@ -2123,6 +2126,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2168,12 +2174,6 @@ msgstr "" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2632,9 +2632,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2664,13 +2661,13 @@ msgid "" msgstr "" msgid "Reset" -msgstr "" +msgstr "Sıfırla" msgid "Reset Counters" -msgstr "" +msgstr "Sayaçları Sıfırla" msgid "Reset to defaults" -msgstr "" +msgstr "Varsayılanlara dön" msgid "Resolv and Hosts Files" msgstr "" @@ -2679,23 +2676,32 @@ msgid "Resolve file" msgstr "" msgid "Restart" -msgstr "" +msgstr "Tekrar baÅŸlat" msgid "Restart Firewall" msgstr "" msgid "Restore backup" -msgstr "" +msgstr "Yedeklemeyi geri yükle" msgid "Reveal/hide password" msgstr "" msgid "Revert" +msgstr "Dönmek" + +msgid "Revert changes" +msgstr "DeÄŸiÅŸiklikleri geri al" + +msgid "Revert request failed with status <code>%h</code>" msgstr "" -msgid "Root" +msgid "Reverting configuration…" msgstr "" +msgid "Root" +msgstr "Kök" + msgid "Root directory for files served via TFTP" msgstr "" @@ -2706,19 +2712,16 @@ msgid "Route Allowed IPs" msgstr "" msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" +msgstr "Yönlendirme Tipi" msgid "Router Advertisement-Service" msgstr "" msgid "Router Password" -msgstr "" +msgstr "Yönlendirici Parolası" msgid "Routes" -msgstr "" +msgstr "Yönlendirmeler" msgid "" "Routes specify over which interface and gateway a certain host or network " @@ -2726,63 +2729,52 @@ msgid "" msgstr "" msgid "Run a filesystem check before mounting the device" -msgstr "" +msgstr "Cihazı baÄŸlamadan önce bir dosya sistemi kontrolü yapın" msgid "Run filesystem check" -msgstr "" +msgstr "Dosya sistemi kontrolünü çalıştır" msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" +msgstr "SHA256" msgid "SNR" -msgstr "" +msgstr "SNR" msgid "SSH Access" -msgstr "" +msgstr "SSH EriÅŸimi" msgid "SSH server address" -msgstr "" +msgstr "SSH sunucu adresi" msgid "SSH server port" -msgstr "" +msgstr "SSH sunucu portu" msgid "SSH username" -msgstr "" +msgstr "SSH kullanıcı adı" msgid "SSH-Keys" msgstr "" msgid "SSID" -msgstr "" +msgstr "SSID" msgid "Save" -msgstr "" +msgstr "Kaydet" msgid "Save & Apply" -msgstr "" - -msgid "Save & Apply" -msgstr "" +msgstr "Kaydet & Uygula" msgid "Scan" -msgstr "" +msgstr "Tara" msgid "Scheduled Tasks" -msgstr "" +msgstr "Zamanlanmış Görevler" msgid "Section added" -msgstr "" +msgstr "Bölüm eklendi" msgid "Section removed" -msgstr "" +msgstr "Bölüm kaldırıldı" msgid "See \"mount\" manpage for details" msgstr "" @@ -2798,17 +2790,6 @@ msgstr "" msgid "Server Settings" msgstr "" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "" @@ -2816,7 +2797,7 @@ msgid "Service Type" msgstr "" msgid "Services" -msgstr "" +msgstr "Servisler" msgid "" "Set interface properties regardless of the link carrier (If set, carrier " @@ -2845,25 +2826,25 @@ msgid "Shutdown this network" msgstr "" msgid "Signal" -msgstr "" +msgstr "Sinyal" msgid "Signal Attenuation (SATN)" -msgstr "" +msgstr "Sinyal Zayıflama (SATN)" msgid "Signal:" -msgstr "" +msgstr "Sinyal:" msgid "Size" -msgstr "" +msgstr "Boyut" msgid "Size (.ipk)" -msgstr "" +msgstr "Boyut (.ipk)" msgid "Size of DNS query cache" msgstr "" msgid "Skip" -msgstr "" +msgstr "Atla" msgid "Skip to content" msgstr "" @@ -2875,7 +2856,7 @@ msgid "Slot time" msgstr "" msgid "Software" -msgstr "" +msgstr "Yazılım" msgid "Software VLAN" msgstr "" @@ -2896,13 +2877,10 @@ msgid "" msgstr "" msgid "Sort" -msgstr "" +msgstr "Sıralama" msgid "Source" -msgstr "" - -msgid "Source routing" -msgstr "" +msgstr "Kaynak" msgid "Specifies the directory the device is attached to" msgstr "" @@ -2937,11 +2915,14 @@ msgid "Specify the secret encryption key here." msgstr "" msgid "Start" -msgstr "" +msgstr "BaÅŸlat" msgid "Start priority" msgstr "" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "" @@ -2967,16 +2948,16 @@ msgid "" msgstr "" msgid "Status" -msgstr "" +msgstr "Durum" msgid "Stop" -msgstr "" +msgstr "Durdur" msgid "Strict order" msgstr "" msgid "Submit" -msgstr "" +msgstr "Gönder" msgid "Suppress logging" msgstr "" @@ -3019,7 +3000,7 @@ msgid "Synchronizing..." msgstr "" msgid "System" -msgstr "" +msgstr "Sistem" msgid "System Log" msgstr "" @@ -3092,6 +3073,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3108,9 +3099,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "" @@ -3164,11 +3152,6 @@ msgid "" msgstr "" msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3176,7 +3159,7 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3311,15 +3294,6 @@ msgstr "" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "" @@ -3381,10 +3355,10 @@ msgid "Upload archive..." msgstr "" msgid "Uploaded File" -msgstr "" +msgstr "Yüklenen Dosya" msgid "Uptime" -msgstr "" +msgstr "Açılma süresi" msgid "Use <code>/etc/ethers</code>" msgstr "" @@ -3417,16 +3391,16 @@ msgid "Use builtin IPv6-management" msgstr "" msgid "Use custom DNS servers" -msgstr "" +msgstr "Özel DNS sunucularını kullan" msgid "Use default gateway" -msgstr "" +msgstr "Varsayılan aÄŸ geçidini kullan" msgid "Use gateway metric" -msgstr "" +msgstr "AÄŸ geçidi metriÄŸini kullan" msgid "Use routing table" -msgstr "" +msgstr "Yönlendirme tablosunu kullan" msgid "" "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</" @@ -3437,7 +3411,7 @@ msgid "" msgstr "" msgid "Used" -msgstr "" +msgstr "Kullanılmış" msgid "Used Key Slot" msgstr "" @@ -3454,7 +3428,7 @@ msgid "User key (PEM encoded)" msgstr "" msgid "Username" -msgstr "" +msgstr "Kullanıcı adı" msgid "VC-Mux" msgstr "" @@ -3487,22 +3461,16 @@ msgid "VPNC (CISCO 3000 (and others) VPN)" msgstr "" msgid "Vendor" -msgstr "" +msgstr "Satıcı" msgid "Vendor Class to send when requesting DHCP" msgstr "" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" -msgstr "" +msgstr "Kontrol" msgid "Version" -msgstr "" +msgstr "Versiyon" msgid "WDS" msgstr "" @@ -3527,21 +3495,20 @@ msgid "" "and ad-hoc mode) to be installed." msgstr "" -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" msgid "Warning" -msgstr "" +msgstr "Uyarı" msgid "Warning: There are unsaved changes that will get lost on reboot!" msgstr "" @@ -3551,20 +3518,14 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" -msgstr "" +msgstr "GeniÅŸlik" msgid "WireGuard VPN" msgstr "" msgid "Wireless" -msgstr "" +msgstr "Kablosuz" msgid "Wireless Adapter" msgstr "" @@ -3627,28 +3588,28 @@ msgid "auto" msgstr "otomatik" msgid "baseT" -msgstr "" +msgstr "baseT" msgid "bridged" msgstr "köprülü" msgid "create:" -msgstr "" +msgstr "oluÅŸturma:" msgid "creates a bridge over specified interface(s)" msgstr "" msgid "dB" -msgstr "" +msgstr "dB" msgid "dBm" -msgstr "" +msgstr "dBm" msgid "disable" msgstr "etkin deÄŸil" msgid "disabled" -msgstr "" +msgstr "devre dışı" msgid "expired" msgstr "sona ermiÅŸ" @@ -3662,19 +3623,19 @@ msgid "forward" msgstr "ileri" msgid "full-duplex" -msgstr "" +msgstr "tam çift yönlü" msgid "half-duplex" -msgstr "" +msgstr "yarı çift yönlü" msgid "help" msgstr "yardım" msgid "hidden" -msgstr "" +msgstr "gizli" msgid "hybrid mode" -msgstr "" +msgstr "hibrit mod" msgid "if target is a network" msgstr "eÄŸer hedef aÄŸsa" @@ -3683,34 +3644,31 @@ msgid "input" msgstr "giriÅŸ" msgid "kB" -msgstr "" +msgstr "kB" msgid "kB/s" -msgstr "" +msgstr "kB/s" msgid "kbit/s" -msgstr "" +msgstr "kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "yerel <abbr title=\"Domain Name System\">DNS</abbr> dosyası" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" -msgstr "" +msgstr "dakika" msgid "no" msgstr "hayır" msgid "no link" -msgstr "" +msgstr "baÄŸlantı yok" msgid "none" msgstr "hiçbiri" msgid "not present" -msgstr "" +msgstr "mevcut deÄŸil" msgid "off" msgstr "kapalı" @@ -3719,31 +3677,31 @@ msgid "on" msgstr "açık" msgid "open" -msgstr "" +msgstr "açık" msgid "overlay" -msgstr "" +msgstr "bindirilmiÅŸ" msgid "random" -msgstr "" +msgstr "rastgele" msgid "relay mode" -msgstr "" +msgstr "anahtarlama modu" msgid "routed" msgstr "yönlendirildi" msgid "server mode" -msgstr "" +msgstr "sunucu modu" msgid "stateful-only" msgstr "" msgid "stateless" -msgstr "" +msgstr "durumsuz" msgid "stateless + stateful" -msgstr "" +msgstr "durumsuz + durumlu" msgid "tagged" msgstr "etiketlendi" @@ -3752,7 +3710,7 @@ msgid "time units (TUs / 1.024 ms) [1000-65535]" msgstr "" msgid "unknown" -msgstr "" +msgstr "bilinmeyen" msgid "unlimited" msgstr "sınırsız" @@ -3772,6 +3730,12 @@ msgstr "evet" msgid "« Back" msgstr "« Geri" +#~ msgid "Apply" +#~ msgstr "Uygula" + +#~ msgid "Applying changes" +#~ msgstr "DeÄŸiÅŸiklikleri uygula" + #~ msgid "Action" #~ msgstr "Eylem" diff --git a/modules/luci-base/po/uk/base.po b/modules/luci-base/po/uk/base.po index 8ead616074..ce77675000 100644 --- a/modules/luci-base/po/uk/base.po +++ b/modules/luci-base/po/uk/base.po @@ -183,9 +183,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -227,9 +224,6 @@ msgstr "Ðомер ATM-приÑтрою" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "Концентратор доÑтупу" @@ -337,11 +331,6 @@ msgstr "" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -420,11 +409,14 @@ msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð°Ð½Ñ‚ÐµÐ½Ð¸" msgid "Any zone" msgstr "Будь-Ñка зона" -msgid "Apply" -msgstr "ЗаÑтоÑувати" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "ЗаÑтоÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½" +msgid "Apply unchecked" +msgstr "" + +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -440,6 +432,9 @@ msgstr "" msgid "Associated Stations" msgstr "Приєднані Ñтанції" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -530,9 +525,6 @@ msgstr "Вказана неправильна адреÑа!" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -604,12 +596,20 @@ msgstr "Зміни" msgid "Changes applied." msgstr "Зміни заÑтоÑовано." +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "Зміна Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð°Ð´Ð¼Ñ–Ð½Ñ–Ñтратора Ð´Ð»Ñ Ð´Ð¾Ñтупу до приÑтрою" msgid "Channel" msgstr "Канал" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "Перевірити" @@ -690,12 +690,15 @@ msgstr "" msgid "Configuration" msgstr "КонфігураціÑ" -msgid "Configuration applied." -msgstr "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð·Ð°ÑтоÑована." - msgid "Configuration files will be kept." msgstr "Конфігураційні файли будуть збережені." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "ПідтвердженнÑ" @@ -708,12 +711,15 @@ msgstr "Підключений" msgid "Connection Limit" msgstr "Гранична кількіÑÑ‚ÑŒ підключень" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "ПідключеннÑ" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "Країна" @@ -842,9 +848,6 @@ msgstr "Типовий шлюз" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "Типовий Ñтан" @@ -887,6 +890,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "ДіагноÑтика" @@ -921,6 +927,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "Відкидати RFC1918-відповіді від клієнта на Ñервер" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "Показані тільки непорожні пакети" @@ -1184,6 +1193,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "Файл" @@ -1377,9 +1389,6 @@ msgstr "Призупинити" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1441,8 +1450,8 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "Брандмауер IPv4" -msgid "IPv4 WAN Status" -msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ IPv4 WAN" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "ÐдреÑа IPv4" @@ -1492,15 +1501,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" -msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ IPv6 WAN" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "ÐдреÑа IPv6" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2093,9 +2099,6 @@ msgstr "" msgid "NTP server candidates" msgstr "Кандидати Ð´Ð»Ñ Ñинхронізації NTP-Ñервера" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "Ім'Ñ" @@ -2219,6 +2222,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "Затримка Off-State" @@ -2270,12 +2276,6 @@ msgstr "ÐžÐ¿Ñ†Ñ–Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð°" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2757,9 +2757,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2818,6 +2815,15 @@ msgstr "Показати/приховати пароль" msgid "Revert" msgstr "СкаÑувати зміни" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Корінь" @@ -2833,9 +2839,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2861,14 +2864,6 @@ msgstr "Виконати перевірку файлової ÑиÑтеми" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2896,9 +2891,6 @@ msgstr "Зберегти" msgid "Save & Apply" msgstr "Зберегти Ñ– заÑтоÑувати" -msgid "Save & Apply" -msgstr "Зберегти Ñ– заÑтоÑувати" - msgid "Scan" msgstr "Сканувати" @@ -2927,17 +2919,6 @@ msgstr "РозділÑти клієнтів" msgid "Server Settings" msgstr "ÐаÑтройки Ñервера" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "Ðазва (ім'Ñ) ÑервіÑу" @@ -3034,9 +3015,6 @@ msgstr "СортуваннÑ" msgid "Source" msgstr "Джерело" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "Визначає каталог, до Ñкого приєднаний приÑтрій" @@ -3079,6 +3057,9 @@ msgstr "ЗапуÑтити" msgid "Start priority" msgstr "Стартовий пріоритет" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "ЗапуÑк" @@ -3245,6 +3226,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "Файл приÑтрою пам'ÑÑ‚Ñ– або розділу (наприклад, <code>/dev/sda1</code>)" @@ -3267,9 +3258,6 @@ msgstr "" "Ñ—Ñ… з вихідним файлом Ð´Ð»Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ñ†Ñ–Ð»Ñ–ÑноÑÑ‚Ñ– даних.<br /> ÐатиÑніть " "\"Продовжити\", щоб розпочати процедуру Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸." -msgid "The following changes have been committed" -msgstr "Ðижче наведені зміни були заÑтоÑовані" - msgid "The following changes have been reverted" msgstr "Ðижче наведені зміни були ÑкаÑовані" @@ -3341,11 +3329,6 @@ msgstr "" "адреÑу вашого комп'ютера, щоб знову отримати доÑтуп до приÑтрою." msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3355,8 +3338,8 @@ msgstr "" msgid "There are no active leases." msgstr "Ðктивних оренд немає." -msgid "There are no pending changes to apply!" -msgstr "Ðемає жодних змін до заÑтоÑуваннÑ!" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "Ðемає жодних змін до ÑкаÑуваннÑ!" @@ -3511,15 +3494,6 @@ msgstr "Ð†Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñ‚ÑƒÐ½ÐµÐ»ÑŽ" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "ПотужніÑÑ‚ÑŒ передавача" @@ -3699,12 +3673,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "ÐšÐ»Ð°Ñ Ð¿Ð¾Ñтачальника Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²ÐºÐ¸ при запиті DHCP" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "Перевірте" @@ -3736,16 +3704,15 @@ msgstr "" "WPA-ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” інÑталÑції <em>wpa_supplicant</em> (Ð´Ð»Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ " "клієнта) або <em>hostapd</em> (Ð´Ð»Ñ Ð¢Ð¾Ñ‡ÐºÐ¸ доÑтупу та режиму ad-hoc)." -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "Очікуємо, доки зміни наберуть чинноÑÑ‚Ñ–..." msgid "Waiting for command to complete..." msgstr "Очікуємо Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3760,12 +3727,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3911,9 +3872,6 @@ msgstr "" "Локальний <abbr title=\"Domain Name System — ÑиÑтема доменних імен\">DNS</" "abbr>-файл" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3989,6 +3947,30 @@ msgstr "так" msgid "« Back" msgstr "« Ðазад" +#~ msgid "IPv4 WAN Status" +#~ msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ IPv4 WAN" + +#~ msgid "IPv6 WAN Status" +#~ msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ IPv6 WAN" + +#~ msgid "Apply" +#~ msgstr "ЗаÑтоÑувати" + +#~ msgid "Applying changes" +#~ msgstr "ЗаÑтоÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½" + +#~ msgid "Configuration applied." +#~ msgstr "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð·Ð°ÑтоÑована." + +#~ msgid "Save & Apply" +#~ msgstr "Зберегти Ñ– заÑтоÑувати" + +#~ msgid "The following changes have been committed" +#~ msgstr "Ðижче наведені зміни були заÑтоÑовані" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "Ðемає жодних змін до заÑтоÑуваннÑ!" + #~ msgid "Action" #~ msgstr "ДіÑ" diff --git a/modules/luci-base/po/vi/base.po b/modules/luci-base/po/vi/base.po index 888fc92bfe..c70b740ddb 100644 --- a/modules/luci-base/po/vi/base.po +++ b/modules/luci-base/po/vi/base.po @@ -166,9 +166,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -202,9 +199,6 @@ msgstr "" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "" @@ -307,11 +301,6 @@ msgstr "" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -390,11 +379,14 @@ msgstr "" msgid "Any zone" msgstr "" -msgid "Apply" -msgstr "Ãp dụng" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" + +msgid "Apply unchecked" +msgstr "" -msgid "Applying changes" -msgstr "Tiến hà nh thay đổi" +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -410,6 +402,9 @@ msgstr "" msgid "Associated Stations" msgstr "" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -500,9 +495,6 @@ msgstr "" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -571,12 +563,20 @@ msgstr "Thay đổi" msgid "Changes applied." msgstr "Thay đổi đã áp dụng" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "" msgid "Channel" msgstr "Kênh" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "" @@ -646,10 +646,13 @@ msgstr "" msgid "Configuration" msgstr "Cấu hình" -msgid "Configuration applied." +msgid "Configuration files will be kept." msgstr "" -msgid "Configuration files will be kept." +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" msgstr "" msgid "Confirmation" @@ -664,10 +667,13 @@ msgstr "" msgid "Connection Limit" msgstr "Giá»›i hạn kết nối" -msgid "Connection to server fails when TLS cannot be used" +msgid "Connections" msgstr "" -msgid "Connections" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." msgstr "" msgid "Country" @@ -798,9 +804,6 @@ msgstr "" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "" @@ -840,6 +843,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "" @@ -872,6 +878,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "" @@ -1126,6 +1135,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "" @@ -1319,9 +1331,6 @@ msgstr "Hang Up" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1379,7 +1388,7 @@ msgstr "" msgid "IPv4 Firewall" msgstr "" -msgid "IPv4 WAN Status" +msgid "IPv4 Upstream" msgstr "" msgid "IPv4 address" @@ -1430,15 +1439,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" +msgid "IPv6 Upstream" msgstr "" msgid "IPv6 address" msgstr "" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2014,9 +2020,6 @@ msgstr "" msgid "NTP server candidates" msgstr "" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "Tên" @@ -2140,6 +2143,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "" @@ -2191,12 +2197,6 @@ msgstr "" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2657,9 +2657,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2718,6 +2715,15 @@ msgstr "" msgid "Revert" msgstr "Revert" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "" @@ -2733,9 +2739,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2761,14 +2764,6 @@ msgstr "" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2796,9 +2791,6 @@ msgstr "LÆ°u" msgid "Save & Apply" msgstr "LÆ°u & áp dụng " -msgid "Save & Apply" -msgstr "" - msgid "Scan" msgstr "Scan" @@ -2825,17 +2817,6 @@ msgstr "Cô láºp đối tượng" msgid "Server Settings" msgstr "" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "" @@ -2928,9 +2909,6 @@ msgstr "" msgid "Source" msgstr "Nguồn" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "" @@ -2969,6 +2947,9 @@ msgstr "Bắt đầu " msgid "Start priority" msgstr "Bắt đầu Æ°u tiên" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "" @@ -3119,6 +3100,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3139,9 +3130,6 @@ msgid "" "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been committed" -msgstr "" - msgid "The following changes have been reverted" msgstr "Những thay đối sau đây đã được để trở vá» tình trạng cÅ©. " @@ -3199,11 +3187,6 @@ msgstr "" "máy tÃnh để tiếp cáºn thiết bị má»™t lần nữa, phụ thuá»™c và o cà i đặt của bạn. " msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3213,7 +3196,7 @@ msgstr "" msgid "There are no active leases." msgstr "" -msgid "There are no pending changes to apply!" +msgid "There are no changes to apply." msgstr "" msgid "There are no pending changes to revert!" @@ -3353,15 +3336,6 @@ msgstr "" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "" @@ -3534,12 +3508,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "" @@ -3569,16 +3537,15 @@ msgid "" "and ad-hoc mode) to be installed." msgstr "" -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "" msgid "Waiting for command to complete..." msgstr "" +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3593,12 +3560,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3740,9 +3701,6 @@ msgstr "" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "Táºp tin <abbr title=\"Domain Name System\">DNS</abbr> địa phÆ°Æ¡ng" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3818,6 +3776,12 @@ msgstr "" msgid "« Back" msgstr "" +#~ msgid "Apply" +#~ msgstr "Ãp dụng" + +#~ msgid "Applying changes" +#~ msgstr "Tiến hà nh thay đổi" + #~ msgid "Action" #~ msgstr "Action" diff --git a/modules/luci-base/po/zh-cn/base.po b/modules/luci-base/po/zh-cn/base.po index df6ce8b746..f588adcfa7 100644 --- a/modules/luci-base/po/zh-cn/base.po +++ b/modules/luci-base/po/zh-cn/base.po @@ -162,9 +162,6 @@ msgstr "A43C + J43 + A43 + V43" msgid "ADSL" msgstr "ADSL" -msgid "AICCU (SIXXS)" -msgstr "AICCU (SIXXS)" - msgid "ANSI T1.413" msgstr "ANSI T1.413" @@ -200,9 +197,6 @@ msgstr "ATM 设备å·ç " msgid "ATU-C System Vendor ID" msgstr "ATU-C 系统供应商 ID" -msgid "AYIYA" -msgstr "AYIYA" - msgid "Access Concentrator" msgstr "接入集ä¸å™¨" @@ -305,13 +299,6 @@ msgstr "å…许 127.0.0.0/8 回环范围内的上行å“应,例如:RBL æœåŠ¡" msgid "Allowed IPs" msgstr "å…许的 IP" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" -"也请查看 SIXXS 上的<a href=\"https://www.sixxs.net/faq/connectivity/?" -"faq=comparison\">隧é“对比</a>" - msgid "Always announce default router" msgstr "总是通告默认路由" @@ -390,11 +377,14 @@ msgstr "天线é…ç½®" msgid "Any zone" msgstr "ä»»æ„区域" -msgid "Apply" -msgstr "应用" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "æ£åœ¨åº”用更改" +msgid "Apply unchecked" +msgstr "" + +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -410,6 +400,9 @@ msgstr "å°†æ¤åå…进制å ID å‰ç¼€åˆ†é…ç»™æ¤æŽ¥å£" msgid "Associated Stations" msgstr "已连接站点" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "认è¯ç»„" @@ -500,9 +493,6 @@ msgstr "指定了错误的地å€ï¼" msgid "Band" msgstr "频宽" -msgid "Behind NAT" -msgstr "在 NAT 网络内" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -573,12 +563,20 @@ msgstr "修改数" msgid "Changes applied." msgstr "更改已应用" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "修改访问设备的管ç†å‘˜å¯†ç " msgid "Channel" msgstr "ä¿¡é“" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "检查" @@ -655,12 +653,15 @@ msgstr "" msgid "Configuration" msgstr "é…ç½®" -msgid "Configuration applied." -msgstr "é…置已应用。" - msgid "Configuration files will be kept." msgstr "é…置文件将被ä¿ç•™ã€‚" +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "确认密ç " @@ -673,12 +674,15 @@ msgstr "已连接" msgid "Connection Limit" msgstr "连接数é™åˆ¶" -msgid "Connection to server fails when TLS cannot be used" -msgstr "当 TLS ä¸å¯ç”¨æ—¶ï¼Œä¸ŽæœåŠ¡å™¨è¿žæŽ¥å¤±è´¥" - msgid "Connections" msgstr "连接" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "国家" @@ -806,9 +810,6 @@ msgstr "默认网关" msgid "Default is stateless + stateful" msgstr "é»˜è®¤æ˜¯æ— çŠ¶æ€çš„ + 有状æ€çš„" -msgid "Default route" -msgstr "默认路由" - msgid "Default state" msgstr "默认状æ€" @@ -850,6 +851,9 @@ msgstr "设备æ£åœ¨é‡å¯..." msgid "Device unreachable" msgstr "æ— æ³•è¿žæŽ¥åˆ°è®¾å¤‡" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "网络诊æ–" @@ -884,6 +888,9 @@ msgstr "ç¦ç”¨ï¼ˆé»˜è®¤ï¼‰" msgid "Discard upstream RFC1918 responses" msgstr "丢弃 RFC1918 上行å“应数æ®" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "åªæ˜¾ç¤ºæœ‰å†…容的软件包" @@ -1136,6 +1143,9 @@ msgstr "" msgid "FT protocol" msgstr "FT åè®®" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "文件" @@ -1331,9 +1341,6 @@ msgstr "挂起" msgid "Header Error Code Errors (HEC)" msgstr "请求头错误代ç 错误(HEC)" -msgid "Heartbeat" -msgstr "心跳" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1389,8 +1396,8 @@ msgstr "IPv4" msgid "IPv4 Firewall" msgstr "IPv4 防ç«å¢™" -msgid "IPv4 WAN Status" -msgstr "IPv4 WAN 状æ€" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "IPv4 地å€" @@ -1440,15 +1447,12 @@ msgstr "IPv6 设置" msgid "IPv6 ULA-Prefix" msgstr "IPv6 ULA å‰ç¼€" -msgid "IPv6 WAN Status" -msgstr "IPv6 WAN 状æ€" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "IPv6 地å€" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "绑定到隧é“本端的 IPv6 地å€ï¼ˆå¯é€‰ï¼‰" - msgid "IPv6 assignment hint" msgstr "IPv6 分é…æ示" @@ -2030,9 +2034,6 @@ msgstr "NT 域" msgid "NTP server candidates" msgstr "候选 NTP æœåŠ¡å™¨" -msgid "NTP sync time-out" -msgstr "NTP åŒæ¥è¶…æ—¶" - msgid "Name" msgstr "å称" @@ -2156,6 +2157,9 @@ msgstr "混淆组密ç " msgid "Obfuscated Password" msgstr "混淆密ç " +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "å…³é—时间" @@ -2205,12 +2209,6 @@ msgstr "移除的选项" msgid "Optional" msgstr "å¯é€‰" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "å¯é€‰ï¼Œè®¾ç½®è¿™ä¸ªé€‰é¡¹ä¼šè¦†ç›–默认æœåŠ¡å™¨ï¼ˆtic.sixxs.net)" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "å¯é€‰ï¼Œå¦‚果您的 SIXXS è´¦å·æ‹¥æœ‰ä¸€ä¸ªä»¥ä¸Šçš„隧é“请设置æ¤é¡¹" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2684,9 +2682,6 @@ msgstr "请求 IPv6 地å€" msgid "Request IPv6-prefix of length" msgstr "请求指定长度的 IPv6 å‰ç¼€" -msgid "Require TLS" -msgstr "必须使用 TLS" - msgid "Required" msgstr "å¿…é¡»" @@ -2749,6 +2744,15 @@ msgstr "显示/éšè— 密ç " msgid "Revert" msgstr "放弃" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "Root" @@ -2764,9 +2768,6 @@ msgstr "路由å…许的 IP" msgid "Route type" msgstr "路由类型" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "下行接å£çš„路由 IPv6 å‰ç¼€" - msgid "Router Advertisement-Service" msgstr "路由通告æœåŠ¡" @@ -2790,14 +2791,6 @@ msgstr "文件系统检查" msgid "SHA256" msgstr "SHA256" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "SIXXS ä»…æ”¯æŒ TIC,对于使用 IP åè®® 41(RFC4213)的é™æ€éš§é“,使用 6in4" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "SIXXS-handle[/Tunnel-ID]" - msgid "SNR" msgstr "SNR" @@ -2825,9 +2818,6 @@ msgstr "ä¿å˜" msgid "Save & Apply" msgstr "ä¿å˜&应用" -msgid "Save & Apply" -msgstr "ä¿å˜&应用" - msgid "Scan" msgstr "扫æ" @@ -2854,17 +2844,6 @@ msgstr "隔离客户端" msgid "Server Settings" msgstr "æœåŠ¡å™¨è®¾ç½®" -msgid "Server password" -msgstr "æœåŠ¡å™¨å¯†ç " - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "æœåŠ¡å™¨å¯†ç ,如果用户å包å«éš§é“ ID 则在æ¤å¡«å†™éš§é“自己的密ç " - -msgid "Server username" -msgstr "æœåŠ¡å™¨ç”¨æˆ·å" - msgid "Service Name" msgstr "æœåŠ¡å" @@ -2961,9 +2940,6 @@ msgstr "排åº" msgid "Source" msgstr "æºåœ°å€" -msgid "Source routing" -msgstr "æºè·¯ç”±" - msgid "Specifies the directory the device is attached to" msgstr "指定设备的挂载目录" @@ -3002,6 +2978,9 @@ msgstr "开始" msgid "Start priority" msgstr "å¯åŠ¨ä¼˜å…ˆçº§" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "å¯åŠ¨é¡¹" @@ -3159,6 +3138,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "由于以下错误,é…ç½®æ–‡ä»¶æ— æ³•è¢«åŠ è½½ï¼š" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "å˜å‚¨å™¨æˆ–分区的设备文件,(例如:<code>/dev/sda1</code>)" @@ -3179,9 +3168,6 @@ msgstr "" "å›ºä»¶å·²ä¸Šä¼ ï¼Œè¯·æ³¨æ„æ ¸å¯¹æ–‡ä»¶å¤§å°å’Œæ ¡éªŒå€¼ï¼<br />点击下é¢çš„“继ç»â€å¼€å§‹åˆ·å†™ï¼Œåˆ·æ–°" "过程ä¸åˆ‡å‹¿æ–电ï¼" -msgid "The following changes have been committed" -msgstr "以下更改已æ交" - msgid "The following changes have been reverted" msgstr "以下更改已放弃" @@ -3241,11 +3227,6 @@ msgstr "" "é’ŸåŽå³å¯å°è¯•é‡æ–°è¿žæŽ¥åˆ°è·¯ç”±ã€‚您å¯èƒ½éœ€è¦æ›´æ”¹è®¡ç®—机的 IP 地å€ä»¥é‡æ–°è¿žæŽ¥ã€‚" msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "隧é“端点在 NAT 之åŽï¼Œé»˜è®¤ä¸ºç¦ç”¨ï¼Œä»…适用于 AYIYA" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "ä¸æ”¯æŒæ‰€ä¸Šä¼ çš„æ˜ åƒæ–‡ä»¶æ ¼å¼ï¼Œè¯·é€‰æ‹©é€‚åˆå½“å‰å¹³å°çš„é€šç”¨æ˜ åƒæ–‡ä»¶ã€‚" @@ -3253,8 +3234,8 @@ msgstr "ä¸æ”¯æŒæ‰€ä¸Šä¼ çš„æ˜ åƒæ–‡ä»¶æ ¼å¼ï¼Œè¯·é€‰æ‹©é€‚åˆå½“å‰å¹³å°çš„ msgid "There are no active leases." msgstr "没有已分é…的租约。" -msgid "There are no pending changes to apply!" -msgstr "没有待生效的更改ï¼" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "没有å¯æ”¾å¼ƒçš„更改ï¼" @@ -3394,15 +3375,6 @@ msgstr "隧é“接å£" msgid "Tunnel Link" msgstr "隧é“链接" -msgid "Tunnel broker protocol" -msgstr "隧é“åè®®" - -msgid "Tunnel setup server" -msgstr "隧é“é…ç½®æœåŠ¡å™¨" - -msgid "Tunnel type" -msgstr "隧é“类型" - msgid "Tx-Power" msgstr "ä¼ è¾“åŠŸçŽ‡" @@ -3582,12 +3554,6 @@ msgstr "Vendor" msgid "Vendor Class to send when requesting DHCP" msgstr "请求 DHCP æ—¶å‘é€çš„ Vendor Class 选项" -msgid "Verbose" -msgstr "详细" - -msgid "Verbose logging by aiccu daemon" -msgstr "Aiccu 守护程åºè¯¦ç»†æ—¥å¿—" - msgid "Verify" msgstr "验è¯" @@ -3619,16 +3585,15 @@ msgstr "" "WPA åŠ å¯†éœ€è¦å®‰è£… wpa_supplicant(客户端模å¼ï¼‰æˆ–安装 hostapd(接入点 APã€ç‚¹å¯¹" "点 Ad-Hoc 模å¼ï¼‰ã€‚" -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "NTP åŒæ¥å‰çš„ç‰å¾…时间,设置为 0 表示ä¸ç‰å¾…(å¯é€‰ï¼‰" - msgid "Waiting for changes to be applied..." msgstr "æ£åœ¨åº”用更改..." msgid "Waiting for command to complete..." msgstr "ç‰å¾…命令执行完æˆ..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "ç‰å¾…设备..." @@ -3643,12 +3608,6 @@ msgid "" "communications" msgstr "当使用 PSK 时,PMK å¯ä»¥åœ¨æ²¡æœ‰ AP 间通信的情况下在本地生æˆ" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "是å¦æ·»åŠ 一æ¡é€šå‘隧é“çš„ IPv6 默认路由" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "是å¦ä»…路由æ¥è‡ªåˆ†å‘å‰ç¼€çš„æ•°æ®åŒ…" - msgid "Width" msgstr "频宽" @@ -3790,9 +3749,6 @@ msgstr "kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "本地 <abbr title=\"Domain Name Syste\">DNS</abbr> 解æžæ–‡ä»¶" -msgid "minimum 1280, maximum 1480" -msgstr "最å°å€¼ 1280,最大值 1480" - msgid "minutes" msgstr "分钟" @@ -3868,119 +3824,8 @@ msgstr "是" msgid "« Back" msgstr "« åŽé€€" -#~ msgid "Action" -#~ msgstr "动作" - -#~ msgid "Buttons" -#~ msgstr "按键" - -#~ msgid "Handler" -#~ msgstr "处ç†ç¨‹åº" - -#~ msgid "Maximum hold time" -#~ msgstr "最大æŒç»æ—¶é—´" - -#~ msgid "Minimum hold time" -#~ msgstr "最低æŒç»æ—¶é—´" - -#~ msgid "Path to executable which handles the button event" -#~ msgstr "处ç†æŒ‰é”®åŠ¨ä½œçš„å¯æ‰§è¡Œæ–‡ä»¶è·¯å¾„" - -#~ msgid "Specifies the button state to handle" -#~ msgstr "指定è¦å¤„ç†çš„按键状æ€" - -#~ msgid "This page allows the configuration of custom button actions" -#~ msgstr "自定义按键动作。" - -#~ msgid "Leasetime" -#~ msgstr "租用时间" - -#~ msgid "Optional." -#~ msgstr "å¯é€‰ã€‚" - -#~ msgid "navigation Navigation" -#~ msgstr "导航" - -#~ msgid "skiplink1 Skip to navigation" -#~ msgstr "skiplink1 跳转到导航" - -#~ msgid "skiplink2 Skip to content" -#~ msgstr "skiplink2 跳到内容" - -#~ msgid "AuthGroup" -#~ msgstr "认è¯ç»„" - -#~ msgid "automatic" -#~ msgstr "自动" - -#~ msgid "AR Support" -#~ msgstr "AR 支æŒ" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Qualcomm/Atheros 802.11%s æ— çº¿æŽ§åˆ¶å™¨" - -#~ msgid "Background Scan" -#~ msgstr "åŽå°æœç´¢" - -#~ msgid "Compression" -#~ msgstr "压缩" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "åœç”¨ HW-Beacon 计时器" - -#~ msgid "Do not send probe responses" -#~ msgstr "ä¸å›žé€æŽ¢æµ‹å“应" - -#~ msgid "Fast Frames" -#~ msgstr "快速帧" - -#~ msgid "Maximum Rate" -#~ msgstr "最高速率" - -#~ msgid "Minimum Rate" -#~ msgstr "最低速率" - -#~ msgid "Multicast Rate" -#~ msgstr "多æ’速率" - -#~ msgid "Outdoor Channels" -#~ msgstr "户外频é“" - -#~ msgid "Regulatory Domain" -#~ msgstr "æ— çº¿ç½‘ç»œå›½å®¶åŒºåŸŸ" - -#~ msgid "Separate WDS" -#~ msgstr "隔离 WDS" - -#~ msgid "Static WDS" -#~ msgstr "é™æ€ WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Turbo 模å¼" - -#~ msgid "XR Support" -#~ msgstr "XR 支æŒ" - -#~ msgid "Required. Public key of peer." -#~ msgstr "必须,Peer 的公钥。" - -#~ msgid "An additional network will be created if you leave this checked." -#~ msgstr "如果选ä¸æ¤å¤é€‰æ¡†ï¼Œåˆ™ä¼šåˆ›å»ºä¸€ä¸ªé™„åŠ ç½‘ç»œã€‚" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "å–消选ä¸å°†ä¼šå¦å¤–创建一个新网络,而ä¸ä¼šè¦†ç›–当å‰ç½‘络设置" - -#~ msgid "Join Network: Settings" -#~ msgstr "åŠ å…¥ç½‘ç»œï¼šè®¾ç½®" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "ç«¯å£ %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "ç«¯å£ %d 在多个 VLAN ä¸å‡æœªæ ‡è®°ï¼" +#~ msgid "IPv4 WAN Status" +#~ msgstr "IPv4 WAN 状æ€" -#~ msgid "VLAN Interface" -#~ msgstr "VLAN 接å£" +#~ msgid "IPv6 WAN Status" +#~ msgstr "IPv6 WAN 状æ€" diff --git a/modules/luci-base/po/zh-tw/base.po b/modules/luci-base/po/zh-tw/base.po index edc5207bd9..c1b7cac6fd 100644 --- a/modules/luci-base/po/zh-tw/base.po +++ b/modules/luci-base/po/zh-tw/base.po @@ -167,9 +167,6 @@ msgstr "" msgid "ADSL" msgstr "" -msgid "AICCU (SIXXS)" -msgstr "" - msgid "ANSI T1.413" msgstr "" @@ -205,9 +202,6 @@ msgstr "ATMè£ç½®è™Ÿç¢¼" msgid "ATU-C System Vendor ID" msgstr "" -msgid "AYIYA" -msgstr "" - msgid "Access Concentrator" msgstr "接入集線器" @@ -310,11 +304,6 @@ msgstr "å…許127.0.0.0/8範åœå…§çš„上游回應,例如:RBLæœå‹™" msgid "Allowed IPs" msgstr "" -msgid "" -"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" -"\">Tunneling Comparison</a> on SIXXS" -msgstr "" - msgid "Always announce default router" msgstr "" @@ -393,11 +382,14 @@ msgstr "天線è¨å®š" msgid "Any zone" msgstr "ä»»æ„å€åŸŸ" -msgid "Apply" -msgstr "套用" +msgid "Apply request failed with status <code>%h</code>" +msgstr "" -msgid "Applying changes" -msgstr "æ£åœ¨å¥—用變更" +msgid "Apply unchecked" +msgstr "" + +msgid "Architecture" +msgstr "" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -413,6 +405,9 @@ msgstr "" msgid "Associated Stations" msgstr "已連接站點" +msgid "Associations" +msgstr "" + msgid "Auth Group" msgstr "" @@ -503,9 +498,6 @@ msgstr "指定了錯誤的ä½ç½®ï¼" msgid "Band" msgstr "" -msgid "Behind NAT" -msgstr "" - msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " @@ -576,12 +568,20 @@ msgstr "待修改" msgid "Changes applied." msgstr "修改已套用" +msgid "Changes have been reverted." +msgstr "" + msgid "Changes the administrator password for accessing the device" msgstr "修改管ç†å“¡å¯†ç¢¼" msgid "Channel" msgstr "é »é“" +msgid "" +"Channel %d is not available in the %s regulatory domain and has been auto-" +"adjusted to %d." +msgstr "" + msgid "Check" msgstr "檢查" @@ -657,12 +657,15 @@ msgstr "" msgid "Configuration" msgstr "è¨å®š" -msgid "Configuration applied." -msgstr "啟用è¨å®š" - msgid "Configuration files will be kept." msgstr "è¨å®šæª”將被å˜æª”" +msgid "Configuration has been applied." +msgstr "" + +msgid "Configuration has been rolled back!" +msgstr "" + msgid "Confirmation" msgstr "å†ç¢ºèª" @@ -675,12 +678,15 @@ msgstr "已連線" msgid "Connection Limit" msgstr "連線é™åˆ¶" -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - msgid "Connections" msgstr "連線數" +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + msgid "Country" msgstr "國別" @@ -809,9 +815,6 @@ msgstr "é è¨åŒé“器" msgid "Default is stateless + stateful" msgstr "" -msgid "Default route" -msgstr "" - msgid "Default state" msgstr "é è¨ç‹€æ…‹" @@ -853,6 +856,9 @@ msgstr "" msgid "Device unreachable" msgstr "" +msgid "Device unreachable!" +msgstr "" + msgid "Diagnostics" msgstr "診斷" @@ -886,6 +892,9 @@ msgstr "" msgid "Discard upstream RFC1918 responses" msgstr "丟棄上游RFC1918 虛擬IP網路的回應" +msgid "Dismiss" +msgstr "" + msgid "Displaying only packages containing" msgstr "僅顯示內å«çš„軟體" @@ -1139,6 +1148,9 @@ msgstr "" msgid "FT protocol" msgstr "" +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + msgid "File" msgstr "檔案" @@ -1332,9 +1344,6 @@ msgstr "æ–·ç·š" msgid "Header Error Code Errors (HEC)" msgstr "" -msgid "Heartbeat" -msgstr "" - msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." @@ -1390,8 +1399,8 @@ msgstr "IPv4版" msgid "IPv4 Firewall" msgstr "IPv4防ç«ç‰†" -msgid "IPv4 WAN Status" -msgstr "IPv4å¯¬é »é€£ç·šç‹€æ…‹" +msgid "IPv4 Upstream" +msgstr "" msgid "IPv4 address" msgstr "IPv4ä½å€" @@ -1441,15 +1450,12 @@ msgstr "" msgid "IPv6 ULA-Prefix" msgstr "" -msgid "IPv6 WAN Status" -msgstr "IPv6å¯¬é »é€£ç·šç‹€æ…‹" +msgid "IPv6 Upstream" +msgstr "" msgid "IPv6 address" msgstr "IPv6ä½å€" -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - msgid "IPv6 assignment hint" msgstr "" @@ -2021,9 +2027,6 @@ msgstr "" msgid "NTP server candidates" msgstr "NTP伺æœå™¨å‚™é¸" -msgid "NTP sync time-out" -msgstr "" - msgid "Name" msgstr "å稱" @@ -2147,6 +2150,9 @@ msgstr "" msgid "Obfuscated Password" msgstr "" +msgid "Obtain IPv6-Address" +msgstr "" + msgid "Off-State Delay" msgstr "關閉狀態延é²" @@ -2196,12 +2202,6 @@ msgstr "é¸é …已移除" msgid "Optional" msgstr "" -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." @@ -2671,9 +2671,6 @@ msgstr "" msgid "Request IPv6-prefix of length" msgstr "" -msgid "Require TLS" -msgstr "" - msgid "Required" msgstr "" @@ -2732,6 +2729,15 @@ msgstr "明示/éš±è— å¯†ç¢¼" msgid "Revert" msgstr "回溯" +msgid "Revert changes" +msgstr "" + +msgid "Revert request failed with status <code>%h</code>" +msgstr "" + +msgid "Reverting configuration…" +msgstr "" + msgid "Root" msgstr "æ ¹" @@ -2747,9 +2753,6 @@ msgstr "" msgid "Route type" msgstr "" -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - msgid "Router Advertisement-Service" msgstr "" @@ -2773,14 +2776,6 @@ msgstr "執行系統檢查" msgid "SHA256" msgstr "" -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - msgid "SNR" msgstr "" @@ -2808,9 +2803,6 @@ msgstr "ä¿å˜" msgid "Save & Apply" msgstr "ä¿å˜ä¸¦å•Ÿç”¨" -msgid "Save & Apply" -msgstr "ä¿å˜ & 啟用" - msgid "Scan" msgstr "掃æ" @@ -2837,17 +2829,6 @@ msgstr "分隔用戶端" msgid "Server Settings" msgstr "伺æœå™¨è¨å®šå€¼" -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - msgid "Service Name" msgstr "æœå‹™å稱" @@ -2943,9 +2924,6 @@ msgstr "分類" msgid "Source" msgstr "來æº" -msgid "Source routing" -msgstr "" - msgid "Specifies the directory the device is attached to" msgstr "指定這個è¨å‚™è¢«é™„掛到那個目錄" @@ -2984,6 +2962,9 @@ msgstr "啟用" msgid "Start priority" msgstr "å•Ÿç”¨å„ªå…ˆæ¬Šé †åº" +msgid "Starting configuration apply…" +msgstr "" + msgid "Startup" msgstr "å•Ÿå‹•" @@ -3145,6 +3126,16 @@ msgid "The configuration file could not be loaded due to the following error:" msgstr "" 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 " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." "</abbr> <code>/dev/sda1</code>)" msgstr "" @@ -3167,9 +3158,6 @@ msgstr "" "è¦åˆ·çš„æ˜ åƒæª”已上傳.下é¢æ˜¯é€™å€‹æ ¡é©—碼和檔案大å°è©³åˆ—, 用原始檔比å°å®ƒé–€ä»¥ç¢ºä¿è³‡æ–™" "完整性.<br />按下é¢çš„\"繼續\"便å¯ä»¥é–‹å•Ÿæ›´æ–°æµç¨‹." -msgid "The following changes have been committed" -msgstr "接下來的修改已經被承諾" - msgid "The following changes have been reverted" msgstr "接下來的修改已經被回復" @@ -3231,11 +3219,6 @@ msgstr "" "è¦æ›´æ–°æ‚¨é›»è…¦çš„ä½å€ä»¥ä¾¿å†é€£è¨å‚™, 端看您的è¨å®š. " msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" @@ -3244,8 +3227,8 @@ msgstr "" msgid "There are no active leases." msgstr "租賃尚未啟動." -msgid "There are no pending changes to apply!" -msgstr "å°šç„¡è½å€™çš„修改被採用" +msgid "There are no changes to apply." +msgstr "" msgid "There are no pending changes to revert!" msgstr "å°šç„¡è½å€™çš„修改被復元!" @@ -3385,15 +3368,6 @@ msgstr "通é“介é¢" msgid "Tunnel Link" msgstr "" -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - msgid "Tx-Power" msgstr "傳é€-功率" @@ -3571,12 +3545,6 @@ msgstr "" msgid "Vendor Class to send when requesting DHCP" msgstr "當請求DHCPå°åŒ…時è¦å‚³é€çš„è£½é€ å•†é¡žåˆ¥ç¢¼" -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - msgid "Verify" msgstr "確èª" @@ -3608,16 +3576,15 @@ msgstr "" "WPA-åŠ å¯†éœ€è¦ wpa_supplican(終端模å¼)或者hostapd熱點(å°AP或者是 ad-hoc模å¼)å·²" "被安è£." -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - msgid "Waiting for changes to be applied..." msgstr "ç‰å¾…修改被啟用..." msgid "Waiting for command to complete..." msgstr "ç‰å¾…完整性指令..." +msgid "Waiting for configuration to get applied… %ds" +msgstr "" + msgid "Waiting for device..." msgstr "" @@ -3632,12 +3599,6 @@ msgid "" "communications" msgstr "" -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - msgid "Width" msgstr "" @@ -3777,9 +3738,6 @@ msgstr "kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "本地<abbr title=\"Domain Name System\">DNS</abbr> 檔案" -msgid "minimum 1280, maximum 1480" -msgstr "" - msgid "minutes" msgstr "" @@ -3855,6 +3813,30 @@ msgstr "是的" msgid "« Back" msgstr "« 倒退" +#~ msgid "IPv4 WAN Status" +#~ msgstr "IPv4å¯¬é »é€£ç·šç‹€æ…‹" + +#~ msgid "IPv6 WAN Status" +#~ msgstr "IPv6å¯¬é »é€£ç·šç‹€æ…‹" + +#~ msgid "Apply" +#~ msgstr "套用" + +#~ msgid "Applying changes" +#~ msgstr "æ£åœ¨å¥—用變更" + +#~ msgid "Configuration applied." +#~ msgstr "啟用è¨å®š" + +#~ msgid "Save & Apply" +#~ msgstr "ä¿å˜ & 啟用" + +#~ msgid "The following changes have been committed" +#~ msgstr "接下來的修改已經被承諾" + +#~ msgid "There are no pending changes to apply!" +#~ msgstr "å°šç„¡è½å€™çš„修改被採用" + #~ msgid "Action" #~ msgstr "動作" diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview.htm index 2512a35b3c..14be401697 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview.htm @@ -164,7 +164,7 @@ ifc.ip6addrs[i] ); } - + if (ifc.ip6prefix) { html += String.format('<strong><%:IPv6-PD%>:</strong> %s<br />', ifc.ip6prefix); @@ -212,20 +212,20 @@ <fieldset class="cbi-section"> <legend><%:Interface Overview%></legend> - <table class="cbi-section-table" style="margin:10px; empty-cells:hide"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Network%></th> - <th class="cbi-section-table-cell" style="text-align:left"><%:Status%></th> - <th class="cbi-section-table-cell"><%:Actions%></th> - </tr> + <div class="table cbi-section-table" style="margin:10px; empty-cells:hide"> + <div class="tr cbi-section-table-titles"> + <div class="th"><%:Network%></div> + <div class="th left"><%:Status%></div> + <div class="th"><%:Actions%></div> + </div> <% for i, net in ipairs(netlist) do local z = net[3] local c = z and z:get_color() or "#EEEEEE" local t = z and translate("Part of zone %q" % z:name()) or translate("No zone assigned") %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=i % 2 + 1%>"> - <td class="cbi-value-field" style="padding:3px"> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=i % 2 + 1%>"> + <div class="td"> <div class="ifacebox"> <div class="ifacebox-head" style="background-color:<%=c%>" title="<%=pcdata(t)%>"> <strong><%=net[1]:upper()%></strong> @@ -235,19 +235,19 @@ <small>?</small> </div> </div> - </td> - <td class="cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px" id="<%=net[1]%>-ifc-description"> + </div> + <div class="td left" id="<%=net[1]%>-ifc-description"> <em><%:Collecting data...%></em> - </td> - <td style="width:420px"> + </div> + <div class="td"> <input type="button" class="cbi-button cbi-button-reload" style="width:100px" onclick="iface_shutdown('<%=net[1]%>', true)" title="<%:Reconnect this interface%>" value="<%:Connect%>" /> <input type="button" class="cbi-button cbi-button-reset" style="width:100px" onclick="iface_shutdown('<%=net[1]%>', false)" title="<%:Shutdown this interface%>" value="<%:Stop%>" /> <input type="button" class="cbi-button cbi-button-edit" style="width:100px" onclick="location.href='<%=url("admin/network/network", net[1])%>'" title="<%:Edit this interface%>" value="<%:Edit%>" id="<%=net[1]%>-ifc-edit" /> <input type="button" class="cbi-button cbi-button-remove" style="width:100px" onclick="iface_delete('<%=net[1]%>')" value="<%:Delete%>" /> - </td> - </tr> + </div> + </div> <% end %> - </table> + </div> <input type="button" class="cbi-button cbi-button-add" value="<%:Add new interface...%>" onclick="location.href='<%=url("admin/network/iface_add")%>'" /> </fieldset> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm index b15dd13f39..58f5400da7 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm @@ -71,17 +71,17 @@ ); //]]></script> -<table> - <tr class="cbi-section-table"> - <td></td> - <td class="cbi-value-field" style="min-width:16px; padding:3px; text-align:center" id="<%=self.option%>-ifc-signal"> +<div class="table"> + <div class="tr cbi-section-table"> + <div class="td"></div> + <div class="td cbi-value-field" style="min-width:16px; padding:3px; text-align:center" id="<%=self.option%>-ifc-signal"> <img src="<%=resource%>/icons/ethernet_disabled.png" style="width:16px; height:16px" /><br /> <small>?</small> - </td> - <td class="cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px" id="<%=self.option%>-ifc-description"> + </div> + <div class="td cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px" id="<%=self.option%>-ifc-description"> <em><%:Collecting data...%></em> - </td> - </tr> -</table> + </div> + </div> +</div> <%+cbi/valuefooter%> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm index 28a37dcd98..9005279a4e 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm @@ -20,10 +20,10 @@ if (st && st[0] && tb) { /* clear all rows */ - while( tb.rows.length > 1 ) - tb.deleteRow(1); + while (tb.firstElementChild !== tb.lastElementChild) + tb.removeChild(tb.lastElementChild); - for( var i = 0; i < st[0].length; i++ ) + for (var i = 0; i < st[0].length; i++) { var timestr; @@ -34,24 +34,16 @@ else timestr = String.format('%t', st[0][i].expires); - var tr = tb.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1); - - tr.insertCell(-1).innerHTML = st[0][i].hostname ? st[0][i].hostname : '?'; - tr.insertCell(-1).innerHTML = st[0][i].ipaddr; - tr.insertCell(-1).innerHTML = st[0][i].macaddr; - tr.insertCell(-1).innerHTML = timestr; + tb.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format((i % 2) + 1), [ + E('<div class="td">', st[0][i].hostname || '?'), + E('<div class="td">', st[0][i].ipaddr), + E('<div class="td">', st[0][i].macaddr), + E('<div class="td">', timestr) + ])); } - if( tb.rows.length == 1 ) - { - var tr = tb.insertRow(-1); - tr.className = 'cbi-section-table-row'; - - var td = tr.insertCell(-1); - td.colSpan = 4; - td.innerHTML = '<em><br /><%:There are no active leases.%></em>'; - } + if (tb.firstElementChild === tb.lastElementChild) + tb.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:There are no active leases.%></em></div></div>')); } var tb6 = document.getElementById('lease6_status_table'); @@ -60,10 +52,10 @@ tb6.parentNode.style.display = 'block'; /* clear all rows */ - while( tb6.rows.length > 1 ) - tb6.deleteRow(1); + while (tb6.firstElementChild !== tb6.lastElementChild) + tb6.removeChild(tb6.lastElementChild); - for( var i = 0; i < st[1].length; i++ ) + for (var i = 0; i < st[1].length; i++) { var timestr; @@ -74,35 +66,29 @@ else timestr = String.format('%t', st[1][i].expires); - var tr = tb6.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1); - - var host = hosts[duid2mac(st[1][i].duid)]; - if (!st[1][i].hostname) - tr.insertCell(-1).innerHTML = - (host && (host.name || host.ipv4 || host.ipv6)) - ? '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap">? (%h)</div>'.format(host.name || host.ipv4 || host.ipv6) - : '?'; - else - tr.insertCell(-1).innerHTML = - (host && host.name && st[1][i].hostname != host.name) - ? '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap">%h (%h)</div>'.format(st[1][i].hostname, host.name) - : st[1][i].hostname; - - tr.insertCell(-1).innerHTML = st[1][i].ip6addr; - tr.insertCell(-1).innerHTML = st[1][i].duid; - tr.insertCell(-1).innerHTML = timestr; + var host = hosts[duid2mac(st[1][i].duid)], + name = st[1][i].hostname, + hint = null; + + if (!name) { + if (host) + hint = host.name || host.ipv4 || host.ipv6; + } + else { + if (host && host.name && st[1][i].hostname != host.name) + hint = host.name; + } + + tb6.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d" style="max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap">'.format((i % 2) + 1), [ + E('<div class="td">', hint ? '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap">%h (%h)</div>'.format(name || '?', hint) : (name || '?')), + E('<div class="td">', st[1][i].ip6addr), + E('<div class="td">', st[1][i].duid), + E('<div class="td">', timestr) + ])); } - if( tb6.rows.length == 1 ) - { - var tr = tb6.insertRow(-1); - tr.className = 'cbi-section-table-row'; - - var td = tr.insertCell(-1); - td.colSpan = 4; - td.innerHTML = '<em><br /><%:There are no active leases.%></em>'; - } + if (tb6.firstElementChild === tb6.lastElementChild) + tb6.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:There are no active leases.%></em></div></div>')); } } ); @@ -110,30 +96,30 @@ <fieldset class="cbi-section"> <legend><%:Active DHCP Leases%></legend> - <table class="cbi-section-table" id="lease_status_table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Hostname%></th> - <th class="cbi-section-table-cell"><%:IPv4-Address%></th> - <th class="cbi-section-table-cell"><%:MAC-Address%></th> - <th class="cbi-section-table-cell"><%:Leasetime remaining%></th> - </tr> - <tr class="cbi-section-table-row"> - <td colspan="4"><em><br /><%:Collecting data...%></em></td> - </tr> - </table> + <div class="table cbi-section-table" id="lease_status_table"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Hostname%></div> + <div class="th cbi-section-table-cell"><%:IPv4-Address%></div> + <div class="th cbi-section-table-cell"><%:MAC-Address%></div> + <div class="th cbi-section-table-cell"><%:Leasetime remaining%></div> + </div> + <div class="tr cbi-section-table-row"> + <div class="td" colspan="4"><em><br /><%:Collecting data...%></em></div> + </div> + </div> </fieldset> <fieldset class="cbi-section" style="display:none"> <legend><%:Active DHCPv6 Leases%></legend> - <table class="cbi-section-table" id="lease6_status_table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Host%></th> - <th class="cbi-section-table-cell"><%:IPv6-Address%></th> - <th class="cbi-section-table-cell"><%:DUID%></th> - <th class="cbi-section-table-cell"><%:Leasetime remaining%></th> - </tr> - <tr class="cbi-section-table-row"> - <td colspan="4"><em><br /><%:Collecting data...%></em></td> - </tr> - </table> + <div class="table cbi-section-table" id="lease6_status_table"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Host%></div> + <div class="th cbi-section-table-cell"><%:IPv6-Address%></div> + <div class="th cbi-section-table-cell"><%:DUID%></div> + <div class="th cbi-section-table-cell"><%:Leasetime remaining%></div> + </div> + <div class="tr cbi-section-table-row"> + <div class="td" colspan="4"><em><br /><%:Collecting data...%></em></div> + </div> + </div> </fieldset> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_join.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_join.htm index 3533c6fa4d..e9cfb3e85b 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_join.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_join.htm @@ -91,24 +91,24 @@ <div class="cbi-map"> <fieldset class="cbi-section"> - <table class="cbi-section-table" style="empty-cells:hide"> + <div class="table cbi-section-table" style="empty-cells:hide"> <!-- scan list --> <% for i, net in ipairs(scanlist(3)) do net.encryption = net.encryption or { } %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=1 + ((i-1) % 2)%>"> - <td class="cbi-value-field" style="width:16px; padding:3px"> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=1 + ((i-1) % 2)%>"> + <div class="td cbi-value-field" style="width:16px; padding:3px"> <abbr title="<%:Signal%>: <%=net.signal%> <%:dB%> / <%:Quality%>: <%=net.quality%>/<%=net.quality_max%>"> <img src="<%=guess_wifi_signal(net)%>" /><br /> <small><%=percent_wifi_signal(net)%>%</small> </abbr> - </td> - <td class="cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px"> + </div> + <div class="td cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px"> <big><strong><%=net.ssid and utl.pcdata(net.ssid) or "<em>%s</em>" % translate("hidden")%></strong></big><br /> <strong>Channel:</strong> <%=net.channel%> | <strong>Mode:</strong> <%=net.mode%> | <strong>BSSID:</strong> <%=net.bssid%> | <strong>Encryption:</strong> <%=format_wifi_encryption(net.encryption)%> - </td> - <td class="cbi-value-field" style="width:40px"> + </div> + <div class="td cbi-value-field" style="width:40px"> <form action="<%=url('admin/network/wireless_join')%>" method="post"> <input type="hidden" name="token" value="<%=token%>" /> <input type="hidden" name="device" value="<%=utl.pcdata(dev)%>" /> @@ -128,11 +128,11 @@ <input class="cbi-button cbi-button-apply" type="submit" value="<%:Join Network%>" /> </form> - </td> - </tr> + </div> + </div> <% end %> <!-- /scan list --> - </table> + </div> </fieldset> </div> <div class="cbi-page-actions right"> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm index 4465095ff2..d6140c81f4 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm @@ -101,9 +101,9 @@ <%+header%> <% if not has_iwinfo then %> - <div class="errorbox"> - <strong><%:Package libiwinfo required!%></strong><br /> - <%_The <em>libiwinfo-lua</em> package is not installed. You must install this component for working wireless configuration!%> + <div class="alert-message warning"> + <h4><%:Package libiwinfo required!%></h4> + <p><%_The <em>libiwinfo-lua</em> package is not installed. You must install this component for working wireless configuration!%></p> </div> <% end %> @@ -195,8 +195,8 @@ { var assoctable = document.getElementById('iw-assoclist'); if (assoctable) - while (assoctable.rows.length > 1) - assoctable.rows[1].parentNode.removeChild(assoctable.rows[1]); + while (assoctable.firstElementChild !== assoctable.lastElementChild) + assoctable.removeChild(assoctable.lastElementChild); var devup = { }; var rowstyle = 1; @@ -293,7 +293,7 @@ if (assoctable) { var assoclist = [ ]; - for( var bssid in iw.assoclist ) + for (var bssid in iw.assoclist) { assoclist.push(iw.assoclist[bssid]); assoclist[assoclist.length-1].bssid = bssid; @@ -301,11 +301,8 @@ assoclist.sort(function(a, b) { a.bssid < b.bssid }); - for( var j = 0; j < assoclist.length; j++ ) + for (var j = 0; j < assoclist.length; j++) { - var tr = assoctable.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + rowstyle; - var icon; var q = (-1 * (assoclist[j].noise - assoclist[j].signal)) / 5; if (q < 1) @@ -319,48 +316,35 @@ else icon = "<%=resource%>/icons/signal-75-100.png"; - tr.insertCell(-1).innerHTML = String.format( - '<span class="ifacebadge" title="%q"><img src="<%=resource%>/icons/wifi.png" /> %h</span>', - iw.device.name, iw.ifname - ); - - tr.insertCell(-1).innerHTML = nowrap(String.format('%h', iw.ssid ? iw.ssid : '?')); - tr.insertCell(-1).innerHTML = assoclist[j].bssid; - - var host = hosts[assoclist[j].bssid]; - if (host) - tr.insertCell(-1).innerHTML = String.format( - '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis">%s</div>', - ((host.name && (host.ipv4 || host.ipv6)) - ? '%h (%s)'.format(host.name, host.ipv4 || host.ipv6) - : '%h'.format(host.name || host.ipv4 || host.ipv6)).nobr() - ); - else - tr.insertCell(-1).innerHTML = '?'; - - tr.insertCell(-1).innerHTML = String.format( - '<span class="ifacebadge" title="<%:Signal%>: %d <%:dBm%> / <%:Noise%>: %d <%:dBm%> / <%:SNR%>: %d"><img src="%s" /> %d / %d <%:dBm%></span>', - assoclist[j].signal, assoclist[j].noise, assoclist[j].signal - assoclist[j].noise, - icon, - assoclist[j].signal, assoclist[j].noise - ); - - tr.insertCell(-1).innerHTML = nowrap(wifirate(assoclist[j], true)) + '<br />' + nowrap(wifirate(assoclist[j], false)); + var host = hosts[assoclist[j].bssid], + name = host ? (host.name || host.ipv4 || host.ipv6) : null, + hint = (host && host.name && (host.ipv4 || host.ipv6)) ? (host.ipv4 || host.ipv6) : null; + + assoctable.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format(rowstyle), [ + E('<div class="td"><span class="ifacebadge" title="%q"><img src="<%=resource%>/icons/wifi.png" /> %h</span></div>' + .format(iw.device.name, iw.ifname)), + E('<div class="td" style="white-space:nowrap">%h</div>' + .format(iw.ssid || '?')), + E('<div class="td">%h</div>' + .format(assoclist[j].bssid)), + E('<div class="td">', hint ? '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis">%h (%h)</div>' + .format(name || '?', hint) : (name || '?')), + E('<div class="td"><span class="ifacebadge" title="<%:Signal%>: %d <%:dBm%> / <%:Noise%>: %d <%:dBm%> / <%:SNR%>: %d"><img src="%s" /> %d / %d <%:dBm%></span></div>' + .format(assoclist[j].signal, assoclist[j].noise, assoclist[j].signal - assoclist[j].noise, icon, assoclist[j].signal, assoclist[j].noise)), + E('<div class="td">', [ + E('<span style="white-space:nowrap">', wifirate(assoclist[j], true)), + E('<br />'), + E('<span style="white-space:nowrap">', wifirate(assoclist[j], false)) + ]) + ])); rowstyle = (rowstyle == 1) ? 2 : 1; } } } - if (assoctable && assoctable.rows.length == 1) - { - var tr = assoctable.insertRow(-1); - tr.className = 'cbi-section-table-row'; - - var td = tr.insertCell(-1); - td.colSpan = 8; - td.innerHTML = '<br /><em><%:No information available%></em>'; - } + if (assoctable && assoctable.firstElementChild === assoctable.lastElementChild) + assoctable.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:No information available%></em></div></div>')); for (var dev in devup) { @@ -386,15 +370,17 @@ <% for _, dev in ipairs(devices) do local nets = dev:get_wifinets() %> <!-- device <%=dev:name()%> --> <fieldset class="cbi-section"> - <table class="cbi-section-table" style="margin:10px; empty-cells:hide"> + <div class="table cbi-section-table" style="margin:10px; empty-cells:hide"> <!-- physical device --> - <tr> - <td style="width:34px"><img src="<%=resource%>/icons/wifi_big_disabled.png" style="float:left; margin-right:10px" id="<%=dev:name()%>-iw-upstate" /></td> - <td colspan="2" style="text-align:left"> + <div class="tr"> + <div class="td"> + <img src="<%=resource%>/icons/wifi_big_disabled.png" id="<%=dev:name()%>-iw-upstate" /> + </div> + <div class="td left"> <big><strong><%=guess_wifi_hw(dev)%> (<%=dev:name()%>)</strong></big><br /> <span id="<%=dev:name()%>-iw-devinfo"></span> - </td> - <td style="width:310px;text-align:right"> + </div> + <div class="td right"> <form action="<%=url('admin/network/wireless_join')%>" method="post" class="inline"> <input type="hidden" name="device" value="<%=dev:name()%>" /> <input type="hidden" name="token" value="<%=token%>" /> @@ -405,38 +391,36 @@ <input type="hidden" name="token" value="<%=token%>" /> <input type="submit" class="cbi-button cbi-button-add" style="width:100px" title="<%:Provide new network%>" value="<%:Add%>" /> </form> - </td> - </tr> + </div> + </div> <!-- /physical device --> <!-- network list --> <% if #nets > 0 then %> <% for i, net in ipairs(nets) do %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=1 + ((i-1) % 2)%>"> - <td></td> - <td class="cbi-value-field" style="vertical-align:middle; padding:3px" id="<%=net:id()%>-iw-signal"> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=1 + ((i-1) % 2)%>"> + <div class="td" id="<%=net:id()%>-iw-signal"> <span class="ifacebadge" title="<%:Not associated%>"><img src="<%=resource%>/icons/signal-none.png" /> 0%</span> - </td> - <td class="cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px" id="<%=net:id()%>-iw-status"> + </div> + <div class="td left" id="<%=net:id()%>-iw-status"> <em><%:Collecting data...%></em> - </td> - <td class="cbi-value-field" style="width:310px;text-align:right"> + </div> + <div class="td right"> <input id="<%=net:id()%>-iw-toggle" type="button" class="cbi-button cbi-button-reload" style="width:100px" onclick="wifi_shutdown('<%=net:id()%>', this)" title="<%:Delete this network%>" value="<%:Enable%>" /> <input type="button" class="cbi-button cbi-button-edit" style="width:100px" onclick="location.href='<%=net:adminlink()%>'" title="<%:Edit this network%>" value="<%:Edit%>" /> <input type="button" class="cbi-button cbi-button-remove" style="width:100px" onclick="wifi_delete('<%=net:id()%>')" title="<%:Delete this network%>" value="<%:Remove%>" /> - </td> - </tr> + </div> + </div> <% end %> <% else %> - <tr class="cbi-section-table-row cbi-rowstyle-2"> - <td></td> - <td colspan="3" class="cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px"> + <div class="tr cbi-section-table-row cbi-rowstyle-2"> + <div class="td left"> <em><%:No network configured on this device%></em> - </td> - </tr> + </div> + </div> <% end %> <!-- /network list --> - </table> + </div> </fieldset> <!-- /device <%=dev:name()%> --> <% end %> @@ -445,21 +429,21 @@ <h2><%:Associated Stations%></h2> <fieldset class="cbi-section"> - <table class="cbi-section-table valign-middle" style="margin:10px" id="iw-assoclist"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"></th> - <th class="cbi-section-table-cell"><%:SSID%></th> - <th class="cbi-section-table-cell"><%:MAC-Address%></th> - <th class="cbi-section-table-cell"><%:Host%></th> - <th class="cbi-section-table-cell"><%:Signal%> / <%:Noise%></th> - <th class="cbi-section-table-cell"><%:RX Rate%> / <%:TX Rate%></th> - </tr> - <tr class="cbi-section-table-row cbi-rowstyle-2"> - <td class="cbi-value-field" colspan="6"> + <div class="table cbi-section-table valign-middle" style="margin:10px" id="iw-assoclist"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"></div> + <div class="th cbi-section-table-cell"><%:SSID%></div> + <div class="th cbi-section-table-cell"><%:MAC-Address%></div> + <div class="th cbi-section-table-cell"><%:Host%></div> + <div class="th cbi-section-table-cell"><%:Signal%> / <%:Noise%></div> + <div class="th cbi-section-table-cell"><%:RX Rate%> / <%:TX Rate%></div> + </div> + <div class="tr cbi-section-table-row cbi-rowstyle-2"> + <div class="td"> <em><%:Collecting data...%></em> - </td> - </tr> - </table> + </div> + </div> + </div> </fieldset> </div> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_status.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_status.htm index 04687f38e7..85468252e9 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_status.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_status.htm @@ -62,17 +62,17 @@ ); //]]></script> -<table> - <tr class="cbi-section-table"> - <td></td> - <td class="cbi-value-field" style="width:16px; padding:3px" id="<%=self.option%>-iw-signal"> +<div class="table"> + <div class="tr cbi-section-table"> + <div class="td"></div> + <div class="td cbi-value-field" style="width:16px; padding:3px" id="<%=self.option%>-iw-signal"> <img src="<%=resource%>/icons/signal-none.png" title="<%:Not associated%>" /><br /> <small>0%</small> - </td> - <td class="cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px" id="<%=self.option%>-iw-description"> + </div> + <div class="td cbi-value-field" style="vertical-align:middle; text-align:left; padding:3px" id="<%=self.option%>-iw-description"> <em><%:Collecting data...%></em> - </td> - </tr> -</table> + </div> + </div> +</div> <%+cbi/valuefooter%> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_status/bandwidth.htm b/modules/luci-mod-admin-full/luasrc/view/admin_status/bandwidth.htm index 33bbee7843..db1d0b8883 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_status/bandwidth.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_status/bandwidth.htm @@ -275,27 +275,27 @@ <div style="text-align:right"><small id="scale">-</small></div> <br /> -<table style="width:100%; table-layout:fixed" cellspacing="5"> - <tr> - <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid blue"><%:Inbound:%></strong></td> - <td id="rx_bw_cur">0 <%:kbit/s%><br />(0 <%:kB/s%>)</td> - - <td style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></td> - <td id="rx_bw_avg">0 <%:kbit/s%><br />(0 <%:kB/s%>)</td> - - <td style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></td> - <td id="rx_bw_peak">0 <%:kbit/s%><br />(0 <%:kB/s%>)</td> - </tr> - <tr> - <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid green"><%:Outbound:%></strong></td> - <td id="tx_bw_cur">0 <%:kbit/s%><br />(0 <%:kB/s%>)</td> - - <td style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></td> - <td id="tx_bw_avg">0 <%:kbit/s%><br />(0 <%:kB/s%>)</td> - - <td style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></td> - <td id="tx_bw_peak">0 <%:kbit/s%><br />(0 <%:kB/s%>)</td> - </tr> -</table> +<div class="table" style="width:100%; table-layout:fixed" cellspacing="5"> + <div class="tr"> + <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid blue"><%:Inbound:%></strong></div> + <div class="td" id="rx_bw_cur">0 <%:kbit/s%><br />(0 <%:kB/s%>)</div> + + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div> + <div class="td" id="rx_bw_avg">0 <%:kbit/s%><br />(0 <%:kB/s%>)</div> + + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div> + <div class="td" id="rx_bw_peak">0 <%:kbit/s%><br />(0 <%:kB/s%>)</div> + </div> + <div class="tr"> + <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid green"><%:Outbound:%></strong></div> + <div class="td" id="tx_bw_cur">0 <%:kbit/s%><br />(0 <%:kB/s%>)</div> + + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div> + <div class="td" id="tx_bw_avg">0 <%:kbit/s%><br />(0 <%:kB/s%>)</div> + + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div> + <div class="td" id="tx_bw_peak">0 <%:kbit/s%><br />(0 <%:kB/s%>)</div> + </div> +</div> <%+footer%> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_status/connections.htm b/modules/luci-mod-admin-full/luasrc/view/admin_status/connections.htm index b7ebc41451..30d93f78bc 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_status/connections.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_status/connections.htm @@ -139,8 +139,8 @@ { var conn = json.connections; - while (conn_table.rows.length > 1) - conn_table.rows[0].parentNode.deleteRow(-1); + while (conn_table.firstElementChild !== conn_table.lastElementChild) + conn_table.removeChild(conn_table.lastElementChild); var lookup_queue = [ ]; @@ -153,13 +153,10 @@ { var c = conn[i]; - if ((c.src == '127.0.0.1' && c.dst == '127.0.0.1') - || (c.src == '::1' && c.dst == '::1')) + if ((c.src == '127.0.0.1' && c.dst == '127.0.0.1') || + (c.src == '::1' && c.dst == '::1')) continue; - var tr = conn_table.rows[0].parentNode.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + (1 + (i % 2)); - if (!dns_cache[c.src]) lookup_queue.push(c.src); @@ -169,14 +166,13 @@ var src = dns_cache[c.src] || (c.layer3 == 'ipv6' ? '[' + c.src + ']' : c.src); var dst = dns_cache[c.dst] || (c.layer3 == 'ipv6' ? '[' + c.dst + ']' : c.dst); - tr.insertCell(-1).innerHTML = c.layer3.toUpperCase(); - tr.insertCell(-1).innerHTML = c.layer4.toUpperCase(); - tr.insertCell(-1).innerHTML = String.format('%s:%d', src, c.sport); - tr.insertCell(-1).innerHTML = String.format('%s:%d', dst, c.dport); - - var traf = tr.insertCell(-1); - traf.style.whiteSpace = 'nowrap'; - traf.innerHTML = String.format('%1024.2mB (%d <%:Pkts.%>)', c.bytes, c.packets); + conn_table.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format(1 + (i % 2)), [ + E('<div class="td">', c.layer3.toUpperCase()), + E('<div class="td">', c.layer4.toUpperCase()), + E('<div class="td">', [ src, ':', c.sport ]), + E('<div class="td">', [ dst, ':', c.dport ]), + E('<div class="td" style="white-space:nowrap">', '%1024.2mB (%d <%:Pkts.%>)'.format(c.bytes, c.packets)), + ])); } if (lookup_queue.length > 0) @@ -324,52 +320,52 @@ <div style="text-align:right"><small id="scale">-</small></div> <br /> - <table style="width:100%; table-layout:fixed" cellspacing="5"> - <tr> - <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid blue"><%:UDP:%></strong></td> - <td id="lb_udp_cur">0</td> - - <td style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></td> - <td id="lb_udp_avg">0</td> - - <td style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></td> - <td id="lb_udp_peak">0</td> - </tr> - <tr> - <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid green"><%:TCP:%></strong></td> - <td id="lb_tcp_cur">0</td> - - <td style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></td> - <td id="lb_tcp_avg">0</td> - - <td style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></td> - <td id="lb_tcp_peak">0</td> - </tr> - <tr> - <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid red"><%:Other:%></strong></td> - <td id="lb_otr_cur">0</td> - - <td style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></td> - <td id="lb_otr_avg">0</td> - - <td style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></td> - <td id="lb_otr_peak">0</td> - </tr> - </table> + <div class="table" style="width:100%; table-layout:fixed" cellspacing="5"> + <div class="tr"> + <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid blue"><%:UDP:%></strong></div> + <div class="td" id="lb_udp_cur">0</div> + + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div> + <div class="td" id="lb_udp_avg">0</div> + + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div> + <div class="td" id="lb_udp_peak">0</div> + </div> + <div class="tr"> + <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid green"><%:TCP:%></strong></div> + <div class="td" id="lb_tcp_cur">0</div> + + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div> + <div class="td" id="lb_tcp_avg">0</div> + + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div> + <div class="td" id="lb_tcp_peak">0</div> + </div> + <div class="tr"> + <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid red"><%:Other:%></strong></div> + <div class="td" id="lb_otr_cur">0</div> + + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div> + <div class="td" id="lb_otr_avg">0</div> + + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div> + <div class="td" id="lb_otr_peak">0</div> + </div> + </div> <br /> <div class="cbi-section-node"> - <table class="cbi-section-table" id="connections"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Network%></th> - <th class="cbi-section-table-cell"><%:Protocol%></th> - <th class="cbi-section-table-cell"><%:Source%></th> - <th class="cbi-section-table-cell"><%:Destination%></th> - <th class="cbi-section-table-cell"><%:Transfer%></th> - </tr> - - <tr><td colspan="5"><em><%:Collecting data...%></em></td></tr> - </table> + <div class="table cbi-section-table" id="connections"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Network%></div> + <div class="th cbi-section-table-cell"><%:Protocol%></div> + <div class="th cbi-section-table-cell"><%:Source%></div> + <div class="th cbi-section-table-cell"><%:Destination%></div> + <div class="th cbi-section-table-cell"><%:Transfer%></div> + </div> + + <div class="tr"><div class="td" colspan="5"><em><%:Collecting data...%></em></div></div> + </div> </div> </fieldset> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm b/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm index 5e6e494ad6..c5952064aa 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm @@ -6,6 +6,7 @@ <% local fs = require "nixio.fs" + local ipc = require "luci.ip" local util = require "luci.util" local stat = require "luci.tools.status" local ver = require "luci.version" @@ -58,6 +59,8 @@ } if wan then + local dev = wan:get_interface() + local link = dev and ipc.link(dev:name()) rv.wan = { ipaddr = wan:ipaddr(), gwaddr = wan:gwaddr(), @@ -66,12 +69,19 @@ expires = wan:expires(), uptime = wan:uptime(), proto = wan:proto(), + i18n = wan:get_i18n(), ifname = wan:ifname(), - link = wan:adminlink() + link = wan:adminlink(), + mac = dev and dev:mac(), + type = dev and dev:type(), + name = dev and dev:get_i18n(), + ether = link and link.type == 1 } end if wan6 then + local dev = wan6:get_interface() + local link = dev and ipc.link(dev:name()) rv.wan6 = { ip6addr = wan6:ip6addr(), gw6addr = wan6:gw6addr(), @@ -79,8 +89,13 @@ ip6prefix = wan6:ip6prefix(), uptime = wan6:uptime(), proto = wan6:proto(), + i18n = wan6:get_i18n(), ifname = wan6:ifname(), - link = wan6:adminlink() + link = wan6:adminlink(), + mac = dev and dev:mac(), + type = dev and dev:type(), + name = dev and dev:get_i18n(), + ether = link and link.type == 1 } end @@ -164,133 +179,95 @@ }); } - XHR.poll(5, '<%=REQUEST_URI%>', { status: 1 }, - function(x, info) - { - if (!(npoll++ % 5)) - updateHosts(); - - var si = document.getElementById('wan4_i'); - var ss = document.getElementById('wan4_s'); - var ifc = info.wan; + function labelList(items, offset) { + var rv = [ ]; - if (ifc && ifc.ifname && ifc.proto != 'none') - { - var s = String.format( - '<strong><%:Type%>: </strong>%s<br />' + - '<strong><%:Address%>: </strong>%s<br />' + - '<strong><%:Netmask%>: </strong>%s<br />' + - '<strong><%:Gateway%>: </strong>%s<br />', - ifc.proto, - (ifc.ipaddr) ? ifc.ipaddr : '0.0.0.0', - (ifc.netmask && ifc.netmask != ifc.ipaddr) ? ifc.netmask : '255.255.255.255', - (ifc.gwaddr) ? ifc.gwaddr : '0.0.0.0' - ); + for (var i = offset || 0; i < items.length; i += 2) { + var label = items[i], + value = items[i+1]; - for (var i = 0; i < ifc.dns.length; i++) - { - s += String.format( - '<strong><%:DNS%> %d: </strong>%s<br />', - i + 1, ifc.dns[i] - ); - } + if (value === undefined || value === null) + continue; - if (ifc.expires > -1) - { - s += String.format( - '<strong><%:Expires%>: </strong>%t<br />', - ifc.expires - ); - } + if (label) + rv.push(E('strong', [label, ': '])); - if (ifc.uptime > 0) - { - s += String.format( - '<strong><%:Connected%>: </strong>%t<br />', - ifc.uptime - ); - } + rv.push(value, E('br')); + } - ss.innerHTML = String.format('<small>%s</small>', s); - si.innerHTML = String.format( - '<img src="<%=resource%>/icons/ethernet.png" />' + - '<br /><small><a href="%s">%s</a></small>', - ifc.link, ifc.ifname - ); - } - else - { - si.innerHTML = '<img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small>'; - ss.innerHTML = '<em><%:Not connected%></em>'; - } + return rv; + } - <% if has_ipv6 then %> - var si6 = document.getElementById('wan6_i'); - var ss6 = document.getElementById('wan6_s'); - var ifc6 = info.wan6; + function renderBox(title, active, childs) { + childs = childs || []; + childs.unshift(E('span', labelList(arguments, 3))); - if (ifc6 && ifc6.ifname && ifc6.proto != 'none') - { - var s = String.format( - '<strong><%:Type%>: </strong>%s%s<br />', - ifc6.proto, (ifc6.ip6prefix) ? '-pd' : '' - ); - - if (!ifc6.ip6prefix) - { - s += String.format( - '<strong><%:Address%>: </strong>%s<br />', - (ifc6.ip6addr) ? ifc6.ip6addr : '::' - ); - } - else - { - s += String.format( - '<strong><%:Prefix Delegated%>: </strong>%s<br />', - ifc6.ip6prefix - ); - if (ifc6.ip6addr) - { - s += String.format( - '<strong><%:Address%>: </strong>%s<br />', - ifc6.ip6addr - ); - } - } + return E('div', { class: 'ifacebox' }, [ + E('div', { class: 'ifacebox-head center ' + (active ? 'active' : '') }, + E('strong', title)), + E('div', { class: 'ifacebox-body' }, childs) + ]); + } - s += String.format( - '<strong><%:Gateway%>: </strong>%s<br />', - (ifc6.gw6addr) ? ifc6.gw6addr : '::' - ); + function renderBadge(icon, title) { + return E('span', { class: 'ifacebadge' }, [ + E('img', { src: icon, title: title || '' }), + E('span', labelList(arguments, 2)) + ]); + } - for (var i = 0; i < ifc6.dns.length; i++) - { - s += String.format( - '<strong><%:DNS%> %d: </strong>%s<br />', - i + 1, ifc6.dns[i] - ); - } + XHR.poll(5, '<%=REQUEST_URI%>', { status: 1 }, + function(x, info) + { + if (!(npoll++ % 5)) + updateHosts(); - if (ifc6.uptime > 0) - { - s += String.format( - '<strong><%:Connected%>: </strong>%t<br />', - ifc6.uptime - ); - } + var us = document.getElementById('upstream_status_table'); + + while (us.lastElementChild) + us.removeChild(us.lastElementChild); + + var ifc = info.wan || {}; + + us.appendChild(renderBox( + '<%:IPv4 Upstream%>', + (ifc.ifname && ifc.proto != 'none'), + [ E('div', {}, renderBadge( + '<%=resource%>/icons/%s.png'.format((ifc && ifc.type) ? ifc.type : 'ethernet_disabled'), null, + '<%:Device%>', ifc ? (ifc.name || ifc.ifname || '-') : '-', + '<%:MAC-Address%>', (ifc && ifc.ether) ? ifc.mac : null)) ], + '<%:Protocol%>', ifc.i18n || E('em', '<%:Not connected%>'), + '<%:Address%>', (ifc.ipaddr) ? ifc.ipaddr : '0.0.0.0', + '<%:Netmask%>', (ifc.netmask && ifc.netmask != ifc.ipaddr) ? ifc.netmask : '255.255.255.255', + '<%:Gateway%>', (ifc.gwaddr) ? ifc.gwaddr : '0.0.0.0', + '<%:DNS%> 1', (ifc.dns) ? ifc.dns[0] : null, + '<%:DNS%> 2', (ifc.dns) ? ifc.dns[1] : null, + '<%:DNS%> 3', (ifc.dns) ? ifc.dns[2] : null, + '<%:DNS%> 4', (ifc.dns) ? ifc.dns[3] : null, + '<%:DNS%> 5', (ifc.dns) ? ifc.dns[4] : null, + '<%:Expires%>', (ifc.expires > -1) ? '%t'.format(ifc.expires) : null, + '<%:Connected%>', (ifc.uptime > 0) ? '%t'.format(ifc.uptime) : null)); - ss6.innerHTML = String.format('<small>%s</small>', s); - si6.innerHTML = String.format( - '<img src="<%=resource%>/icons/ethernet.png" />' + - '<br /><small><a href="%s">%s</a></small>', - ifc6.link, ifc6.ifname - ); - } - else - { - si6.innerHTML = '<img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small>'; - ss6.innerHTML = '<em><%:Not connected%></em>'; - } + <% if has_ipv6 then %> + var ifc6 = info.wan6 || {}; + + us.appendChild(renderBox( + '<%:IPv6 Upstream%>', + (ifc6.ifname && ifc6.proto != 'none'), + [ E('div', {}, renderBadge( + '<%=resource%>/icons/%s.png'.format(ifc6.type || 'ethernet_disabled'), null, + '<%:Device%>', ifc6 ? (ifc6.name || ifc6.ifname || '-') : '-', + '<%:MAC-Address%>', (ifc6 && ifc6.ether) ? ifc6.mac : null)) ], + '<%:Protocol%>', ifc6.i18n ? (ifc6.i18n + (ifc6.proto === 'dhcp' && ifc6.ip6prefix ? '-PD' : '')) : E('em', '<%:Not connected%>'), + '<%:Prefix Delegated%>', ifc6.ip6prefix, + '<%:Address%>', (ifc6.ip6prefix) ? (ifc6.ip6addr || null) : (ifc6.ipaddr || '::'), + '<%:Gateway%>', (ifc6.gw6addr) ? ifc6.gw6addr : '::', + '<%:DNS%> 1', (ifc6.dns) ? ifc6.dns[0] : null, + '<%:DNS%> 2', (ifc6.dns) ? ifc6.dns[1] : null, + '<%:DNS%> 3', (ifc6.dns) ? ifc6.dns[2] : null, + '<%:DNS%> 4', (ifc6.dns) ? ifc6.dns[3] : null, + '<%:DNS%> 5', (ifc6.dns) ? ifc6.dns[4] : null, + '<%:Connected%>', (ifc6.uptime > 0) ? '%t'.format(ifc6.uptime) : null)); <% end %> <% if has_dsl then %> @@ -358,10 +335,10 @@ if (ls) { /* clear all rows */ - while( ls.rows.length > 1 ) - ls.rows[0].parentNode.deleteRow(1); + while (ls.firstElementChild !== ls.lastElementChild) + ls.removeChild(ls.lastElementChild); - for( var i = 0; i < info.leases.length; i++ ) + for (var i = 0; i < info.leases.length; i++) { var timestr; @@ -372,24 +349,16 @@ else timestr = String.format('%t', info.leases[i].expires); - var tr = ls.rows[0].parentNode.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1); - - tr.insertCell(-1).innerHTML = info.leases[i].hostname ? info.leases[i].hostname : '?'; - tr.insertCell(-1).innerHTML = info.leases[i].ipaddr; - tr.insertCell(-1).innerHTML = info.leases[i].macaddr; - tr.insertCell(-1).innerHTML = timestr; + ls.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format((i % 2) + 1), [ + E('<div class="td">', info.leases[i].hostname ? info.leases[i].hostname : '?'), + E('<div class="td">', info.leases[i].ipaddr), + E('<div class="td">', info.leases[i].macaddr), + E('<div class="td">', timestr) + ])); } - if( ls.rows.length == 1 ) - { - var tr = ls.rows[0].parentNode.insertRow(-1); - tr.className = 'cbi-section-table-row'; - - var td = tr.insertCell(-1); - td.colSpan = 4; - td.innerHTML = '<em><br /><%:There are no active leases.%></em>'; - } + if (ls.firstElementChild === ls.lastElementChild) + ls.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:There are no active leases.%></em></div></div>')); } var ls6 = document.getElementById('lease6_status_table'); @@ -398,10 +367,10 @@ ls6.parentNode.style.display = 'block'; /* clear all rows */ - while( ls6.rows.length > 1 ) - ls6.rows[0].parentNode.deleteRow(1); + while (ls6.firstElementChild !== ls6.lastElementChild) + ls6.removeChild(ls6.lastElementChild); - for( var i = 0; i < info.leases6.length; i++ ) + for (var i = 0; i < info.leases6.length; i++) { var timestr; @@ -412,35 +381,29 @@ else timestr = String.format('%t', info.leases6[i].expires); - var tr = ls6.rows[0].parentNode.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1); + var host = hosts[duid2mac(info.leases6[i].duid)], + name = info.leases6[i].hostname, + hint = null; - var host = hosts[duid2mac(info.leases6[i].duid)]; - if (!info.leases6[i].hostname) - tr.insertCell(-1).innerHTML = - (host && (host.name || host.ipv4 || host.ipv6)) - ? '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap">? (%h)</div>'.format(host.name || host.ipv4 || host.ipv6) - : '?'; - else - tr.insertCell(-1).innerHTML = - (host && host.name && info.leases6[i].hostname != host.name) - ? '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap">%h (%h)</div>'.format(info.leases6[i].hostname, host.name) - : info.leases6[i].hostname; - - tr.insertCell(-1).innerHTML = info.leases6[i].ip6addr; - tr.insertCell(-1).innerHTML = info.leases6[i].duid; - tr.insertCell(-1).innerHTML = timestr; - } - - if( ls6.rows.length == 1 ) - { - var tr = ls6.rows[0].parentNode.insertRow(-1); - tr.className = 'cbi-section-table-row'; + if (!name) { + if (host) + hint = host.name || host.ipv4 || host.ipv6; + } + else { + if (host && host.name && info.leases6[i].hostname != host.name) + hint = host.name; + } - var td = tr.insertCell(-1); - td.colSpan = 4; - td.innerHTML = '<em><br /><%:There are no active leases.%></em>'; + ls6.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format((i % 2) + 1), [ + E('<div class="td nowrap">', hint ? '<div>%h (%h)</div>'.format(name || '?', hint) : (name || '?')), + E('<div class="td nowrap">', info.leases6[i].ip6addr), + E('<div class="td nowrap">', info.leases6[i].duid), + E('<div class="td nowrap">', timestr) + ])); } + + if (ls6.firstElementChild === ls6.lastElementChild) + ls6.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:There are no active leases.%></em></div></div>')); } <% end %> @@ -450,30 +413,34 @@ var ws = document.getElementById('wifi_status_table'); if (ws) { - var wsbody = ws.rows[0].parentNode; - while (ws.rows.length > 0) - wsbody.deleteRow(0); + while (ws.lastElementChild) + ws.removeChild(ws.lastElementChild); for (var didx = 0; didx < info.wifinets.length; didx++) { var dev = info.wifinets[didx]; - - var tr = wsbody.insertRow(-1); - var td; - - td = tr.insertCell(-1); - td.width = "33%"; - td.innerHTML = dev.name; - td.style.verticalAlign = "top"; - - td = tr.insertCell(-1); - - var s = ''; + var net0 = (dev.networks && dev.networks[0]) ? dev.networks[0] : {}; + var vifs = []; for (var nidx = 0; nidx < dev.networks.length; nidx++) { var net = dev.networks[nidx]; var is_assoc = (net.bssid != '00:00:00:00:00:00' && net.channel && !net.disabled); + var num_assoc = 0; + + for (var bssid in net.assoclist) + { + var bss = net.assoclist[bssid]; + + bss.bssid = bssid; + bss.link = net.link; + bss.name = net.name; + bss.ifname = net.ifname; + bss.radio = dev.name; + + assoclist.push(bss); + num_assoc++; + } var icon; if (!is_assoc) @@ -489,66 +456,35 @@ else icon = "<%=resource%>/icons/signal-75-100.png"; - s += String.format( - '<table><tr><td style="text-align:center; width:32px; padding:3px">' + - '<img src="%s" title="<%:Signal%>: %d dBm / <%:Noise%>: %d dBm" />' + - '<br /><small>%d%%</small>' + - '</td><td style="text-align:left; padding:3px"><small>' + - '<strong><%:SSID%>:</strong> <a href="%s">%h</a><br />' + - '<strong><%:Mode%>:</strong> %s<br />' + - '<strong><%:Channel%>:</strong> %d (%.3f <%:GHz%>)<br />' + - '<strong><%:Bitrate%>:</strong> %s <%:Mbit/s%><br />', - icon, net.signal, net.noise, - net.quality, - net.link, net.ssid || '?', - net.mode, - net.channel, net.frequency, - net.bitrate || '?' - ); - - if (is_assoc) - { - s += String.format( - '<strong><%:BSSID%>:</strong> %s<br />' + - '<strong><%:Encryption%>:</strong> %s', - net.bssid || '?', - net.encryption - ); - } - else - { - s += '<em><%:Wireless is disabled or not associated%></em>'; - } - - s += '</small></td></tr></table>'; - - for (var bssid in net.assoclist) - { - var bss = net.assoclist[bssid]; - - bss.bssid = bssid; - bss.link = net.link; - bss.name = net.name; - bss.ifname = net.ifname; - bss.radio = dev.name; - - assoclist.push(bss); - } + vifs.push(renderBadge( + icon, + '<%:Signal%>: %d dBm / <%:Quality%>: %d%%'.format(net.signal, net.quality), + '<%:SSID%>', E('a', { href: net.link }, [ net.ssid || '?' ]), + '<%:Mode%>', net.mode, + '<%:BSSID%>', is_assoc ? (net.bssid || '-') : null, + '<%:Encryption%>', is_assoc ? net.encryption : null, + '<%:Associations%>', is_assoc ? (num_assoc || '-') : null, + null, is_assoc ? null : E('em', '<%:Wireless is disabled or not associated%>'))); } - if (!s) - s = '<em><%:No information available%></em>'; - - td.innerHTML = s; + ws.appendChild(renderBox( + dev.device, dev.up || net0.up, + [ E('div', vifs) ], + '<%:Type%>', dev.name.replace(/^Generic | Wireless Controller .+$/g, ''), + '<%:Channel%>', net0.channel ? '%d (%.3f <%:GHz%>)'.format(net0.channel, net0.frequency) : '-', + '<%:Bitrate%>', net0.bitrate ? '%d <%:Mbit/s%>'.format(net0.bitrate) : '-')); } + + if (!ws.lastElementChild) + ws.appendChild(E('<em><%:No information available%></em>')); } var ac = document.getElementById('wifi_assoc_table'); if (ac) { /* clear all rows */ - while( ac.rows.length > 1 ) - ac.rows[0].parentNode.deleteRow(1); + while (ac.firstElementChild !== ac.lastElementChild) + ac.removeChild(ac.lastElementChild); assoclist.sort(function(a, b) { return (a.name == b.name) @@ -557,11 +493,8 @@ ; }); - for( var i = 0; i < assoclist.length; i++ ) + for (var i = 0; i < assoclist.length; i++) { - var tr = ac.rows[0].parentNode.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + (1 + (i % 2)); - var icon; var q = (-1 * (assoclist[i].noise - assoclist[i].signal)) / 5; if (q < 1) @@ -575,49 +508,31 @@ else icon = "<%=resource%>/icons/signal-75-100.png"; - tr.insertCell(-1).innerHTML = String.format( - '<span class="ifacebadge" title="%q"><img src="<%=resource%>/icons/wifi.png" /> %h</span>', - assoclist[i].radio, assoclist[i].ifname - ); - - tr.insertCell(-1).innerHTML = String.format( - '<a href="%s">%s</a>', - assoclist[i].link, - '%h'.format(assoclist[i].name).nobr() - ); - - tr.insertCell(-1).innerHTML = assoclist[i].bssid; - - var host = hosts[assoclist[i].bssid]; - if (host) - tr.insertCell(-1).innerHTML = String.format( - '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis">%s</div>', - ((host.name && (host.ipv4 || host.ipv6)) - ? '%h (%s)'.format(host.name, host.ipv4 || host.ipv6) - : '%h'.format(host.name || host.ipv4 || host.ipv6)).nobr() - ); - else - tr.insertCell(-1).innerHTML = '?'; - - tr.insertCell(-1).innerHTML = String.format( - '<span class="ifacebadge" title="<%:Signal%>: %d <%:dBm%> / <%:Noise%>: %d <%:dBm%> / <%:SNR%>: %d"><img src="%s" /> %d / %d <%:dBm%></span>', - assoclist[i].signal, assoclist[i].noise, assoclist[i].signal - assoclist[i].noise, - icon, - assoclist[i].signal, assoclist[i].noise - ); - - tr.insertCell(-1).innerHTML = wifirate(assoclist[i], true).nobr() + '<br />' + wifirate(assoclist[i], false).nobr(); + var host = hosts[assoclist[i].bssid], + name = host ? (host.name || host.ipv4 || host.ipv6) : null, + hint = (host && host.name && (host.ipv4 || host.ipv6)) ? (host.ipv4 || host.ipv6) : null; + + ac.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format(1 + (i % 2)), [ + E('<div class="td"><span class="ifacebadge" title="%q"><img src="<%=resource%>/icons/wifi.png" /> %h</span></div>' + .format(assoclist[i].radio, assoclist[i].ifname)), + E('<div class="td"><a href="%s" style="white-space:nowrap">%h</a></div>' + .format(assoclist[i].link, assoclist[i].name)), + E('<div class="td">', + assoclist[i].bssid), + E('<div class="td nowrap">', + hint ? '<div>%h (%h)</div>'.format(name || '?', hint) : (name || '?')), + E('<div class="td"><span class="ifacebadge" title="<%:Signal%>: %d <%:dBm%> / <%:Noise%>: %d <%:dBm%> / <%:SNR%>: %d"><img src="%s" /> %d / %d <%:dBm%></span></div>' + .format(assoclist[i].signal, assoclist[i].noise, assoclist[i].signal - assoclist[i].noise, icon, assoclist[i].signal, assoclist[i].noise)), + E('<div class="td nowrap">', [ + E('<span style="white-space:nowrap">', wifirate(assoclist[i], true)), + E('<br />'), + E('<span style="white-space:nowrap">', wifirate(assoclist[i], false)) + ]) + ])); } - if (ac.rows.length == 1) - { - var tr = ac.rows[0].parentNode.insertRow(-1); - tr.className = 'cbi-section-table-row'; - - var td = tr.insertCell(-1); - td.colSpan = 7; - td.innerHTML = '<br /><em><%:No information available%></em>'; - } + if (ac.firstElementChild === ac.lastElementChild) + ac.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:No information available%></em></div></div>')); } <% end %> @@ -679,108 +594,104 @@ <fieldset class="cbi-section"> <legend><%:System%></legend> - <table width="100%" cellspacing="10"> - <tr><td width="33%"><%:Hostname%></td><td><%=luci.sys.hostname() or "?"%></td></tr> - <tr><td width="33%"><%:Model%></td><td><%=pcdata(boardinfo.model or boardinfo.system or "?")%></td></tr> - <tr><td width="33%"><%:Firmware Version%></td><td> + <div class="table" width="100%"> + <div class="tr"><div class="td left" width="33%"><%:Hostname%></div><div class="td left"><%=luci.sys.hostname() or "?"%></div></div> + <div class="tr"><div class="td left" width="33%"><%:Model%></div><div class="td left"><%=pcdata(boardinfo.model or "?")%></div></div> + <div class="tr"><div class="td left" width="33%"><%:Architecture%></div><div class="td left"><%=pcdata(boardinfo.system or "?")%></div></div> + <div class="tr"><div class="td left" width="33%"><%:Firmware Version%></div><div class="td left"> <%=pcdata(ver.distname)%> <%=pcdata(ver.distversion)%> / <%=pcdata(ver.luciname)%> (<%=pcdata(ver.luciversion)%>) - </td></tr> - <tr><td width="33%"><%:Kernel Version%></td><td><%=unameinfo.release or "?"%></td></tr> - <tr><td width="33%"><%:Local Time%></td><td id="localtime">-</td></tr> - <tr><td width="33%"><%:Uptime%></td><td id="uptime">-</td></tr> - <tr><td width="33%"><%:Load Average%></td><td id="loadavg">-</td></tr> - </table> + </div></div> + <div class="tr"><div class="td left" width="33%"><%:Kernel Version%></div><div class="td left"><%=unameinfo.release or "?"%></div></div> + <div class="tr"><div class="td left" width="33%"><%:Local Time%></div><div class="td left" id="localtime">-</div></div> + <div class="tr"><div class="td left" width="33%"><%:Uptime%></div><div class="td left" id="uptime">-</div></div> + <div class="tr"><div class="td left" width="33%"><%:Load Average%></div><div class="td left" id="loadavg">-</div></div> + </div> </fieldset> <fieldset class="cbi-section"> <legend><%:Memory%></legend> - <table width="100%" cellspacing="10"> - <tr><td width="33%"><%:Total Available%></td><td id="memtotal">-</td></tr> - <tr><td width="33%"><%:Free%></td><td id="memfree">-</td></tr> - <tr><td width="33%"><%:Buffered%></td><td id="membuff">-</td></tr> - </table> + <div class="table" width="100%"> + <div class="tr"><div class="td left" width="33%"><%:Total Available%></div><div class="td left" id="memtotal">-</div></div> + <div class="tr"><div class="td left" width="33%"><%:Free%></div><div class="td left" id="memfree">-</div></div> + <div class="tr"><div class="td left" width="33%"><%:Buffered%></div><div class="td left" id="membuff">-</div></div> + </div> </fieldset> <% if swapinfo.total > 0 then %> <fieldset class="cbi-section"> <legend><%:Swap%></legend> - <table width="100%" cellspacing="10"> - <tr><td width="33%"><%:Total Available%></td><td id="swaptotal">-</td></tr> - <tr><td width="33%"><%:Free%></td><td id="swapfree">-</td></tr> - </table> + <div class="table" width="100%"> + <div class="tr"><div class="td left" width="33%"><%:Total Available%></div><div class="td left" id="swaptotal">-</div></div> + <div class="tr"><div class="td left" width="33%"><%:Free%></div><div class="td left" id="swapfree">-</div></div> + </div> </fieldset> <% end %> <fieldset class="cbi-section"> <legend><%:Network%></legend> - <table width="100%" cellspacing="10"> - <tr><td width="33%" style="vertical-align:top"><%:IPv4 WAN Status%></td><td> - <table><tr> - <td id="wan4_i" style="width:16px; text-align:center; padding:3px"><img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small></td> - <td id="wan4_s" style="vertical-align:middle; padding: 3px"><em><%:Collecting data...%></em></td> - </tr></table> - </td></tr> - <% if has_ipv6 then %> - <tr><td width="33%" style="vertical-align:top"><%:IPv6 WAN Status%></td><td> - <table><tr> - <td id="wan6_i" style="width:16px; text-align:center; padding:3px"><img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small></td> - <td id="wan6_s" style="vertical-align:middle; padding: 3px"><em><%:Collecting data...%></em></td> - </tr></table> - </td></tr> - <% end %> - <tr><td width="33%"><%:Active Connections%></td><td id="conns">-</td></tr> - </table> + <div id="upstream_status_table" class="network-status-table"> + <em><%:Collecting data...%></em> + </div> + + <div class="table" width="100%"> + <div class="tr"><div class="td left" width="33%"><%:Active Connections%></div><div class="td left" id="conns">-</div></div> + </div> </fieldset> <% if has_dhcp then %> <fieldset class="cbi-section"> <legend><%:DHCP Leases%></legend> - <table class="cbi-section-table" id="lease_status_table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Hostname%></th> - <th class="cbi-section-table-cell"><%:IPv4-Address%></th> - <th class="cbi-section-table-cell"><%:MAC-Address%></th> - <th class="cbi-section-table-cell"><%:Leasetime remaining%></th> - </tr> - <tr class="cbi-section-table-row"> - <td colspan="4"><em><br /><%:Collecting data...%></em></td> - </tr> - </table> + <div class="table cbi-section-table" id="lease_status_table"> + <div class="tr cbi-section-table-titles"> + <div class="th"><%:Hostname%></div> + <div class="th"><%:IPv4-Address%></div> + <div class="th"><%:MAC-Address%></div> + <div class="th"><%:Leasetime remaining%></div> + </div> + <div class="tr cbi-section-table-row"> + <div class="td" colspan="4"><em><br /><%:Collecting data...%></em></div> + </div> + </div> </fieldset> <fieldset class="cbi-section" style="display:none"> <legend><%:DHCPv6 Leases%></legend> - <table class="cbi-section-table" id="lease6_status_table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Host%></th> - <th class="cbi-section-table-cell"><%:IPv6-Address%></th> - <th class="cbi-section-table-cell"><%:DUID%></th> - <th class="cbi-section-table-cell"><%:Leasetime remaining%></th> - </tr> - <tr class="cbi-section-table-row"> - <td colspan="4"><em><br /><%:Collecting data...%></em></td> - </tr> - </table> + <div class="table cbi-section-table" id="lease6_status_table"> + <div class="tr cbi-section-table-titles"> + <div class="th"><%:Host%></div> + <div class="th"><%:IPv6-Address%></div> + <div class="th"><%:DUID%></div> + <div class="th"><%:Leasetime remaining%></div> + </div> + <div class="tr cbi-section-table-row"> + <div class="td" colspan="4"><em><br /><%:Collecting data...%></em></div> + </div> + </div> </fieldset> <% end %> <% if has_dsl then %> <fieldset class="cbi-section"> - <legend><%:DSL%></legend> - <table width="100%" cellspacing="10"> - <tr><td width="33%" style="vertical-align:top"><%:DSL Status%></td><td> - <table><tr> - <td id="dsl_i" style="width:16px; text-align:center; padding:3px"><img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small></td> - <td id="dsl_s" style="vertical-align:middle; padding: 3px"><em><%:Collecting data...%></em></td> - </tr></table> - </td></tr> - </table> + <legend><%:DSL%></legend> + <div class="table" width="100%"> + <div class="tr"> + <div class="td left" width="33%" style="vertical-align:top"><%:DSL Status%></div> + <div class="td"> + <div class="table"> + <div class="tr"> + <div class="td" id="dsl_i" style="width:16px; text-align:center; padding:3px"><img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small></div> + <div class="td left" id="dsl_s" style="vertical-align:middle; padding: 3px"><em><%:Collecting data...%></em></div> + </div> + </div> + </div> + </div> + </div> </fieldset> <% end %> @@ -788,27 +699,27 @@ <fieldset class="cbi-section"> <legend><%:Wireless%></legend> - <table id="wifi_status_table" width="100%" cellspacing="10"> - <tr><td><em><%:Collecting data...%></em></td></tr> - </table> + <div id="wifi_status_table" class="network-status-table"> + <em><%:Collecting data...%></em> + </div> </fieldset> <fieldset class="cbi-section"> <legend><%:Associated Stations%></legend> - <table class="cbi-section-table valign-middle" id="wifi_assoc_table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"> </th> - <th class="cbi-section-table-cell"><%:Network%></th> - <th class="cbi-section-table-cell"><%:MAC-Address%></th> - <th class="cbi-section-table-cell"><%:Host%></th> - <th class="cbi-section-table-cell"><%:Signal%> / <%:Noise%></th> - <th class="cbi-section-table-cell"><%:RX Rate%> / <%:TX Rate%></th> - </tr> - <tr class="cbi-section-table-row"> - <td colspan="6"><em><br /><%:Collecting data...%></em></td> - </tr> - </table> + <div class="table cbi-section-table valign-middle" id="wifi_assoc_table"> + <div class="tr cbi-section-table-titles"> + <div class="th"> </div> + <div class="th"><%:Network%></div> + <div class="th"><%:MAC-Address%></div> + <div class="th"><%:Host%></div> + <div class="th"><%:Signal%> / <%:Noise%></div> + <div class="th"><%:RX Rate%> / <%:TX Rate%></div> + </div> + <div class="tr cbi-section-table-row"> + <div class="td" colspan="6"><em><br /><%:Collecting data...%></em></div> + </div> + </div> </fieldset> <% end %> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_status/iptables.htm b/modules/luci-mod-admin-full/luasrc/view/admin_status/iptables.htm index 3f4b83b80b..ced4d5f774 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_status/iptables.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_status/iptables.htm @@ -92,14 +92,14 @@ <% for _, tbl in ipairs(tables) do chaincnt = 0 %> <h3><%:Table%>: <%=tbl%></h3> - <table class="cbi-section-table" style="font-size:90%"> + <div class="table cbi-section-table" style="font-size:90%"> <% for _, chain in ipairs(ipt:chains(tbl)) do rowcnt = 0 chaincnt = chaincnt + 1 chaininfo = ipt:chain(tbl, chain) %> - <tr class="cbi-section-table-titles cbi-rowstyle-<%=rowstyle()%>"> - <th class="cbi-section-table-cell" style="text-align:left" colspan="11"> + <div class="tr cbi-section-table-titles cbi-rowstyle-<%=rowstyle()%>"> + <div class="th cbi-section-table-cell" style="text-align:left" colspan="11"> <br /><span id="rule_<%=tbl:lower()%>_<%=chain%>"> <%:Chain%> <em><%=chain%></em> (<%- if chaininfo.policy then -%> @@ -107,47 +107,47 @@ <%- else -%> <%:References%>: <%=chaininfo.references-%> <%- end -%>)</span> - </th> - </tr> - <tr class="cbi-section-table-descr"> - <th class="cbi-section-table-cell"><%:Pkts.%></th> - <th class="cbi-section-table-cell"><%:Traffic%></th> - <th class="cbi-section-table-cell"><%:Target%></th> - <th class="cbi-section-table-cell"><%:Prot.%></th> - <th class="cbi-section-table-cell"><%:In%></th> - <th class="cbi-section-table-cell"><%:Out%></th> - <th class="cbi-section-table-cell"><%:Source%></th> - <th class="cbi-section-table-cell"><%:Destination%></th> - <th class="cbi-section-table-cell" style="width:30%"><%:Options%></th> - </tr> + </div> + </div> + <div class="tr cbi-section-table-descr"> + <div class="th cbi-section-table-cell"><%:Pkts.%></div> + <div class="th cbi-section-table-cell"><%:Traffic%></div> + <div class="th cbi-section-table-cell"><%:Target%></div> + <div class="th cbi-section-table-cell"><%:Prot.%></div> + <div class="th cbi-section-table-cell"><%:In%></div> + <div class="th cbi-section-table-cell"><%:Out%></div> + <div class="th cbi-section-table-cell"><%:Source%></div> + <div class="th cbi-section-table-cell"><%:Destination%></div> + <div class="th cbi-section-table-cell" style="width:30%"><%:Options%></div> + </div> <% for _, rule in ipairs(ipt:find({table=tbl, chain=chain})) do %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=rowstyle()%>"> - <td><%=rule.packets%></td> - <td style="white-space: nowrap"><%=wba.byte_format(rule.bytes)%></td> - <td><%=rule.target and link_target(tbl, rule.target) or "-"%></td> - <td><%=rule.protocol%></td> - <td><%=link_iface(rule.inputif)%></td> - <td><%=link_iface(rule.outputif)%></td> - <td><%=rule.source%></td> - <td><%=rule.destination%></td> - <td style="width:30%"><small><%=#rule.options > 0 and luci.util.pcdata(table.concat(rule.options, " ")) or "-"%></small></td> - </tr> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=rowstyle()%>"> + <div class="td"><%=rule.packets%></div> + <div class="td" style="white-space: nowrap"><%=wba.byte_format(rule.bytes)%></div> + <div class="td"><%=rule.target and link_target(tbl, rule.target) or "-"%></div> + <div class="td"><%=rule.protocol%></div> + <div class="td"><%=link_iface(rule.inputif)%></div> + <div class="td"><%=link_iface(rule.outputif)%></div> + <div class="td"><%=rule.source%></div> + <div class="td"><%=rule.destination%></div> + <div class="td" style="width:30%"><small><%=#rule.options > 0 and luci.util.pcdata(table.concat(rule.options, " ")) or "-"%></small></div> + </div> <% end %> <% if rowcnt == 1 then %> - <tr class="cbi-section-table-titles cbi-rowstyle-<%=rowstyle()%>"> - <td colspan="9"><em><%:No rules in this chain%></em></td> - </tr> + <div class="tr cbi-section-table-titles cbi-rowstyle-<%=rowstyle()%>"> + <div class="td" colspan="9"><em><%:No rules in this chain%></em></div> + </div> <% end %> <% end %> <% if chaincnt == 0 then %> - <tr class="cbi-section-table-titles cbi-rowstyle-<%=rowstyle()%>"> - <td colspan="9"><em><%:No chains in this table%></em></td> - </tr> + <div class="tr cbi-section-table-titles cbi-rowstyle-<%=rowstyle()%>"> + <div class="td" colspan="9"><em><%:No chains in this table%></em></div> + </div> <% end %> - </table> + </div> <br /><br /> <% end %> </fieldset> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_status/load.htm b/modules/luci-mod-admin-full/luasrc/view/admin_status/load.htm index 97a2f5ed59..c8ada71569 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_status/load.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_status/load.htm @@ -248,37 +248,37 @@ <div style="text-align:right"><small id="scale">-</small></div> <br /> -<table style="width:100%; table-layout:fixed" cellspacing="5"> - <tr> - <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid #ff0000; white-space:nowrap"><%:1 Minute Load:%></strong></td> - <td id="lb_load01_cur">0</td> - - <td style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></td> - <td id="lb_load01_avg">0</td> - - <td style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></td> - <td id="lb_load01_peak">0</td> - </tr> - <tr> - <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid #ff6600; white-space:nowrap"><%:5 Minute Load:%></strong></td> - <td id="lb_load05_cur">0</td> - - <td style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></td> - <td id="lb_load05_avg">0</td> - - <td style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></td> - <td id="lb_load05_peak">0</td> - </tr> - <tr> - <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid #ffaa00; white-space:nowrap"><%:15 Minute Load:%></strong></td> - <td id="lb_load15_cur">0</td> - - <td style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></td> - <td id="lb_load15_avg">0</td> - - <td style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></td> - <td id="lb_load15_peak">0</td> - </tr> -</table> +<div class="table" style="width:100%; table-layout:fixed" cellspacing="5"> + <div class="tr"> + <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid #ff0000; white-space:nowrap"><%:1 Minute Load:%></strong></div> + <div class="td" id="lb_load01_cur">0</div> + + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div> + <div class="td" id="lb_load01_avg">0</div> + + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div> + <div class="td" id="lb_load01_peak">0</div> + </div> + <div class="tr"> + <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid #ff6600; white-space:nowrap"><%:5 Minute Load:%></strong></div> + <div class="td" id="lb_load05_cur">0</div> + + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div> + <div class="td" id="lb_load05_avg">0</div> + + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div> + <div class="td" id="lb_load05_peak">0</div> + </div> + <div class="tr"> + <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid #ffaa00; white-space:nowrap"><%:15 Minute Load:%></strong></div> + <div class="td" id="lb_load15_cur">0</div> + + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div> + <div class="td" id="lb_load15_avg">0</div> + + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div> + <div class="td" id="lb_load15_peak">0</div> + </div> +</div> <%+footer%> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm b/modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm index f474c71568..af80371353 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm @@ -39,28 +39,28 @@ <fieldset class="cbi-section"> <legend>ARP</legend> <div class="cbi-section-node"> - <table class="cbi-section-table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Address%></th> - <th class="cbi-section-table-cell"><%_<abbr title="Media Access Control">MAC</abbr>-Address%></th> - <th class="cbi-section-table-cell"><%:Interface%></th> - </tr> + <div class="table cbi-section-table"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Address%></div> + <div class="th cbi-section-table-cell"><%_<abbr title="Media Access Control">MAC</abbr>-Address%></div> + <div class="th cbi-section-table-cell"><%:Interface%></div> + </div> <% for _, v in ipairs(ip.neighbors({ family = 4 })) do if v.mac then %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>"> - <td class="cbi-value-field"><%=v.dest%></td> - <td class="cbi-value-field"><%=v.mac%></td> - <td class="cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></td> - </tr> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>"> + <div class="td cbi-value-field"><%=v.dest%></div> + <div class="td cbi-value-field"><%=v.mac%></div> + <div class="td cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div> + </div> <% style = not style end end %> - </table> + </div> </div> </fieldset> <br /> @@ -69,24 +69,24 @@ <legend><%_Active <abbr title="Internet Protocol Version 4">IPv4</abbr>-Routes%></legend> <div class="cbi-section-node"> - <table class="cbi-section-table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Network%></th> - <th class="cbi-section-table-cell"><%:Target%></th> - <th class="cbi-section-table-cell"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Gateway%></th> - <th class="cbi-section-table-cell"><%:Metric%></th> - <th class="cbi-section-table-cell"><%:Table%></th> - </tr> + <div class="table cbi-section-table"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Network%></div> + <div class="th cbi-section-table-cell"><%:Target%></div> + <div class="th cbi-section-table-cell"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Gateway%></div> + <div class="th cbi-section-table-cell"><%:Metric%></div> + <div class="th cbi-section-table-cell"><%:Table%></div> + </div> <% for _, v in ipairs(ip.routes({ family = 4, type = 1 })) do %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>"> - <td class="cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or v.dev%></td> - <td class="cbi-value-field"><%=v.dest%></td> - <td class="cbi-value-field"><%=v.gw%></td> - <td class="cbi-value-field"><%=v.metric or 0%></td> - <td class="cbi-value-field"><%=rtn[v.table] or v.table%></td> - </tr> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>"> + <div class="td cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or v.dev%></div> + <div class="td cbi-value-field"><%=v.dest%></div> + <div class="td cbi-value-field"><%=v.gw%></div> + <div class="td cbi-value-field"><%=v.metric or 0%></div> + <div class="td cbi-value-field"><%=rtn[v.table] or v.table%></div> + </div> <% style = not style end %> - </table> + </div> </div> </fieldset> <br /> @@ -99,31 +99,31 @@ <legend><%_Active <abbr title="Internet Protocol Version 6">IPv6</abbr>-Routes%></legend> <div class="cbi-section-node"> - <table class="cbi-section-table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Network%></th> - <th class="cbi-section-table-cell"><%:Target%></th> - <th class="cbi-section-table-cell"><%:Source%></th> - <th class="cbi-section-table-cell"><%:Metric%></th> - <th class="cbi-section-table-cell"><%:Table%></th> - </tr> + <div class="table cbi-section-table"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Network%></div> + <div class="th cbi-section-table-cell"><%:Target%></div> + <div class="th cbi-section-table-cell"><%:Source%></div> + <div class="th cbi-section-table-cell"><%:Metric%></div> + <div class="th cbi-section-table-cell"><%:Table%></div> + </div> <% for _, v in ipairs(ip.routes({ family = 6, type = 1 })) do if v.dest and not v.dest:is6linklocal() then %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>"> - <td class="cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></td> - <td class="cbi-value-field"><%=v.dest%></td> - <td class="cbi-value-field"><%=v.from%></td> - <td class="cbi-value-field"><%=v.metric or 0%></td> - <td class="cbi-value-field"><%=rtn[v.table] or v.table%></td> - </tr> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>"> + <div class="td cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div> + <div class="td cbi-value-field"><%=v.dest%></div> + <div class="td cbi-value-field"><%=v.from%></div> + <div class="td cbi-value-field"><%=v.metric or 0%></div> + <div class="td cbi-value-field"><%=rtn[v.table] or v.table%></div> + </div> <% style = not style end end %> - </table> + </div> </div> </fieldset> <br /> @@ -132,27 +132,27 @@ <legend><%:IPv6 Neighbours%></legend> <div class="cbi-section-node"> - <table class="cbi-section-table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:IPv6-Address%></th> - <th class="cbi-section-table-cell"><%:MAC-Address%></th> - <th class="cbi-section-table-cell"><%:Interface%></th> - </tr> + <div class="table cbi-section-table"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:IPv6-Address%></div> + <div class="th cbi-section-table-cell"><%:MAC-Address%></div> + <div class="th cbi-section-table-cell"><%:Interface%></div> + </div> <% for _, v in ipairs(ip.neighbors({ family = 6 })) do if v.dest and not v.dest:is6linklocal() and v.mac then %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>"> - <td class="cbi-value-field"><%=v.dest%></td> - <td class="cbi-value-field"><%=v.mac%></td> - <td class="cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></td> - </tr> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>"> + <div class="td cbi-value-field"><%=v.dest%></div> + <div class="td cbi-value-field"><%=v.mac%></div> + <div class="td cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div> + </div> <% style = not style end end %> - </table> + </div> </div> </fieldset> <br /> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_status/wireless.htm b/modules/luci-mod-admin-full/luasrc/view/admin_status/wireless.htm index aa658ff0cb..4211b26471 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_status/wireless.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_status/wireless.htm @@ -325,28 +325,28 @@ <div style="text-align:right"><small id="scale">-</small></div> <br /> -<table style="width:100%; table-layout:fixed" cellspacing="5"> - <tr> - <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid blue"><%:Signal:%></strong></td> - <td id="rssi_bw_cur">0 <%:dBm%></td> +<div class="table" style="width:100%; table-layout:fixed" cellspacing="5"> + <div class="tr"> + <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid blue"><%:Signal:%></strong></div> + <div class="td" id="rssi_bw_cur">0 <%:dBm%></div> - <td style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></td> - <td id="rssi_bw_avg">0 <%:dBm%></td> + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div> + <div class="td" id="rssi_bw_avg">0 <%:dBm%></div> - <td style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></td> - <td id="rssi_bw_peak">0 <%:dBm%></td> - </tr> - <tr> - <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid red"><%:Noise:%></strong></td> - <td id="noise_bw_cur">0 <%:dBm%></td> + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div> + <div class="td" id="rssi_bw_peak">0 <%:dBm%></div> + </div> + <div class="tr"> + <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid red"><%:Noise:%></strong></div> + <div class="td" id="noise_bw_cur">0 <%:dBm%></div> - <td style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></td> - <td id="noise_bw_avg">0 <%:dBm%></td> + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div> + <div class="td" id="noise_bw_avg">0 <%:dBm%></div> - <td style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></td> - <td id="noise_bw_peak">0 <%:dBm%></td> - </tr> -</table> + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div> + <div class="td" id="noise_bw_peak">0 <%:dBm%></div> + </div> +</div> <br /> @@ -354,17 +354,17 @@ <div style="text-align:right"><small id="scale2">-</small></div> <br /> -<table style="width:100%; table-layout:fixed" cellspacing="5"> - <tr> - <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid green"><%:Phy Rate:%></strong></td> - <td id="rate_bw_cur">0 MBit/s</td> +<div class="table" style="width:100%; table-layout:fixed" cellspacing="5"> + <div class="tr"> + <div class="td" style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid green"><%:Phy Rate:%></strong></div> + <div class="td" id="rate_bw_cur">0 MBit/s</div> - <td style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></td> - <td id="rate_bw_avg">0 MBit/s</td> + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></div> + <div class="td" id="rate_bw_avg">0 MBit/s</div> - <td style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></td> - <td id="rate_bw_peak">0 MBit/s</td> - </tr> -</table> + <div class="td" style="text-align:right; vertical-align:top"><strong><%:Peak:%></strong></div> + <div class="td" id="rate_bw_peak">0 MBit/s</div> + </div> +</div> <%+footer%> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm b/modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm index 88e0fffd9c..4944a232b2 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm @@ -128,34 +128,34 @@ end <% if display ~= "available" then %> <fieldset class="cbi-section"> - <table class="cbi-section-table" style="width:100%"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell" style="text-align:left"> </th> - <th class="cbi-section-table-cell" style="text-align:left"><%:Package name%></th> - <th class="cbi-section-table-cell" style="text-align:left"><%:Version%></th> - </tr> + <div class="table cbi-section-table" style="width:100%"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell" style="text-align:left"> </div> + <div class="th cbi-section-table-cell" style="text-align:left"><%:Package name%></div> + <div class="th cbi-section-table-cell" style="text-align:left"><%:Version%></div> + </div> <% local empty = true; luci.model.ipkg.list_installed(querypat, function(n, v, s, d) empty = false; filter[n] = true %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=rowstyle()%>"> - <td style="text-align:left; width:10%"> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=rowstyle()%>"> + <div class="td" style="text-align:left; width:10%"> <form method="post" class="inline" action="<%=REQUEST_URI%>"> <input type="hidden" name="exec" value="1" /> <input type="hidden" name="token" value="<%=token%>" /> <input type="hidden" name="remove" value="<%=pcdata(n)%>" /> <a onclick="window.confirm('<%:Remove%> "<%=luci.util.pcdata(n)%>" ?') && this.parentNode.submit(); return false" href="#"><%:Remove%></a> </form> - </td> - <td style="text-align:left"><%=luci.util.pcdata(n)%></td> - <td style="text-align:left"><%=luci.util.pcdata(v)%></td> - </tr> + </div> + <div class="td" style="text-align:left"><%=luci.util.pcdata(n)%></div> + <div class="td" style="text-align:left"><%=luci.util.pcdata(v)%></div> + </div> <% end) %> <% if empty then %> - <tr class="cbi-section-table-row"> - <td style="text-align:left"> </td> - <td style="text-align:left"><em><%:none%></em></td> - <td style="text-align:left"><em><%:none%></em></td> - </tr> + <div class="tr cbi-section-table-row"> + <div class="td" style="text-align:left"> </div> + <div class="td" style="text-align:left"><em><%:none%></em></div> + <div class="td" style="text-align:left"><em><%:none%></em></div> + </div> <% end %> - </table> + </div> </fieldset> <% else %> <fieldset class="cbi-section"> @@ -168,40 +168,40 @@ end </ul> <div class="cbi-section-node"> <% end %> - <table class="cbi-section-table" style="width:100%"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell" style="text-align:left"> </th> - <th class="cbi-section-table-cell" style="text-align:left"><%:Package name%></th> - <th class="cbi-section-table-cell" style="text-align:left"><%:Version%></th> - <th class="cbi-section-table-cell" style="text-align:right"><%:Size (.ipk)%></th> - <th class="cbi-section-table-cell" style="text-align:left"><%:Description%></th> - </tr> + <div class="table cbi-section-table" style="width:100%"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell" style="text-align:left"> </div> + <div class="th cbi-section-table-cell" style="text-align:left"><%:Package name%></div> + <div class="th cbi-section-table-cell" style="text-align:left"><%:Version%></div> + <div class="th cbi-section-table-cell" style="text-align:right"><%:Size (.ipk)%></div> + <div class="th cbi-section-table-cell" style="text-align:left"><%:Description%></div> + </div> <% local empty = true; opkg_list(querypat or letterpat, function(n, v, s, d) if filter[n] then return end; empty = false %> - <tr class="cbi-section-table-row cbi-rowstyle-<%=rowstyle()%>"> - <td style="text-align:left; width:10%"> + <div class="tr cbi-section-table-row cbi-rowstyle-<%=rowstyle()%>"> + <div class="td" style="text-align:left; width:10%"> <form method="post" class="inline" action="<%=REQUEST_URI%>"> <input type="hidden" name="exec" value="1" /> <input type="hidden" name="token" value="<%=token%>" /> <input type="hidden" name="install" value="<%=pcdata(n)%>" /> <a onclick="window.confirm('<%:Install%> "<%=luci.util.pcdata(n)%>" ?') && this.parentNode.submit(); return false" href="#"><%:Install%></a> </form> - </td> - <td style="text-align:left"><%=luci.util.pcdata(n)%></td> - <td style="text-align:left"><%=luci.util.pcdata(v)%></td> - <td style="text-align:right"><%=luci.util.pcdata(s)%></td> - <td style="text-align:left"><%=luci.util.pcdata(d)%></td> - </tr> + </div> + <div class="td" style="text-align:left"><%=luci.util.pcdata(n)%></div> + <div class="td" style="text-align:left"><%=luci.util.pcdata(v)%></div> + <div class="td" style="text-align:right"><%=luci.util.pcdata(s)%></div> + <div class="td" style="text-align:left"><%=luci.util.pcdata(d)%></div> + </div> <% end) %> <% if empty then %> - <tr class="cbi-section-table-row"> - <td style="text-align:left"> </td> - <td style="text-align:left"><em><%:none%></em></td> - <td style="text-align:left"><em><%:none%></em></td> - <td style="text-align:right"><em><%:none%></em></td> - <td style="text-align:left"><em><%:none%></em></td> - </tr> + <div class="tr cbi-section-table-row"> + <div class="td" style="text-align:left"> </div> + <div class="td" style="text-align:left"><em><%:none%></em></div> + <div class="td" style="text-align:left"><em><%:none%></em></div> + <div class="td" style="text-align:right"><em><%:none%></em></div> + <div class="td" style="text-align:left"><em><%:none%></em></div> + </div> <% end %> - </table> + </div> <% if not querypat then %> </div> <% end %> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm b/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm index 9e9ce2be2a..c69ec1215a 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm @@ -36,7 +36,7 @@ <div style="text-align:right"> <input class="cbi-button cbi-button-save" type="button" id="apply_button" value="<%:Save & Apply%>" onclick="uci_apply(true); this.blur()" /> - <form class="inline" method="post" action="<%=controller%>/admin/uci/revert"> + <form class="inline" method="post" action="<%=url("admin/uci/revert")%>"> <input type="hidden" name="token" value="<%=token%>" /> <input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" /> <input class="cbi-button cbi-button-reset" type="submit" value="<%:Revert%>" /> diff --git a/modules/luci-mod-freifunk/luasrc/view/freifunk/contact.htm b/modules/luci-mod-freifunk/luasrc/view/freifunk/contact.htm index 1add595c6c..dca35376cb 100644 --- a/modules/luci-mod-freifunk/luasrc/view/freifunk/contact.htm +++ b/modules/luci-mod-freifunk/luasrc/view/freifunk/contact.htm @@ -31,33 +31,33 @@ end <fieldset xmlns="http://www.w3.org/1999/xhtml" class="cbi-section"> <legend><%:Operator%></legend> - <table cellspacing="10" width="100%" style="text-align:left"> - <tr><th width="33%"><%:Nickname%>:</th><td><%=nickname%></td></tr> - <tr><th width="33%"><%:Realname%>:</th><td><%=name%></td></tr> - <tr><th width="33%"><%:Homepage%>:</th><td> + <div class="table" cellspacing="10" width="100%" style="text-align:left"> + <div class="tr"><div class="th" width="33%"><%:Nickname%>:</div><div class="td"><%=nickname%></div></div> + <div class="tr"><div class="th" width="33%"><%:Realname%>:</div><div class="td"><%=name%></div></div> + <div class="tr"><div class="th" width="33%"><%:Homepage%>:</div><div class="td"> <% for k, v in ipairs(homepage) do %> <a href="<%=v%>"><%=v%></a><br /> <% end %> - </td></tr> - <tr><th width="33%"><%:E-Mail%>:</th><td><a href="mailto:<%=mail%>"><%=mail%></a></td></tr> - <tr><th width="33%"><%:Phone%>:</th><td><%=phone%></td></tr> - </table> + </div></div> + <div class="tr"><div class="th" width="33%"><%:E-Mail%>:</div><div class="td"><a href="mailto:<%=mail%>"><%=mail%></a></div></div> + <div class="tr"><div class="th" width="33%"><%:Phone%>:</div><div class="td"><%=phone%></div></div> + </div> </fieldset> <fieldset xmlns="http://www.w3.org/1999/xhtml" class="cbi-section"> <legend><%:Location%></legend> - <table cellspacing="10" width="100%" style="text-align:left"> - <tr><th width="33%"><%:Location%>:</th><td><%=location%></td></tr> - <tr><th width="33%"><%:Coordinates%>:</th><td><%=lat%> <%=lon%> (<a href="<%=pcdata(luci.dispatcher.build_url("freifunk/map"))%>"><%:Show on map%>)</a></td></tr> - </table> + <div class="table" cellspacing="10" width="100%" style="text-align:left"> + <div class="tr"><div class="th" width="33%"><%:Location%>:</div><div class="td"><%=location%></div></div> + <div class="tr"><div class="th" width="33%"><%:Coordinates%>:</div><div class="td"><%=lat%> <%=lon%> (<a href="<%=pcdata(luci.dispatcher.build_url("freifunk/map"))%>"><%:Show on map%>)</a></div></div> + </div> </fieldset> <% if note then %> <fieldset xmlns="http://www.w3.org/1999/xhtml" class="cbi-section"> <legend><%:Notice%></legend> - <table cellspacing="10" width="100%" style="text-align:left"> - <tr><td><%=note%></td></tr> - </table> + <div class="table" cellspacing="10" width="100%" style="text-align:left"> + <div class="tr"><div class="td"><%=note%></div></div> + </div> </fieldset> <%end%> diff --git a/modules/luci-mod-freifunk/luasrc/view/freifunk/public_status.htm b/modules/luci-mod-freifunk/luasrc/view/freifunk/public_status.htm index 1dc1d8b0d1..a56e4826a9 100644 --- a/modules/luci-mod-freifunk/luasrc/view/freifunk/public_status.htm +++ b/modules/luci-mod-freifunk/luasrc/view/freifunk/public_status.htm @@ -238,25 +238,25 @@ end <h2><%:Wireless Overview%></h2> <% if not has_iwinfo then %> - <div class="errorbox"> - <strong><%:Package libiwinfo required!%></strong><br /> - <%_The <em>libiwinfo</em> package is not installed. You must install this component for working wireless configuration!%> + <div class="alert-message warning"> + <h4><%:Package libiwinfo required!%></h4> + <p><%_The <em>libiwinfo</em> package is not installed. You must install this component for working wireless configuration!%></p> </div> <% end %> <div class="cbi-section"> <div class="cbi-section-node"> - <table class="cbi-section-table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Signal%></th> - <th class="cbi-section-table-cell"><%:Bitrate%></th> - <th class="cbi-section-table-cell"><%:SSID%></th> - <th class="cbi-section-table-cell"><%:BSSID%></th> - <th class="cbi-section-table-cell"><%:Channel%></th> - <th class="cbi-section-table-cell"><%:Mode%></th> - <th class="cbi-section-table-cell"><%:TX%>-<%:Power%></th> - <th class="cbi-section-table-cell"><%:Interface%></th> - </tr> + <div class="table cbi-section-table"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Signal%></div> + <div class="th cbi-section-table-cell"><%:Bitrate%></div> + <div class="th cbi-section-table-cell"><%:SSID%></div> + <div class="th cbi-section-table-cell"><%:BSSID%></div> + <div class="th cbi-section-table-cell"><%:Channel%></div> + <div class="th cbi-section-table-cell"><%:Mode%></div> + <div class="th cbi-section-table-cell"><%:TX%>-<%:Power%></div> + <div class="th cbi-section-table-cell"><%:Interface%></div> + </div> <% for _, dev in ipairs(devices) do local net @@ -301,20 +301,20 @@ end end local interface = net.iwinfo.ifname or "N/A" %> - <tr class="cbi-section-table-row cbi-rowstyle-1"> - <td class="cbi-value-field" id="<%=net:ifname()%>-signal"><%=signal_string%></td> - <td class="cbi-value-field" id="<%=net:ifname()%>-bitrate"><%=bitrate%></td> - <td class="cbi-value-field" id="<%=net:ifname()%>-ssid"><%=ssid%></td> - <td class="cbi-value-field" id="<%=net:ifname()%>-bssid"><%=bssid%></td> - <td class="cbi-value-field" id="<%=net:ifname()%>-channel"><%=chan%></td> - <td class="cbi-value-field" id="<%=net:ifname()%>-mode"><%=mode%></td> - <td class="cbi-value-field" id="<%=net:ifname()%>-txpower"><%=txpwr%></td> - <td class="cbi-value-field"><%=interface%></td> - </tr> + <div class="tr cbi-section-table-row cbi-rowstyle-1"> + <div class="td cbi-value-field" id="<%=net:ifname()%>-signal"><%=signal_string%></div> + <div class="td cbi-value-field" id="<%=net:ifname()%>-bitrate"><%=bitrate%></div> + <div class="td cbi-value-field" id="<%=net:ifname()%>-ssid"><%=ssid%></div> + <div class="td cbi-value-field" id="<%=net:ifname()%>-bssid"><%=bssid%></div> + <div class="td cbi-value-field" id="<%=net:ifname()%>-channel"><%=chan%></div> + <div class="td cbi-value-field" id="<%=net:ifname()%>-mode"><%=mode%></div> + <div class="td cbi-value-field" id="<%=net:ifname()%>-txpower"><%=txpwr%></div> + <div class="td cbi-value-field"><%=interface%></div> + </div> <% end end end %> - </table> + </div> </div> </div> </div> @@ -328,35 +328,35 @@ end <% if not def4 and not def6 then %> <%:No default routes known.%> <%else%> - <table class="cbi-section-table"> - <tr class="cbi-section-table-titles"> - <th class="cbi-section-table-cell"><%:Network%></th> - <th class="cbi-section-table-cell"><%:Interface%></th> - <th class="cbi-section-table-cell"><%:Gateway%></th> - <th class="cbi-section-table-cell"><%:Metric%></th> - </tr> + <div class="table cbi-section-table"> + <div class="tr cbi-section-table-titles"> + <div class="th cbi-section-table-cell"><%:Network%></div> + <div class="th cbi-section-table-cell"><%:Interface%></div> + <div class="th cbi-section-table-cell"><%:Gateway%></div> + <div class="th cbi-section-table-cell"><%:Metric%></div> + </div> <% if def4 then %> - <tr class="cbi-section-table-row cbi-rowstyle-1"> - <td class="cbi-value-field" id="v4dst"><%=def4.dest%></td> - <td class="cbi-value-field" id="v4dev"><%=def4.dev%></td> - <td class="cbi-value-field" id="v4gw"><%=def4.gateway%></td> - <td class="cbi-value-field" id="v4metr"><%=def4.metr%></td> - </tr> + <div class="tr cbi-section-table-row cbi-rowstyle-1"> + <div class="td cbi-value-field" id="v4dst"><%=def4.dest%></div> + <div class="td cbi-value-field" id="v4dev"><%=def4.dev%></div> + <div class="td cbi-value-field" id="v4gw"><%=def4.gateway%></div> + <div class="td cbi-value-field" id="v4metr"><%=def4.metr%></div> + </div> <% end if def6 then %> - <tr class="cbi-section-table-row cbi-rowstyle-2"> - <td class="cbi-value-field" id="v6dst"><%=def6.dest%></td> - <td class="cbi-value-field" id="v6dev"><%=def6.dev%></td> - <td class="cbi-value-field" id="v6gw"><%=def6.gateway%></td> - <td class="cbi-value-field" id="v6metr"><%=def6.metr%></td> - </tr> + <div class="tr cbi-section-table-row cbi-rowstyle-2"> + <div class="td cbi-value-field" id="v6dst"><%=def6.dest%></div> + <div class="td cbi-value-field" id="v6dev"><%=def6.dev%></div> + <div class="td cbi-value-field" id="v6gw"><%=def6.gateway%></div> + <div class="td cbi-value-field" id="v6metr"><%=def6.metr%></div> + </div> <% end %> - </table> + </div> <% end %> </div> </div> diff --git a/protocols/luci-proto-ipv6/luasrc/model/network/proto_aiccu.lua b/protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua index e0d7fd3e21..b2454838f9 100644 --- a/protocols/luci-proto-ipv6/luasrc/model/network/proto_aiccu.lua +++ b/protocols/luci-proto-3g/luasrc/model/network/proto_3g.lua @@ -1,17 +1,17 @@ --- Copyright 2015 Paul Oranje <por@xs4all.nl> --- Licensed to the public under GPLv2 +-- Copyright 2018 Florian Eckert <fe@dev.tdt.de> +-- Licensed to the public under the Apache License 2.0. local netmod = luci.model.network local interface = luci.model.network.interface -local proto = netmod:register_protocol("aiccu") +local proto = netmod:register_protocol("3g") function proto.get_i18n(self) - return luci.i18n.translate("AICCU (SIXXS)") + return luci.i18n.translate("UMTS/GPRS/EV-DO") end function proto.ifname(self) - return "aiccu-" .. self.sid + return "3g-" .. self.sid end function proto.get_interface(self) @@ -19,11 +19,11 @@ function proto.get_interface(self) end function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/aiccu.sh") + return nixio.fs.access("/lib/netifd/proto/3g.sh") end function proto.opkg_package(self) - return "aiccu" + return "comgt" end function proto.is_floating(self) @@ -46,4 +46,4 @@ function proto.contains_interface(self, ifname) end end -netmod:register_pattern_virtual("^aiccu%-%w") +netmod:register_pattern_virtual("^3g%-%w") diff --git a/protocols/luci-proto-ipv6/Makefile b/protocols/luci-proto-ipv6/Makefile index 761ee2f9f5..b28c8d5895 100644 --- a/protocols/luci-proto-ipv6/Makefile +++ b/protocols/luci-proto-ipv6/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk -LUCI_TITLE:=Support for DHCPv6/6in4/6to4/6rd/DS-Lite/aiccu +LUCI_TITLE:=Support for DHCPv6/6in4/6to4/6rd/DS-Lite LUCI_DEPENDS:= PKG_LICENSE:=Apache-2.0 diff --git a/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_aiccu.lua b/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_aiccu.lua deleted file mode 100644 index 7b5e6043cc..0000000000 --- a/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_aiccu.lua +++ /dev/null @@ -1,136 +0,0 @@ --- Copyright 2015 Paul Oranje <por@xs4all.nl> --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - --- config read by /lib/netifd/proto/aiccu.sh -local username, password, protocol, server, tunnelid, ip6prefix, requiretls, nat, heartbeat, - verbose, ntpsynctimeout, ip6addr, sourcerouting, defaultroute - --- generic parameters -local metric, ttl, mtu - - -username = section:taboption("general", Value, "username", - translate("Server username"), - translate("SIXXS-handle[/Tunnel-ID]")) -username.datatype = "string" - -password = section:taboption("general", Value, "password", - translate("Server password"), - translate("Server password, enter the specific password of the tunnel when the username contains the tunnel ID")) -password.datatype = "string" -password.password = true - - ---[[ SIXXS supports only TIC as tunnel broker protocol, no use setting it. -protocol = section:taboption("general", ListValue, "protocol", - translate("Tunnel broker protocol"), - translate("SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) use 6in4 instead")) - -protocol:value("tic", "TIC") -protocol:value("tsp", "TSP") -protocol:value("l2tp", "L2TP") -protocol.default = "tic" -protocol.optional = true ---]] - - -server = section:taboption("general", Value, "server", - translate("Tunnel setup server"), - translate("Optional, specify to override default server (tic.sixxs.net)")) -server.datatype = "host(0)" -server.optional = true - - -tunnelid = section:taboption("general", Value, "tunnelid", - translate("Tunnel ID"), - translate("Optional, use when the SIXXS account has more than one tunnel")) -tunnelid.datatype = "string" -tunnelid.optional = true - - -local ip6prefix = section:taboption("general", Value, "ip6prefix", - translate("IPv6 prefix"), - translate("Routed IPv6 prefix for downstream interfaces")) -ip6prefix.datatype = "ip6addr" -ip6prefix.optional = true - - -heartbeat = s:taboption("general", ListValue, "heartbeat", - translate("Tunnel type"), - translate("Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison\">Tunneling Comparison</a> on SIXXS")) -heartbeat:value("0", translate("AYIYA")) -heartbeat:value("1", translate("Heartbeat")) -heartbeat.default = "0" - - -nat = section:taboption("general", Flag, "nat", - translate("Behind NAT"), - translate("The tunnel end-point is behind NAT, defaults to disabled and only applies to AYIYA")) -nat.optional = true -nat.default = nat.disabled - - -requiretls = section:taboption("general", Flag, "requiretls", - translate("Require TLS"), - translate("Connection to server fails when TLS cannot be used")) -requiretls.optional = true -requiretls.default = requiretls.disabled - - -verbose = section:taboption("advanced", Flag, "verbose", - translate("Verbose"), - translate("Verbose logging by aiccu daemon")) -verbose.optional = true -verbose.default = verbose.disabled - - -ntpsynctimeout = section:taboption("advanced", Value, "ntpsynctimeout", - translate("NTP sync time-out"), - translate("Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)")) -ntpsynctimeout.datatype = "uinteger" -ntpsynctimeout.placeholder = "90" -ntpsynctimeout.optional = true - - -ip6addr = section:taboption("advanced", Value, "ip6addr", - translate("Local IPv6 address"), - translate("IPv6 address delegated to the local tunnel endpoint (optional)")) -ip6addr.datatype = "ip6addr" -ip6addr.optional = true - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Default route"), - translate("Whether to create an IPv6 default route over the tunnel")) -defaultroute.default = defaultroute.enabled -defaultroute.optional = true - - -sourcerouting = section:taboption("advanced", Flag, "sourcerouting", - translate("Source routing"), - translate("Whether to route only packets from delegated prefixes")) -sourcerouting.default = sourcerouting.enabled -sourcerouting.optional = true - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) -metric.datatype = "uinteger" -metric.placeholder = "0" -metric:depends("defaultroute", defaultroute.enabled) - - -ttl = section:taboption("advanced", Value, "ttl", - translate("Use TTL on tunnel interface")) -ttl.datatype = "range(1,255)" -ttl.placeholder = "64" - - -mtu = section:taboption("advanced", Value, "mtu", - translate("Use MTU on tunnel interface"), - translate("minimum 1280, maximum 1480")) -mtu.datatype = "range(1280,1480)" -mtu.placeholder = "1280" - diff --git a/protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua b/protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua index 1bcbd4808a..3afb7de4f5 100644 --- a/protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua +++ b/protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua @@ -4,7 +4,7 @@ local netmod = luci.model.network local _, p -for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "3g", "l2tp", "pppossh"}) do +for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "l2tp", "pppossh"}) do local proto = netmod:register_protocol(p) @@ -13,8 +13,6 @@ for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "3g", "l2tp", "pppossh"}) d return luci.i18n.translate("PPP") elseif p == "pptp" then return luci.i18n.translate("PPtP") - elseif p == "3g" then - return luci.i18n.translate("UMTS/GPRS/EV-DO") elseif p == "pppoe" then return luci.i18n.translate("PPPoE") elseif p == "pppoa" then @@ -33,8 +31,6 @@ for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "3g", "l2tp", "pppossh"}) d function proto.opkg_package(self) if p == "ppp" then return p - elseif p == "3g" then - return "comgt" elseif p == "pptp" then return "ppp-mod-pptp" elseif p == "pppoe" then @@ -55,8 +51,6 @@ for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "3g", "l2tp", "pppossh"}) d return (nixio.fs.glob("/usr/lib/pppd/*/rp-pppoe.so")() ~= nil) elseif p == "pptp" then return (nixio.fs.glob("/usr/lib/pppd/*/pptp.so")() ~= nil) - elseif p == "3g" then - return nixio.fs.access("/lib/netifd/proto/3g.sh") elseif p == "l2tp" then return nixio.fs.access("/lib/netifd/proto/l2tp.sh") elseif p == "pppossh" then diff --git a/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css b/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css index 8d0c434a98..5aff091485 100644 --- a/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css +++ b/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css @@ -25,7 +25,8 @@ body { h1, h2, h3, h4, h5, h6, p, pre, a, abbr, acronym, code, del, em, img, q, s, small, strike, strong, sub, sup, tt, var, dd, dl, dt, li, ol, ul, fieldset, -form, label, legend, button, table, caption, tbody, tfoot, thead, tr, th, td { +form, label, legend, button, table, caption, tbody, tfoot, thead, tr, th, td, +.table, .tbody, .tfoot, .thead, .tr, .th, .td { margin: 0; padding: 0; border: 0; @@ -112,8 +113,6 @@ option, textarea { font-size: 100%; margin: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; box-sizing: border-box; vertical-align: baseline; *vertical-align: middle; @@ -146,8 +145,6 @@ input[type="submit"][disabled] { input[type="search"] { -webkit-appearance: textfield; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; box-sizing: content-box; } @@ -375,8 +372,6 @@ code, pre { padding: 0 3px 2px; font-family: Monaco, Andale Mono, Courier New, monospace; font-size: 12px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; border-radius: 3px; } @@ -395,8 +390,6 @@ pre { font-size: 12px; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.15); - -webkit-border-radius: 3px; - -moz-border-radius: 3px; border-radius: 3px; white-space: pre; white-space: pre-wrap; @@ -493,8 +486,6 @@ select, line-height: 18px; color: #808080; border: 1px solid #ccc; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; border-radius: 3px; } @@ -521,8 +512,6 @@ input[type=file] { padding: initial; border: initial; line-height: initial; - -webkit-box-shadow: none; - -moz-box-shadow: none; box-shadow: none; width: auto !important; } @@ -551,8 +540,6 @@ textarea { background-color: #ffffff; display: block; border-color: #eee; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); cursor: not-allowed; } @@ -566,27 +553,17 @@ textarea { } input, textarea { - -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; - -moz-transition: border linear 0.2s, box-shadow linear 0.2s; - -ms-transition: border linear 0.2s, box-shadow linear 0.2s; - -o-transition: border linear 0.2s, box-shadow linear 0.2s; transition: border linear 0.2s, box-shadow linear 0.2s; - -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); - -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); } input:focus, textarea:focus { outline: 0; border-color: rgba(82, 168, 236, 0.8); - -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); - -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); } input[type=file]:focus, input[type=checkbox]:focus, select:focus { - -webkit-box-shadow: none; - -moz-box-shadow: none; box-shadow: none; outline: 1px dotted #666; } @@ -602,8 +579,6 @@ form .clearfix.error input, form .clearfix.error textarea { form .clearfix.error input:focus, form .clearfix.error textarea:focus { border-color: #e9322d; - -webkit-box-shadow: 0 0 6px #f8b9b7; - -moz-box-shadow: 0 0 6px #f8b9b7; box-shadow: 0 0 6px #f8b9b7; } @@ -624,8 +599,6 @@ form .clearfix.warning input, form .clearfix.warning textarea { form .clearfix.warning input:focus, form .clearfix.warning textarea:focus { border-color: #be9a3f; - -webkit-box-shadow: 0 0 6px #e5d6b1; - -moz-box-shadow: 0 0 6px #e5d6b1; box-shadow: 0 0 6px #e5d6b1; } @@ -646,8 +619,6 @@ form .clearfix.success input, form .clearfix.success textarea { form .clearfix.success input:focus, form .clearfix.success textarea:focus { border-color: #458845; - -webkit-box-shadow: 0 0 6px #9acc9a; - -moz-box-shadow: 0 0 6px #9acc9a; box-shadow: 0 0 6px #9acc9a; } @@ -671,10 +642,8 @@ textarea[readonly] { .cbi-page-actions { background: #f5f5f5; margin-bottom: 18px; - padding: 17px 20px 18px 150px; + padding: 17px 20px 18px 17px; border-top: 1px solid #ddd; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; border-radius: 0 0 3px 3px; text-align: right; } @@ -719,7 +688,12 @@ textarea[readonly] { * Tables.less * Tables for, you guessed it, tabular data * ---------------------------------------- */ -table { +.tr { display: table-row; } +.table[width="33%"], .th[width="33%"], .td[width="33%"] { width: 33%; } +.table[width="100%"], .th[width="100%"], .td[width="100%"] { width: 100%; } + +.table { + display: table; width: 100%; margin-bottom: 18px; padding: 0; @@ -727,24 +701,26 @@ table { border-collapse: collapse; } -table th, table td { +.table .th, .table .td { + display: table-cell; + vertical-align: middle; /* Fixme */ padding: 10px 10px 9px; line-height: 18px; text-align: left; } -table th { +.table .th { padding-top: 9px; font-weight: bold; vertical-align: middle; } -table td { +.table .td { vertical-align: top; border-top: 1px solid #ddd; } -table tbody th { +.table .tbody .th { border-top: 1px solid #ddd; vertical-align: top; } @@ -797,18 +773,8 @@ header p { header .fill { background-color: #222; - background-color: #222222; background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#333333), to(#222222)); - background-image: -moz-linear-gradient(top, #333333, #222222); - background-image: -ms-linear-gradient(top, #333333, #222222); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #333333), color-stop(100%, #222222)); - background-image: -webkit-linear-gradient(top, #333333, #222222); - background-image: -o-linear-gradient(top, #333333, #222222); background-image: linear-gradient(to bottom, #333333, #222222); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); padding: 0 5px; } @@ -914,14 +880,7 @@ header div > ul .dropdown-menu li a:hover, .nav .dropdown-menu li a:hover { background-color: #191919; background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#292929), to(#191919)); - background-image: -moz-linear-gradient(top, #292929, #191919); - background-image: -ms-linear-gradient(top, #292929, #191919); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #292929), color-stop(100%, #191919)); - background-image: -webkit-linear-gradient(top, #292929, #191919); - background-image: -o-linear-gradient(top, #292929, #191919); background-image: linear-gradient(to bottom, #292929, #191919); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#292929', endColorstr='#191919', GradientType=0); color: #ffffff; } @@ -960,9 +919,6 @@ a.menu:after, .dropdown-toggle:after { border-left: 4px solid transparent; border-right: 4px solid transparent; border-top: 4px solid #ffffff; - filter: alpha(opacity=50); - -khtml-opacity: 0.5; - -moz-opacity: 0.5; opacity: 0.5; } @@ -984,14 +940,8 @@ a.menu:after, .dropdown-toggle:after { border-color: rgba(0, 0, 0, 0.2); border-style: solid; border-width: 0 1px 1px; - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; - -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding-box; background-clip: padding-box; } @@ -1025,18 +975,9 @@ header .dropdown-menu a.hover, .dropdown-menu a.hover { background-color: #dddddd; background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#eeeeee), to(#dddddd)); - background-image: -moz-linear-gradient(top, #eeeeee, #dddddd); - background-image: -ms-linear-gradient(top, #eeeeee, #dddddd); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eeeeee), color-stop(100%, #dddddd)); - background-image: -webkit-linear-gradient(top, #eeeeee, #dddddd); - background-image: -o-linear-gradient(top, #eeeeee, #dddddd); background-image: linear-gradient(to bottom, #eeeeee, #dddddd); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dddddd', GradientType=0); color: #404040; text-decoration: none; - -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px rgba(0, 0, 0, 0.025); - -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px rgba(0, 0, 0, 0.025); box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px rgba(0, 0, 0, 0.025); } @@ -1129,8 +1070,6 @@ header .dropdown-menu a.hover, margin-right: 2px; line-height: 34px; border: 1px solid transparent; - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } @@ -1155,8 +1094,6 @@ header .dropdown-menu a.hover, .cbi-tabmenu .menu-dropdown, .cbi-tabmenu .dropdown-menu { top: 35px; border-width: 1px; - -webkit-border-radius: 0 6px 6px 6px; - -moz-border-radius: 0 6px 6px 6px; border-radius: 0 6px 6px 6px; } @@ -1191,20 +1128,9 @@ header .dropdown-menu a.hover, margin: 0 0 18px; background-color: #f5f5f5; background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#ffffff), to(#f5f5f5)); - background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); - background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f5f5f5)); - background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); - background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); background-image: linear-gradient(to bottom, #ffffff, #f5f5f5); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0); border: 1px solid #ddd; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; border-radius: 3px; - -webkit-box-shadow: inset 0 1px 0 #ffffff; - -moz-box-shadow: inset 0 1px 0 #ffffff; box-shadow: inset 0 1px 0 #ffffff; } @@ -1258,14 +1184,7 @@ footer { .alert-message.error { background-color: #c43c35; background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35)); - background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); border-color: #c43c35 #c43c35 #882a25; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); @@ -1274,14 +1193,7 @@ footer { .btn.success, .alert-message.success { background-color: #57a957; background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957)); - background-image: -moz-linear-gradient(top, #62c462, #57a957); - background-image: -ms-linear-gradient(top, #62c462, #57a957); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957)); - background-image: -webkit-linear-gradient(top, #62c462, #57a957); - background-image: -o-linear-gradient(top, #62c462, #57a957); background-image: linear-gradient(to bottom, #62c462, #57a957); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); border-color: #57a957 #57a957 #3d773d; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); @@ -1290,14 +1202,7 @@ footer { .btn.info, .alert-message.info { background-color: #339bb9; background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9)); - background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); - background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9)); - background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); - background-image: -o-linear-gradient(top, #5bc0de, #339bb9); background-image: linear-gradient(to bottom, #5bc0de, #339bb9); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); border-color: #339bb9 #339bb9 #22697d; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); @@ -1309,13 +1214,7 @@ footer { display: inline-block; background-color: #e6e6e6; background-repeat: no-repeat; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); padding: 5px 14px 6px; text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); color: #333; @@ -1323,11 +1222,7 @@ footer { line-height: normal; border: 1px solid #ccc; border-bottom-color: #bbb; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } @@ -1350,14 +1245,7 @@ footer { padding: 5px 14px 6px; background-color: #0064cd; background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); - background-image: -moz-linear-gradient(top, #049cdb, #0064cd); - background-image: -ms-linear-gradient(top, #049cdb, #0064cd); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); - background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); - background-image: -o-linear-gradient(top, #049cdb, #0064cd); background-image: linear-gradient(to bottom, #049cdb, #0064cd); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); border-color: #0064cd #0064cd #003f81; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); @@ -1372,22 +1260,12 @@ footer { .cbi-button-up, .cbi-input-up { background-position: center center; - background-image: url('../resources/cbi/up.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/up.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/up.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/up.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/up.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); background-image: url('../resources/cbi/up.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); } .cbi-button-down, .cbi-input-down { background-position: center center; - background-image: url('../resources/cbi/down.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/down.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/down.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/down.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/down.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); background-image: url('../resources/cbi/down.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); } @@ -1395,11 +1273,6 @@ footer { .cbi-input-find { background-position: 6px center, left top; padding-left: 28px; - background-image: url('../resources/cbi/find.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/find.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/find.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/find.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/find.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); background-image: url('../resources/cbi/find.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); } @@ -1407,11 +1280,6 @@ footer { .cbi-input-add { background-position: 6px center, left top; padding-left: 28px; - background-image: url('../resources/cbi/add.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/add.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/add.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/add.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/add.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); background-image: url('../resources/cbi/add.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); } @@ -1419,11 +1287,6 @@ footer { .cbi-input-apply { background-position: 6px center, left top; padding-left: 28px; - background-image: url('../resources/cbi/apply.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/apply.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/apply.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/apply.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/apply.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); background-image: url('../resources/cbi/apply.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); } @@ -1431,11 +1294,6 @@ footer { .cbi-input-reset { background-position: 6px center, left top; padding-left: 28px; - background-image: url('../resources/cbi/reset.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/reset.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/reset.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/reset.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/reset.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); background-image: url('../resources/cbi/reset.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); } @@ -1443,11 +1301,6 @@ footer { .cbi-input-edit { background-position: 6px center, left top; padding-left: 28px; - background-image: url('../resources/cbi/edit.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/edit.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/edit.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/edit.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/edit.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); background-image: url('../resources/cbi/edit.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); } @@ -1455,11 +1308,6 @@ footer { .cbi-input-remove { background-position: 6px center, left top; padding-left: 28px; - background-image: url('../resources/cbi/remove.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/remove.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/remove.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/remove.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/remove.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); background-image: url('../resources/cbi/remove.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); } @@ -1467,11 +1315,6 @@ footer { .cbi-input-reload { background-position: 6px center, left top; padding-left: 28px; - background-image: url('../resources/cbi/reload.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/reload.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/reload.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/reload.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/reload.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); background-image: url('../resources/cbi/reload.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); } @@ -1479,11 +1322,6 @@ footer { .cbi-input-link { background-position: 6px center, left top; padding-left: 28px; - background-image: url('../resources/cbi/link.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/link.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/link.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/link.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/link.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); background-image: url('../resources/cbi/link.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); } @@ -1491,43 +1329,24 @@ footer { .cbi-input-download { background-position: 6px center, left top; padding-left: 28px; - background-image: url('../resources/cbi/download.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/download.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/download.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/download.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/download.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); background-image: url('../resources/cbi/download.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); } .btn.active, .btn:active { - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); } .btn.disabled { cursor: default; background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - filter: alpha(opacity=65); - -khtml-opacity: 0.65; - -moz-opacity: 0.65; opacity: 0.65; - -webkit-box-shadow: none; - -moz-box-shadow: none; box-shadow: none; } .btn[disabled] { cursor: default; background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - filter: alpha(opacity=65); - -khtml-opacity: 0.65; - -moz-opacity: 0.65; opacity: 0.65; - -webkit-box-shadow: none; - -moz-box-shadow: none; box-shadow: none; } @@ -1535,8 +1354,6 @@ footer { font-size: 15px; line-height: normal; padding: 9px 14px 9px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; border-radius: 6px; } @@ -1585,10 +1402,6 @@ footer { padding: 3px 9px 3px 27px; } -:root .alert-message, :root .btn { - border-radius: 0 0; -} - button.btn::-moz-focus-inner, input[type=submit].btn::-moz-focus-inner { padding: 0; border: 0; @@ -1601,18 +1414,12 @@ button.btn::-moz-focus-inner, input[type=submit].btn::-moz-focus-inner { font-weight: bold; line-height: 13.5px; text-shadow: 0 1px 0 #ffffff; - filter: alpha(opacity=25); - -khtml-opacity: 0.25; - -moz-opacity: 0.25; opacity: 0.25; } .close:hover { color: #000000; text-decoration: none; - filter: alpha(opacity=40); - -khtml-opacity: 0.4; - -moz-opacity: 0.4; opacity: 0.4; } @@ -1623,25 +1430,14 @@ button.btn::-moz-focus-inner, input[type=submit].btn::-moz-focus-inner { color: #404040; background-color: #eedc94; background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94)); - background-image: -moz-linear-gradient(top, #fceec1, #eedc94); - background-image: -ms-linear-gradient(top, #fceec1, #eedc94); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94)); - background-image: -webkit-linear-gradient(top, #fceec1, #eedc94); - background-image: -o-linear-gradient(top, #fceec1, #eedc94); background-image: linear-gradient(to bottom, #fceec1, #eedc94); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0); text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); border-color: #eedc94 #eedc94 #e4c652; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); border-width: 1px; border-style: solid; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); } @@ -1677,8 +1473,6 @@ button.btn::-moz-focus-inner, input[type=submit].btn::-moz-focus-inner { } .alert-message .btn { - -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); - -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); } @@ -1690,8 +1484,6 @@ button.btn::-moz-focus-inner, input[type=submit].btn::-moz-focus-inner { text-transform: uppercase; white-space: nowrap; background-color: #bfbfbf; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; border-radius: 3px; text-shadow: none; } @@ -1765,6 +1557,8 @@ header .pull-right { padding-top: 8px; } .right { text-align: right !important; } +.center { text-align: center !important; } + .cbi-value-field { line-height: 1.5em; } .cbi-value-field input[type=checkbox], @@ -1778,22 +1572,22 @@ table table td, border: none; } -table.cbi-section-table input, -table.cbi-section-table textarea, -table.cbi-section-table select { +.table.cbi-section-table input, +.table.cbi-section-table textarea, +.table.cbi-section-table select { width: auto; } -table.cbi-section-table td.cbi-section-table-cell { +.table.cbi-section-table .td.cbi-section-table-cell { white-space: nowrap; text-align: right; } -table.cbi-section-table td.cbi-section-table-cell select { +.table.cbi-section-table .td.cbi-section-table-cell select { width: inherit; } -table.valign-middle td { +.table.valign-middle .td { vertical-align: middle; } @@ -1821,25 +1615,24 @@ table.valign-middle td { margin: 0 10px; text-align: center; white-space: nowrap; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + display: inline-flex; + flex-direction: column; + line-height: 1.2em; + min-width: 100px; } .ifacebox .ifacebox-head { border-bottom: 1px solid #CCCCCC; padding: 2px; + background: #eee; +} + +.ifacebox .ifacebox-head.active { + background: #90c0e0; } .ifacebox .ifacebox-body { @@ -1847,33 +1640,26 @@ table.valign-middle td { } .ifacebadge { - display: inline-block; + display: inline-flex; + flex-direction: row; white-space: nowrap; background-color: #FFFFFF; border: 1px solid #CCCCCC; padding: 2px; margin-left: 2px; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); cursor: default; + line-height: 1.2em; } .ifacebadge img { width: 16px; height: 16px; vertical-align: middle; + margin-right: .25em; } .ifacebadge-active { @@ -1881,6 +1667,39 @@ table.valign-middle td { font-weight: bold; } +.network-status-table { + display: flex; + flex-wrap: wrap; +} + +.network-status-table .ifacebox { + margin: .5em; + flex-grow: 1; +} + +.network-status-table .ifacebox-body { + display: flex; + flex-direction: column; + height: 100%; + text-align: left; +} + +.network-status-table .ifacebox-body > span { + flex: 10; +} + +.network-status-table .ifacebox-body > div { + display: flex; + flex-wrap: wrap; +} + +.network-status-table .ifacebox-body .ifacebadge { + flex: 1; + margin: .5em .25em 0 .25em; + padding: .5em; + min-width: 220px; +} + .zonebadge { padding: 2px; border-radius: 4px; @@ -1909,7 +1728,7 @@ table.valign-middle td { } div.cbi-value var, -td.cbi-value-field var { +.td.cbi-value-field var { font-style: italic; color: #0069D6; } @@ -1945,12 +1764,14 @@ td.cbi-value-field var { display: block; font-style: normal; padding: 2px; + line-height: 19px; + white-space: pre; } .uci-change-list var ins, .uci-change-list var del { - /*display: inline;*/ - border: none; + display: inline; + /*border: none;*/ white-space: pre; font-style: normal; padding: 0px; @@ -1980,3 +1801,7 @@ td.cbi-value-field var { line-height: 6px; border: none; } + +html body.apply-overlay-active { + height: calc(100vh - 63px); +} diff --git a/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/html5.js b/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/html5.js deleted file mode 100644 index 1ec510f2a4..0000000000 --- a/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/html5.js +++ /dev/null @@ -1,3 +0,0 @@ -// HTML5 Shiv v3 | @jon_neal @afarkas @rem | MIT/GPL2 Licensed -// Uncompressed source: https://github.com/aFarkas/html5shiv -(function(a,b){function f(a){var c,d,e,f;b.documentMode>7?(c=b.createElement("font"),c.setAttribute("data-html5shiv",a.nodeName.toLowerCase())):c=b.createElement("shiv:"+a.nodeName);while(a.firstChild)c.appendChild(a.childNodes[0]);for(d=a.attributes,e=d.length,f=0;f<e;++f)d[f].specified&&c.setAttribute(d[f].nodeName,d[f].nodeValue);c.style.cssText=a.style.cssText,a.parentNode.replaceChild(c,a),c.originalElement=a}function g(a){var b=a.originalElement;while(a.childNodes.length)b.appendChild(a.childNodes[0]);a.parentNode.replaceChild(b,a)}function h(a,b){b=b||"all";var c=-1,d=[],e=a.length,f,g;while(++c<e){f=a[c],g=f.media||b;if(f.disabled||!/print|all/.test(g))continue;d.push(h(f.imports,g),f.cssText)}return d.join("")}function i(c){var d=new RegExp("(^|[\\s,{}])("+a.html5.elements.join("|")+")","gi"),e=c.split("{"),f=e.length,g=-1;while(++g<f)e[g]=e[g].split("}"),b.documentMode>7?e[g][e[g].length-1]=e[g][e[g].length-1].replace(d,'$1font[data-html5shiv="$2"]'):e[g][e[g].length-1]=e[g][e[g].length-1].replace(d,"$1shiv\\:$2"),e[g]=e[g].join("}");return e.join("{")}var c=function(a){return a.innerHTML="<x-element></x-element>",a.childNodes.length===1}(b.createElement("a")),d=function(a,b,c){return b.appendChild(a),(c=(c?c(a):a.currentStyle).display)&&b.removeChild(a)&&c==="block"}(b.createElement("nav"),b.documentElement,a.getComputedStyle),e={elements:"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video".split(" "),shivDocument:function(a){a=a||b;if(a.documentShived)return;a.documentShived=!0;var f=a.createElement,g=a.createDocumentFragment,h=a.getElementsByTagName("head")[0],i=function(a){f(a)};c||(e.elements.join(" ").replace(/\w+/g,i),a.createElement=function(a){var b=f(a);return b.canHaveChildren&&e.shivDocument(b.document),b},a.createDocumentFragment=function(){return e.shivDocument(g())});if(!d&&h){var j=f("div");j.innerHTML=["x<style>","article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}","audio{display:none}","canvas,video{display:inline-block;*display:inline;*zoom:1}","[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}","mark{background:#FF0;color:#000}","</style>"].join(""),h.insertBefore(j.lastChild,h.firstChild)}return a}};e.shivDocument(b),a.html5=e;if(c||!a.attachEvent)return;a.attachEvent("onbeforeprint",function(){if(a.html5.supportsXElement||!b.namespaces)return;b.namespaces.shiv||b.namespaces.add("shiv");var c=-1,d=new RegExp("^("+a.html5.elements.join("|")+")$","i"),e=b.getElementsByTagName("*"),g=e.length,j,k=i(h(function(a,b){var c=[],d=a.length;while(d)c.unshift(a[--d]);d=b.length;while(d)c.unshift(b[--d]);c.sort(function(a,b){return a.sourceIndex-b.sourceIndex}),d=c.length;while(d)c[--d]=c[d].styleSheet;return c}(b.getElementsByTagName("style"),b.getElementsByTagName("link"))));while(++c<g)j=e[c],d.test(j.nodeName)&&f(j);b.appendChild(b._shivedStyleSheet=b.createElement("style")).styleSheet.cssText=k}),a.attachEvent("onafterprint",function(){if(a.html5.supportsXElement||!b.namespaces)return;var c=-1,d=b.getElementsByTagName("*"),e=d.length,f;while(++c<e)f=d[c],f.originalElement&&g(f);b._shivedStyleSheet&&b._shivedStyleSheet.parentNode.removeChild(b._shivedStyleSheet)})})(this,document)
\ No newline at end of file diff --git a/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm b/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm index 4881535acb..aaacf56b84 100644 --- a/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm +++ b/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm @@ -160,7 +160,6 @@ <head> <meta charset="utf-8"> <title><%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI</title> - <!--[if lt IE 9]><script src="<%=media%>/html5.js"></script><![endif]--> <meta name="viewport" content="initial-scale=1.0"> <link rel="stylesheet" href="<%=media%>/cascade.css"> <link rel="stylesheet" media="only screen and (max-device-width: 854px)" href="<%=media%>/mobile.css" type="text/css" /> @@ -191,22 +190,20 @@ </div> </header> - <%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") then -%> - <div class="container"> + <div id="maincontent" class="container"> + <%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") then -%> <div class="alert-message warning"> <h4><%:No password set!%></h4> - <%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%><br> - <a href="<%=pcdata(luci.dispatcher.build_url("admin/system/admin"))%>"><%:Go to password configuration...%></a> + <p><%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%></p> + <div class="right"><a class="btn" href="<%=url("admin/system/admin")%>"><%:Go to password configuration...%></a></div> </div> - </div> - <%- end -%> + <%- end -%> - <noscript> - <div class="alert-message warning"> - <strong><%:JavaScript required!%></strong><br /> - <%:You must enable JavaScript in your browser or LuCI will not work properly.%> - </div> - </noscript> + <noscript> + <div class="alert-message warning"> + <h4><%:JavaScript required!%></h4> + <p><%:You must enable JavaScript in your browser or LuCI will not work properly.%></p> + </div> + </noscript> - <div id="maincontent" class="container"> <% if category then render_tabmenu(category, cattree) end %> diff --git a/themes/luci-theme-material/htdocs/luci-static/material/css/style.css b/themes/luci-theme-material/htdocs/luci-static/material/css/style.css index 57bbaf6afc..a3b22ccf81 100755 --- a/themes/luci-theme-material/htdocs/luci-static/material/css/style.css +++ b/themes/luci-theme-material/htdocs/luci-static/material/css/style.css @@ -32,6 +32,25 @@ font-style: normal; } +.table { display: table; } +.tr { display: table-row; } +.thead { display: table-header-group; } +.tbody { display: table-row-group; } +.tfoot { display: table-footer-group; } +.td, .th { + vertical-align: middle; + text-align: center; + display: table-cell; + padding: .5em; +} + +.th { + font-weight: bold; +} + +.table[width="33%"], .th[width="33%"], .td[width="33%"] { width: 33%; } +.table[width="100%"], .th[width="100%"], .td[width="100%"] { width: 100%; } + .cbi-button-up, .cbi-button-down, .cbi-value-helpicon, @@ -268,10 +287,9 @@ header > .container > .brand { color: black; } -.errorbox, .alert-message { margin: 2rem 0 0 0; - padding: 2rem; + padding: 1rem; border: 0; font-weight: normal; font-style: normal; @@ -284,16 +302,19 @@ header > .container > .brand { box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); } -.errorbox { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} - .error { color: red; } +.alert-message > h4 { + font-weight: bold; + font-size: 110%; +} + +.alert-message > * { + margin: .5rem 0; +} + #maincontent > .container > div:nth-child(1).alert-message.warning > a { font: inherit; overflow: visible; @@ -468,14 +489,16 @@ fieldset > fieldset { border-bottom: 1px solid #eee; } -table { +table, +.table { border-spacing: 0; border-collapse: collapse; width: 100%; border: 1px solid #eee; } -table > tbody > tr > td, table > tbody > tr > th, table > tfoot > tr > td, table > tfoot > tr > th, table > thead > tr > td, table > thead > tr > th { +table > tbody > tr > td, table > tbody > tr > th, table > tfoot > tr > td, table > tfoot > tr > th, table > thead > tr > td, table > thead > tr > th, +.table > .tbody > .tr > .td, .table > .tbody > .tr > .th, .table > .tfoot > .tr > .td, .table > .tfoot > .tr > .th, .table > .thead > .tr > .td, .table > .thead > .tr > .th { padding: .5rem; border-top: 1px solid #ddd; white-space: nowrap; @@ -489,7 +512,13 @@ table > tbody > tr > td, table > tbody > tr > th, table > tfoot > tr > td, table text-align: center; } -fieldset > table > tbody > tr:nth-of-type(2n) { +fieldset > table > tbody > tr:nth-of-type(2n), +fieldset > .table > .tbody > .tr:nth-of-type(2n) { + background-color: #f9f9f9; +} + +fieldset > table > tbody > tr:nth-of-type(2n), +fieldset > .table > .tbody > .tr:nth-of-type(2n) { background-color: #f9f9f9; } @@ -516,25 +545,29 @@ fieldset > table > tbody > tr:nth-of-type(2n) { /* fix multiple table */ -table table { +table table, +.table .table { border: none; } -.cbi-value-field table { +.cbi-value-field table, +.cbi-value-field .table { border: none; } -td > table > tbody > tr > td { +td > table > tbody > tr > td, +.td > .table > .tbody > .tr > .td { border: none; } -.cbi-value-field > table > tbody > tr > td { +.cbi-value-field > table > tbody > tr > td, +.cbi-value-field > .table > .tbody > .tr > .td { border: none; } /* button style */ -.cbi-button { +.btn, .cbi-button { -webkit-appearance: none; text-transform: uppercase; color: rgba(0, 0, 0, 0.87); @@ -557,8 +590,13 @@ td > table > tbody > tr > td { user-select: none; font-size: 0.8rem; width: auto !important; + display: inline-block; + text-decoration: none; } +.btn:hover, +.btn:focus, +.btn:active, .cbi-button:hover, .cbi-button:focus, .cbi-button:active { @@ -568,15 +606,19 @@ td > table > tbody > tr > td { color: rgba(0, 0, 0, 0.87); } +.btn:hover, +.btn:focus, .cbi-button:hover, .cbi-button:focus { box-shadow: 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); } +.btn:active, .cbi-button:active { box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); } +.btn:disabled, .cbi-button:disabled { cursor: not-allowed; pointer-events: none; @@ -776,6 +818,10 @@ form.inline + form.inline, text-align: right !important; } +.center { + text-align: center !important; +} + .inline { display: inline; } @@ -806,7 +852,8 @@ form.inline + form.inline, box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } -td > .ifacebadge { +td > .ifacebadge, +.td > .ifacebadge { background-color: #F0F0F0; font-size: 0.9rem; } @@ -814,6 +861,41 @@ td > .ifacebadge { .ifacebadge > img { float: right; margin: 0 0.3rem; + align-self: start; +} + +.network-status-table { + display: flex; + flex-wrap: wrap; +} + +.network-status-table .ifacebox { + margin: .5em; + flex-grow: 1; +} + +.network-status-table .ifacebox-body { + display: flex; + flex-direction: column; + height: 100%; +} + +.network-status-table .ifacebox-body > span { + flex: 10; +} + +.network-status-table .ifacebox-body > div { + display: flex; + flex-wrap: wrap; +} + +.network-status-table .ifacebox-body .ifacebadge { + flex: 1; + margin: .5em .25em 0 .25em; + padding: .5em; + min-width: 220px; + background-color: #fff; + align-items: center; } /*textarea*/ @@ -926,6 +1008,23 @@ td > .ifacebadge { .ifacebox { border: 1px solid #999; background-color: #f9f9f9; + display: inline-flex; + flex-direction: column; + line-height: 1.2em; + min-width: 100px; +} + +.ifacebox-head { + padding: .25em; + background: #eee; +} + +.ifacebox-head.active { + background: #90c0e0; +} + +.ifacebox-body { + padding: .25em; } .cbi-image-button { @@ -986,7 +1085,7 @@ td > .ifacebadge { padding: 0.5rem; } -div.cbi-value var, td.cbi-value-field var { +div.cbi-value var, td.cbi-value-field var, .td.cbi-value-field var { font-style: italic; color: #0069D6; } @@ -1134,13 +1233,13 @@ header > .container > .pull-right > * { /* fix status overview */ -.node-status-overview > .main fieldset:nth-child(4) td:nth-child(2) { +.node-status-overview > .main fieldset:nth-child(4) .td:nth-child(2) { white-space: normal; } /* fix status processes */ -.node-status-processes > .main table tr td:nth-child(3) { +.node-status-processes > .main .table .tr .td:nth-child(3) { white-space: normal; } @@ -1248,6 +1347,7 @@ body.lang_pl.node-main-login .cbi-value-title { width: calc(100% - 13rem); } + .btn, .cbi-button { padding: 0.3rem 0.6rem; font-size: 0.8rem; diff --git a/themes/luci-theme-material/htdocs/luci-static/material/js/jquery.min.js b/themes/luci-theme-material/htdocs/luci-static/material/js/jquery.min.js index f3644431ee..4d9b3a2587 100755 --- a/themes/luci-theme-material/htdocs/luci-static/material/js/jquery.min.js +++ b/themes/luci-theme-material/htdocs/luci-static/material/js/jquery.min.js @@ -1,6 +1,2 @@ -/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; - -return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ca()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ca()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?aa:ba):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=aa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=aa,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=aa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=ba;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=ba),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function da(a){var b=ea.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var ea="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fa=/ jQuery\d+="(?:null|\d+)"/g,ga=new RegExp("<(?:"+ea+")[\\s/>]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/<tbody/i,la=/<|&#?\w+;/,ma=/<(?:script|style|link)/i,na=/checked\s*(?:[^=]|=\s*.checked.)/i,oa=/^$|\/(?:java|ecma)script/i,pa=/^true\/(.*)/,qa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ra={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?"<table>"!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ca[0].contentWindow||Ca[0].contentDocument).document,b.write(),b.close(),c=Ea(a,b),Ca.detach()),Da[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Ga=/^margin/,Ha=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ia,Ja,Ka=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ia=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Ha.test(g)&&Ga.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ia=function(a){return a.currentStyle},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ha.test(g)&&!Ka.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function La(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Ma=/alpha\([^)]*\)/i,Na=/opacity\s*=\s*([^)]*)/,Oa=/^(none|table(?!-c[ea]).+)/,Pa=new RegExp("^("+S+")(.*)$","i"),Qa=new RegExp("^([+-])=("+S+")","i"),Ra={position:"absolute",visibility:"hidden",display:"block"},Sa={letterSpacing:"0",fontWeight:"400"},Ta=["Webkit","O","Moz","ms"];function Ua(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ta.length;while(e--)if(b=Ta[e]+c,b in a)return b;return d}function Va(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fa(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wa(a,b,c){var d=Pa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Ya(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ia(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Ja(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ha.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xa(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ja(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ua(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qa.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ua(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Ja(a,b,d)),"normal"===f&&b in Sa&&(f=Sa[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Oa.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Ra,function(){return Ya(a,b,d)}):Ya(a,b,d):void 0},set:function(a,c,d){var e=d&&Ia(a);return Wa(a,c,d?Xa(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Na.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Ma,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Ma.test(f)?f.replace(Ma,e):f+" "+e)}}),m.cssHooks.marginRight=La(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Ja,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Ga.test(a)||(m.cssHooks[a+b].set=Wa)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ia(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Va(this,!0)},hide:function(){return Va(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Za(a,b,c,d,e){ -return new Za.prototype.init(a,b,c,d,e)}m.Tween=Za,Za.prototype={constructor:Za,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Za.propHooks[this.prop];return a&&a.get?a.get(this):Za.propHooks._default.get(this)},run:function(a){var b,c=Za.propHooks[this.prop];return this.options.duration?this.pos=b=m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Za.propHooks._default.set(this),this}},Za.prototype.init.prototype=Za.prototype,Za.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Za.propHooks.scrollTop=Za.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Za.prototype.init,m.fx.step={};var $a,_a,ab=/^(?:toggle|show|hide)$/,bb=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cb=/queueHooks$/,db=[ib],eb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bb.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bb.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fb(){return setTimeout(function(){$a=void 0}),$a=m.now()}function gb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hb(a,b,c){for(var d,e=(eb[b]||[]).concat(eb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fa(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fa(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ab.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fa(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hb(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=db.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$a||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$a||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);g>f;f++)if(d=db[f].call(j,a,k,j.opts))return d;return m.map(k,hb,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kb,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],eb[c]=eb[c]||[],eb[c].unshift(b)},prefilter:function(a,b){b?db.unshift(a):db.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kb(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),m.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($a=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$a=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_a||(_a=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_a),_a=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lb=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lb,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mb,nb,ob=m.expr.attrHandle,pb=/^(?:checked|selected)$/i,qb=k.getSetAttribute,rb=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nb:mb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rb&&qb||!pb.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qb?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nb={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rb&&qb||!pb.test(c)?a.setAttribute(!qb&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ob[b]||m.find.attr;ob[b]=rb&&qb||!pb.test(b)?function(a,b,d){var e,f;return d||(f=ob[b],ob[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,ob[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rb&&qb||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mb&&mb.set(a,b,c)}}),qb||(mb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},ob.id=ob.name=ob.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mb.set},m.attrHooks.contenteditable={set:function(a,b,c){mb.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sb=/^(?:input|select|textarea|button|object)$/i,tb=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sb.test(a.nodeName)||tb.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var ub=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ub," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vb=m.now(),wb=/\?/,xb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yb,zb,Ab=/#.*$/,Bb=/([?&])_=[^&]*/,Cb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Db=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Eb=/^(?:GET|HEAD)$/,Fb=/^\/\//,Gb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hb={},Ib={},Jb="*/".concat("*");try{zb=location.href}catch(Kb){zb=y.createElement("a"),zb.href="",zb=zb.href}yb=Gb.exec(zb.toLowerCase())||[];function Lb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mb(a,b,c,d){var e={},f=a===Ib;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nb(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Ob(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zb,type:"GET",isLocal:Db.test(yb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nb(Nb(a,m.ajaxSettings),b):Nb(m.ajaxSettings,a)},ajaxPrefilter:Lb(Hb),ajaxTransport:Lb(Ib),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cb.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zb)+"").replace(Ab,"").replace(Fb,yb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gb.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yb[1]&&c[2]===yb[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yb[3]||("http:"===yb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mb(Hb,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Eb.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wb.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bb.test(e)?e.replace(Bb,"$1_="+vb++):e+(wb.test(e)?"&":"?")+"_="+vb++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jb+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mb(Ib,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Ob(k,v,c)),u=Pb(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qb=/%20/g,Rb=/\[\]$/,Sb=/\r?\n/g,Tb=/^(?:submit|button|image|reset|file)$/i,Ub=/^(?:input|select|textarea|keygen)/i;function Vb(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rb.test(a)?d(a,e):Vb(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vb(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vb(c,a[c],b,e);return d.join("&").replace(Qb,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Ub.test(this.nodeName)&&!Tb.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sb,"\r\n")}}):{name:b.name,value:c.replace(Sb,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zb()||$b()}:Zb;var Wb=0,Xb={},Yb=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xb)Xb[a](void 0,!0)}),k.cors=!!Yb&&"withCredentials"in Yb,Yb=k.ajax=!!Yb,Yb&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xb[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xb[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zb(){try{return new a.XMLHttpRequest}catch(b){}}function $b(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _b=[],ac=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_b.pop()||m.expando+"_"+vb++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ac.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ac.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ac,"$1"+e):b.jsonp!==!1&&(b.url+=(wb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_b.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bc=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bc)return bc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cc=a.document.documentElement;function dc(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cc;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cc})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=La(k.pixelPosition,function(a,c){return c?(c=Ja(a,b),Ha.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ec=a.jQuery,fc=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fc),b&&a.jQuery===m&&(a.jQuery=ec),m},typeof b===K&&(a.jQuery=a.$=m),m}); -//# sourceMappingURL=jquery.min.map
\ No newline at end of file +/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w}); diff --git a/themes/luci-theme-material/luasrc/view/themes/material/header.htm b/themes/luci-theme-material/luasrc/view/themes/material/header.htm index 0aca882c05..b6341a2c35 100644 --- a/themes/luci-theme-material/luasrc/view/themes/material/header.htm +++ b/themes/luci-theme-material/luasrc/view/themes/material/header.htm @@ -183,35 +183,35 @@ <!DOCTYPE html> <html lang="<%=luci.i18n.context.lang%>"> <head> - <meta charset="utf-8"> - <title><%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI</title> - <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/> - <meta name="format-detection" content="telephone=no, email=no"/> - <meta name="apple-mobile-web-app-capable" content="yes"> - <meta name="mobile-web-app-capable" content="yes"> - <meta name="x5-fullscreen" content="true"> - <meta name="full-screen" content="yes"> - <meta name="x5-page-mode" content="app"> - <meta name="browsermode" content="application"> - <meta name="theme-color" content="#0099CC"> - <meta name="msapplication-tap-highlight" content="no"> - <meta name="msapplication-TileColor" content="#0099CC"> - - <meta name="application-name" content="<%=striptags( (boardinfo.hostname or "?") ) %> - LuCI"> - <meta name="apple-mobile-web-app-title" content="<%=striptags( (boardinfo.hostname or "?") ) %> - LuCI"> - <meta name="msapplication-TileImage" content="<%=media%>/logo.png"/> - <link rel="icon" href="<%=media%>/logo.png" sizes="144x144"> - <link rel="apple-touch-icon-precomposed" href="<%=media%>/logo.png" sizes="144x144"> - - <link rel="stylesheet" href="<%=media%>/css/style.css"> - <link rel="shortcut icon" href="<%=media%>/favicon.ico"> - <% if node and node.css then %> - <link rel="stylesheet" href="<%=resource%>/<%=node.css%>"> - <% end -%> - <% if css then %> - <style title="text/css"><%= css %></style> - <% end -%> - <script src="<%=resource%>/xhr.js"></script> + <meta charset="utf-8"> + <title><%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI</title> + <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/> + <meta name="format-detection" content="telephone=no, email=no"/> + <meta name="apple-mobile-web-app-capable" content="yes"> + <meta name="mobile-web-app-capable" content="yes"> + <meta name="x5-fullscreen" content="true"> + <meta name="full-screen" content="yes"> + <meta name="x5-page-mode" content="app"> + <meta name="browsermode" content="application"> + <meta name="theme-color" content="#0099CC"> + <meta name="msapplication-tap-highlight" content="no"> + <meta name="msapplication-TileColor" content="#0099CC"> + + <meta name="application-name" content="<%=striptags( (boardinfo.hostname or "?") ) %> - LuCI"> + <meta name="apple-mobile-web-app-title" content="<%=striptags( (boardinfo.hostname or "?") ) %> - LuCI"> + <meta name="msapplication-TileImage" content="<%=media%>/logo.png"/> + <link rel="icon" href="<%=media%>/logo.png" sizes="144x144"> + <link rel="apple-touch-icon-precomposed" href="<%=media%>/logo.png" sizes="144x144"> + + <link rel="stylesheet" href="<%=media%>/css/style.css"> + <link rel="shortcut icon" href="<%=media%>/favicon.ico"> + <% if node and node.css then %> + <link rel="stylesheet" href="<%=resource%>/<%=node.css%>"> + <% end -%> + <% if css then %> + <style title="text/css"><%= css %></style> + <% end -%> + <script src="<%=resource%>/xhr.js"></script> </head> <body class="lang_<%=luci.i18n.context.lang%> <%- if node then %><%= striptags( node.title ) %><%- end %> <% if luci.dispatcher.context.authsession then %>logged-in<% end %>"> <header> @@ -228,26 +228,27 @@ </div> </header> <div class="main"> - <div style="" class="loading"><span><div class="loading-img"></div>Loading...</span></div> - <div class="main-left"> + <div style="" class="loading"><span><div class="loading-img"></div>Loading...</span></div> + <div class="main-left"> <% render_topmenu() %> - </div> + </div> <div class="main-right"> - <div class="darkMask"></div> - <div id="maincontent"> - <div class="container"> - <%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") then -%> - <div class="alert-message warning"> - <h4><%:No password set!%></h4> - <%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%><br> - <a href="<%=pcdata(luci.dispatcher.build_url("admin/system/admin"))%>"><%:Go to password configuration...%></a> - </div> - <%- end -%> - <% if category then render_tabmenu(category, cattree) end %> + <div class="darkMask"></div> + <div id="maincontent"> + <div class="container"> + <%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") then -%> + <div class="alert-message warning"> + <h4><%:No password set!%></h4> + <p><%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%></p> + <div class="right"><a class="btn" href="<%=url("admin/system/admin")%>"><%:Go to password configuration...%></a></div> + </div> + <%- end -%> <noscript> <div class="alert-message warning"> - <strong><%:JavaScript required!%></strong><br /> - <%:You must enable JavaScript in your browser or LuCI will not work properly.%> + <h4><%:JavaScript required!%></h4> + <p><%:You must enable JavaScript in your browser or LuCI will not work properly.%></p> </div> - </noscript> + </noscript> + + <% if category then render_tabmenu(category, cattree) end %> diff --git a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css index c5ee58fff7..8b359d475a 100644 --- a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css +++ b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css @@ -29,6 +29,21 @@ body { padding: 0; } +.table { display: table; } +.tr { display: table-row; } +.thead { display: table-header-group; } +.tbody { display: table-row-group; } +.tfoot { display: table-footer-group; } +.td, .th { display: table-cell; } +.th { font-weight: bold; } + +.table[width="33%"], .th[width="33%"], .td[width="33%"] { width: 33%; } +.table[width="100%"], .th[width="100%"], .td[width="100%"] { width: 100%; } + +.nowrap { + white-space: nowrap; +} + a img { border: none; text-decoration: none; @@ -166,6 +181,33 @@ code { background-color: white; } +.alert-message { + font-size: 9pt; + font-weight: normal; + padding: .5em; + border-radius: 3px; + color: #000; +} + +.alert-message.notice { + background: linear-gradient(#ccc 0%, #eee 100%); + color: #4a6b7c; +} + +.alert-message.warning { + background: linear-gradient(#dda 0%, #dd8 100%); + color: #c00; +} + +.alert-message > * { + margin: .5em; +} + +.alert-message > h4 { + font-weight: bold; + font-size: 10pt; +} + div.hostinfo { float: left; margin: 0; @@ -420,9 +462,9 @@ input[type=password] { width: 20em; } -td select, -td input[type=text], -td input[type=password] { +.td select, +.td input[type=text], +.td input[type=password] { width: 99%; } @@ -432,24 +474,29 @@ img.cbi-image-button { vertical-align: middle; } -input.cbi-button { - background-color: #EEEEEE; - background-repeat: no-repeat; - background-position: 1px center; - border: 1px solid #CCCCCC; +.btn, .cbi-button { + padding: 2px; border-radius: 3px; + border: 1px solid #aaa; + background: #eee 1px center no-repeat; + text-decoration: none; + color: #000; + display: inline-block; } -input.cbi-button:hover { - border-color: #4A6B7C; - background-color: #FFFFFF; +.btn:hover, .cbi-button:hover { + border-color: #4a6b7c; + background-color: #fff; } -input.cbi-button[disabled] { - color: #CCCCCC; - border-color: #CCCCCC; - background-color: #EEEEEE; +.btn[disabled], +.btn[disabled]:hover, +.cbi-button[disabled], +.cbi-button[disabled]:hover { + opacity: .6; cursor: default; + border-color: inherit; + background-color: inherit; } input.cbi-input-user { @@ -494,7 +541,6 @@ input.cbi-button-fieldadd { background-image: url(../resources/cbi/fieldadd.gif); color: #000000; padding-left: 17px; - padding-right: 1px; } input.cbi-input-reset, @@ -513,6 +559,7 @@ input.cbi-button-save { padding-right: 1px; } +/* input.cbi-input-apply, input.cbi-button-apply { background-image: url('../resources/cbi/apply.gif'); @@ -520,6 +567,18 @@ input.cbi-button-apply { padding-left: 17px; padding-right: 1px; } +*/ + +input.cbi-input-apply:before, +input.cbi-button-apply:before { + background-image: url('../resources/cbi/apply.gif'); + border: 2px solid red; + width: 100px; + height: 100px; + content: "."; + display: block; + position: absolute; +} input.cbi-input-link, input.cbi-button-link { @@ -608,12 +667,18 @@ form > div > input[type=reset] { margin-left: 0.5em; } -table td, -table th { +table td, table th { + color: #000000; +} + +.table .td, .table .th { color: #000000; + padding: .25em 0; + text-align: center; + vertical-align: middle; } -table.smalltext { +.table.smalltext { background: #f5f5f5; color: #000000; border-top: 1px solid #666666; @@ -626,35 +691,35 @@ table.smalltext { border-collapse: collapse; } -table.smalltext tr:hover td { +.table.smalltext .tr:hover .td { background-color: #bbddee; color: #000000; } -table.smalltext tr th { +.table.smalltext .tr .th { padding: 0 0.25em; border-left: 1px solid #666666; text-align: left; } -table.smalltext tr td { +.table.smalltext .tr .td { padding: 0 0.25em; border-top: 1px solid #666666; border-left: 1px solid #666666; } -table.cbi-section-table .cbi-rowstyle-1 { +.table.cbi-section-table .cbi-rowstyle-1 { background-color: #eeeeff; color: #000000; } -table.cbi-section-table .cbi-rowstyle-1:hover, -table.cbi-section-table .cbi-rowstyle-2:hover { +.table.cbi-section-table .cbi-rowstyle-1:hover, +.table.cbi-section-table .cbi-rowstyle-2:hover { background-color: #b2c8d4; color: #000000; } -table.cbi-section-table .cbi-section-table-cell { +.table.cbi-section-table .cbi-section-table-cell { padding: 3px; white-space: nowrap; } @@ -692,6 +757,11 @@ div.cbi-value-field { padding: 0.25em 0; } +div.td.cbi-value-field { + width: auto; + vertical-align: middle; +} + div.cbi-value-description { font-size: 90%; display: inline; @@ -740,7 +810,7 @@ div.cbi-section-remove { border-bottom: none; } -.cbi-section-node table div { +.cbi-section-node .table div { padding-bottom: 0; border-bottom: none; } @@ -749,23 +819,23 @@ div.cbi-section-remove { margin: 0.25em; } -table.cbi-section-table { +.table.cbi-section-table { width: 100%; font-size: 95%; } -table.cbi-section-table th, -table.cbi-section-table td { +.table.cbi-section-table .th, +.table.cbi-section-table .td { text-align: center; } -tr.cbi-section-table-descr th { +.tr.cbi-section-table-descr .th { font-weight: normal; font-size: 90%; vertical-align: top; } -td.cbi-section-table-optionals { +.td.cbi-section-table-optionals { text-align: left !important; padding-top: 1em; } @@ -781,7 +851,7 @@ div.cbi-error { background-color: #ffffff; } -td.cbi-value-error { +.td.cbi-value-error { border-color: red; } @@ -864,6 +934,10 @@ div.cbi-tab-descr { text-align: right !important; } +.center { + text-align: center !important; +} + .luci { position: absolute; bottom: 0; @@ -892,57 +966,79 @@ div.cbi-tab-descr { padding: 0.5em; } -.errorbox { - border: 1px solid #FF0000; - background-color: #FFCCCC; - padding: 5px; - margin-bottom: 5px; + +.ifacebadge, .ifacebox { + display: inline-flex; + align-content: center; + border: 1px solid #ccc; + border-radius: 3px; + padding: 2px; + background: #fff; + margin: .25em .5em; +} + +.ifacebox-head { + background: #eee; +} + +.ifacebox-head.active { + background: #90c0e0; } -.errorbox a { - color: #000000 !important; +.ifacebadge > img { + margin-right: 5px; + align-self: start; } +.ifacebadge-active { + border-color: #000000; + font-weight: bold; +} .ifacebox { - background-color: #FFFFFF; - border: 1px solid #CCCCCC; + flex-direction: column; margin: 0 10px; - text-align: center; - white-space: nowrap; + padding: 0; + min-width: 100px; } -.ifacebox .ifacebox-head { - border-bottom: 1px solid #CCCCCC; +.ifacebox > * { padding: 2px; } -.ifacebox .ifacebox-body { - padding: 2px; + +.network-status-table { + display: flex; + flex-wrap: wrap; } +.network-status-table .ifacebox { + margin: .5em; + font-size: 90%; + flex-grow: 1; +} -.ifacebadge { - background-color: #FFFFFF; - border: 1px solid #CCCCCC; - padding: 1px 2px; - margin-left: 2px; - display: inline-block; - cursor: default; - white-space: nowrap; - font-size: 11px; - border-radius: 3px; +.network-status-table .ifacebox-body { + display: flex; + flex-direction: column; + height: 100%; } -.ifacebadge img { - width: 16px; - height: 16px; - vertical-align: middle; +.network-status-table .ifacebox-body > span { + flex: 10; } -.ifacebadge-active { - border-color: #000000; - font-weight: bold; +.network-status-table .ifacebox-body > div { + display: flex; + flex-wrap: wrap; +} + +.network-status-table .ifacebox-body .ifacebadge { + flex: 1; + margin: .5em .25em .25em .25em; + padding: .5em; + min-width: 220px; + white-space: nowrap; } diff --git a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie6.css b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie6.css deleted file mode 100644 index 14db3f86e5..0000000000 --- a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie6.css +++ /dev/null @@ -1,77 +0,0 @@ -/* obligatory IE6 Voodoo Code */ - -* html body { - padding-left: 5% !important; -} - -* html div#header { - margin-left: 100% !important; -} - -* html div#menubar { - margin-left: -5% !important; - width: 105% !important; -} - -* html ul.dropdowns li ul { - width: 10em; -} - -* html ul.dropdowns li li { - clear: both; - float: left; -} - -* html ul.dropdowns li li { - width: 100%; -} - -* html ul.dropdowns li li a { - height: 10%; -} - -* html div#maincontent { - margin-left: 0% !important; - width: 100% !important; -} - -* html div.cbi-value-description { - width: auto !important; -} - -* html div.cbi-value-field { - margin-left: 0 !important; - width: 100% !important; -} - -* html .cbi-input-text, -* html .cbi-input-user, -* html .cbi-input-select, -* html .cbi-input-password { - width: 50% !important; -} - -* html .cbi-input-user, -* html .cbi-input-password { - text-indent: 0 !important; - padding-left: 1.5em !important; -} - -* html .cbi-section legend { - background-color: #ffffff; - color: #555555; -} - -* html table.cbi-section-table td .cbi-input-text, -* html table.cbi-section-table td .cbi-input-select { - width: 100% !important; -} - -* html div.cbi-page-actions { - text-align: right !important; -} - -* html div.cbi-value-field input, -* html div.cbi-value-field select { - font-size: 90% !important; -} diff --git a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie7.css b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie7.css deleted file mode 100644 index 9e569b28bd..0000000000 --- a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie7.css +++ /dev/null @@ -1,59 +0,0 @@ -#tabmenu { - line-height: 0; -} - -ul.tabmenu { - zoom: 1; -} - -ul.l1 { - position: relative; -} - - -table.cbi-section-table td .cbi-input-text, -table.cbi-section-table td .cbi-input-select { - width: 95% !important; -} - - -.cbi-input-user, -.cbi-input-password { - text-indent: 0 !important; - padding-left: 1.5em !important; - width: 18.5em !important; -} - - -fieldset.cbi-section { - position: relative; - margin-top: 1em; - padding-top: 0.75em; - border: 1px solid #CCCCCC; - zoom: 1; -} - -fieldset.cbi-section legend { - position: absolute; - top: -0.75em; - left: 0.5em; -} - - -ul.cbi-tabmenu { - margin-bottom: 0; -} - -ul.cbi-tabmenu li.cbi-tab a { - position: static; /* fixes misplaced tab after page load */ - border-bottom: 1px solid white; -} - - -div.cbi-value { - zoom: 1; /* fixes hanging float */ -} - -div.cbi-value-field { - margin-left: 0 !important; -} diff --git a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie8.css b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie8.css deleted file mode 100644 index 890988c417..0000000000 --- a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie8.css +++ /dev/null @@ -1,12 +0,0 @@ -fieldset.cbi-section { - position: relative; - margin-top: 1em; - padding-top: 0.75em; - border: 1px solid #CCCCCC; -} - -fieldset.cbi-section legend { - position: absolute; - top: -0.75em; - left: 0.5em; -} diff --git a/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm b/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm index a560014d37..cbf02a76cd 100644 --- a/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm +++ b/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm @@ -118,9 +118,6 @@ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/cascade.css" /> -<!--[if IE 6]><link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/ie6.css" /><![endif]--> -<!--[if IE 7]><link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/ie7.css" /><![endif]--> -<!--[if IE 8]><link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/ie8.css" /><![endif]--> <% if node and node.css then %><link rel="stylesheet" type="text/css" media="screen" href="<%=resource%>/<%=node.css%>" /> <% end -%> <% if css then %><style title="text/css"> @@ -170,16 +167,16 @@ <div id="maincontent"> <noscript> - <div class="errorbox"> - <strong><%:JavaScript required!%></strong><br /> - <%:You must enable JavaScript in your browser or LuCI will not work properly.%> + <div class="alert-message warning"> + <h4><%:JavaScript required!%></h4> + <p><%:You must enable JavaScript in your browser or LuCI will not work properly.%></p> </div> </noscript> <%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") and category ~= "failsafe" then -%> - <div class="errorbox"> - <strong><%:No password set!%></strong><br /> - <%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%><br /> - <a href="<%=pcdata(luci.dispatcher.build_url("admin/system/admin"))%>"><%:Go to password configuration...%></a> + <div class="alert-message warning"> + <h4><%:No password set!%></h4> + <p><%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%></p> + <div class="right"><a class="btn" href="<%=url("admin/system/admin")%>"><%:Go to password configuration...%></a></div> </div> <%- end -%> |