diff options
131 files changed, 5192 insertions, 2664 deletions
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua index f71fb7ba4d..68f9c8897e 100644 --- a/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua +++ b/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua @@ -6,9 +6,25 @@ local uci = require("uci") local sys = require("luci.sys") local json = require("luci.jsonc") local adbinput = uci.get("adblock", "global", "adb_rtfile") or "/tmp/adb_runtime.json" +local dnspath = uci.get("adblock", "global", "adb_dnsdir") or "" local parse = json.parse(fs.readfile(adbinput) or "") -local dnsFile1 = sys.exec("find '/tmp/dnsmasq.d/.adb_hidden' -maxdepth 1 -type f -name 'adb_list*' -print 2>/dev/null") -local dnsFile2 = sys.exec("find '/var/lib/unbound/.adb_hidden' -maxdepth 1 -type f -name 'adb_list*' -print 2>/dev/null") +if parse ~= nil then + version = parse.data.adblock_version + domains = parse.data.blocked_domains + fetch = parse.data.fetch_info + backend = parse.data.dns_backend + rundate = parse.data.last_rundate + if dnspath == "" then + if backend == "dnsmasq" then + dnspath = "/tmp/dnsmasq.d" + elseif backend == "unbound" then + dnspath = "/var/lib/unbound" + elseif backend == "named" then + dnspath = "/var/lib/bind" + end + end +end +local dnsfile = dnspath .. "/.adb_hidden/adb_list.overall" m = Map("adblock", translate("Adblock"), translate("Configuration of the adblock package to block ad/abuse domains by using DNS. ") @@ -17,7 +33,13 @@ m = Map("adblock", translate("Adblock"), .. "see online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md")) function m.on_after_commit(self) - luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1") + function e3.validate(self, value) + if value == "0" then + luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1") + else + luci.sys.call("/etc/init.d/adblock start >/dev/null 2>&1") + end + end luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock")) end @@ -30,7 +52,7 @@ o1.default = o1.enabled o1.rmempty = false btn = s:option(Button, "", translate("Suspend / Resume adblock")) -if dnsFile1 ~= "" or dnsFile2 ~= "" then +if parse ~= nil and nixio.fs.access(dnsfile) then btn.inputtitle = translate("Resume adblock") btn.inputstyle = "apply" btn.disabled = false @@ -72,52 +94,53 @@ dv1 = s:option(DummyValue, "status", translate("Status")) dv1.template = "adblock/runtime" if parse == nil then dv1.value = translate("n/a") -elseif parse.data.blocked_domains == "0" then +elseif domains == "0" then dv1.value = translate("no domains blocked") -elseif dnsFile1 ~= "" or dnsFile2 ~= "" then +elseif nixio.fs.access(dnsfile) then dv1.value = translate("suspended") else dv1.value = translate("active") end + dv2 = s:option(DummyValue, "adblock_version", translate("Adblock version")) dv2.template = "adblock/runtime" -if parse ~= nil then - dv2.value = parse.data.adblock_version or translate("n/a") -else +if parse == nil then dv2.value = translate("n/a") +else + dv2.value = version end dv3 = s:option(DummyValue, "fetch_info", translate("Download Utility (SSL Library)"), translate("For SSL protected blocklist sources you need a suitable SSL library, e.g. 'libustream-ssl' or the wget 'built-in'.")) dv3.template = "adblock/runtime" -if parse ~= nil then - dv3.value = parse.data.fetch_info or translate("n/a") -else +if parse == nil then dv3.value = translate("n/a") +else + dv3.value = fetch end dv4 = s:option(DummyValue, "dns_backend", translate("DNS backend")) dv4.template = "adblock/runtime" -if parse ~= nil then - dv4.value = parse.data.dns_backend or translate("n/a") -else +if parse == nil then dv4.value = translate("n/a") +else + dv4.value = backend end dv5 = s:option(DummyValue, "blocked_domains", translate("Blocked domains (overall)")) dv5.template = "adblock/runtime" -if parse ~= nil then - dv5.value = parse.data.blocked_domains or translate("n/a") -else +if parse == nil then dv5.value = translate("n/a") +else + dv5.value = domains end dv6 = s:option(DummyValue, "last_rundate", translate("Last rundate")) dv6.template = "adblock/runtime" -if parse ~= nil then - dv6.value = parse.data.last_rundate or translate("n/a") -else +if parse == nil then dv6.value = translate("n/a") +else + dv6.value = rundate end -- Blocklist table @@ -157,12 +180,18 @@ e2 = e:option(Flag, "adb_forcesrt", translate("Force Overall Sort"), e2.default = e2.disabled e2.rmempty = false -e3 = e:option(Flag, "adb_backup", translate("Enable blocklist backup")) +e3 = e:option(Flag, "adb_manmode", translate("Manual mode"), + translate("Do not automatically update blocklists during startup, use blocklist backups instead.")) e3.default = e3.disabled e3.rmempty = false -e4 = e:option(Value, "adb_backupdir", translate("Backup directory")) -e4.datatype = "directory" +e4 = e:option(Flag, "adb_backup", translate("Enable blocklist backup"), + translate("Create compressed blocklist backups, they will be used in case of download errors or during startup in manual mode.")) +e4.default = e4.disabled e4.rmempty = false +e5 = e:option(Value, "adb_backupdir", translate("Backup directory")) +e5.datatype = "directory" +e5.rmempty = false + return m diff --git a/applications/luci-app-adblock/po/ja/adblock.po b/applications/luci-app-adblock/po/ja/adblock.po index ac470fedd6..07fd783ed2 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.1\n" +"X-Generator: Poedit 2.0.2\n" "Language: ja\n" msgid "Adblock" @@ -50,12 +50,27 @@ msgstr "" "DNS の利用によって広告/不正ドメインをブロックする、Adblock パッケージの設定で" "す。" +msgid "" +"Create compressed blocklist backups, they will be used in case of download " +"errors or during startup in manual mode." +msgstr "" +"圧縮されたブロックリストのバックアップを作成します。これは、リストのダウン" +"ロードがエラーの場合、またはマニュアル モードでサービスを起動時に使用されま" +"す。" + msgid "DNS backend" msgstr "DNS バックエンド" msgid "Description" msgstr "説明" +msgid "" +"Do not automatically update blocklists during startup, use blocklist backups " +"instead." +msgstr "" +"サービス起動時にブロックリストを自動的に更新せず、代わりにバックアップされた" +"ブロックリストを使用します。" + msgid "Download Utility (SSL Library)" msgstr "ダウンロード ユーティリティ(SSL ライブラリ)" @@ -95,7 +110,7 @@ msgid "" "'libustream-ssl' or the wget 'built-in'." msgstr "" "SSLで保護されているブロックリストの取得には、適切なSSL ライブラリが必要です。" -"例: 'libustream-ssl' または wget 'ビルトイン'" +"例: 'libustream-ssl' または wget 'built-in'" msgid "" "For further information <a href=\"%s\" target=\"_blank\">see online " @@ -122,6 +137,9 @@ msgstr "最終実行日時" msgid "Loading" msgstr "読込中" +msgid "Manual mode" +msgstr "マニュアル モード" + msgid "No" msgstr "いいえ" @@ -251,129 +269,3 @@ msgstr "ブロックされたドメインはありません" msgid "suspended" msgstr "一時停止中" - -#~ msgid "." -#~ msgstr "。" - -#~ msgid "For further information" -#~ msgstr "詳細な情報は" - -#~ msgid "see online documentation" -#~ msgstr "オンライン ドキュメントを確認してください" - -#~ msgid "Backup options" -#~ msgstr "バックアップ オプション" - -#~ msgid "Restrict interface reload trigger to certain interface(s)" -#~ msgstr "リロード トリガを特定のインターフェースに限定する" - -#~ msgid "" -#~ "Space separated list of interfaces that trigger a reload action. To " -#~ "disable reload trigger at all remove all entries." -#~ msgstr "" -#~ "リロードのトリガとなる、スペースで区切られたインターフェースのリストです。" -#~ "リロード トリガを無効にするには、全てのエントリーを削除して空欄にします。" - -#~ msgid "" -#~ "Space separated list of interfaces that trigger a reload action. To " -#~ "disable reload trigger at all set it to 'false'." -#~ msgstr "" -#~ "リロードのトリガとなる、スペースで区切られたインターフェースのリストで" -#~ "す。'false' に設定した場合、全てのリロード トリガは無効になります。" - -#~ msgid "" -#~ "Please add only one domain per line. Comments introduced with '#' are " -#~ "allowed - ip addresses, wildcards & regex are not." -#~ msgstr "" -#~ "一行に一つのドメインを追加してください。'#' から始まるコメントを記述できま" -#~ "すが、IPアドレスやワイルドカード、正規表現を設定値として使用することはでき" -#~ "ません。" - -#~ msgid "" -#~ "). Note that list URLs and Shallalist category selections are not " -#~ "configurable via Luci." -#~ msgstr "" -#~ ")。これらのリストのURLおよびshallaリストの選択済みカテゴリーは、Luciを通" -#~ "して設定することができません。" - -#~ msgid "Available blocklist sources (" -#~ msgstr "利用可能なブロックリスト提供元です(" - -#~ msgid "" -#~ "File with whitelisted hosts/domains that are allowed despite being on a " -#~ "blocklist." -#~ msgstr "" -#~ "ホワイトリスト ファイル内のホスト/ドメインは、ブロックリストの登録に関わら" -#~ "ず許可されます。" - -#~ msgid "Global options" -#~ msgstr "一般設定" - -#~ msgid "Restrict reload trigger to certain interface(s)" -#~ msgstr "リロードトリガを特定のインターフェースに限定する" - -#~ msgid "" -#~ "Space separated list of wan interfaces that trigger reload action. To " -#~ "disable reload trigger set it to 'false'. Default: empty" -#~ msgstr "" -#~ "リロード実行のトリガとなる、スペースで区切られたWANインターフェースのリス" -#~ "トです。リロードトリガを無効にするには、 false を設定します。デフォルト:" -#~ "(空)" - -#~ msgid "Whitelist file" -#~ msgstr "ホワイトリスト ファイル" - -#~ msgid "see list details" -#~ msgstr "リストの詳細を見る" - -#~ msgid "Count" -#~ msgstr "カウント" - -#~ msgid "Do not write status info to flash" -#~ msgstr "ステータス情報をフラッシュに書き込まない" - -#~ msgid "Last update of the blocklists" -#~ msgstr "ブロックリストの最終更新日時" - -#~ msgid "List date/state" -#~ msgstr "リスト日時/状態" - -#~ msgid "Name of the logical lan interface" -#~ msgstr "論理LANインターフェース名" - -#~ msgid "Percentage of blocked packets (before last update, IPv4/IPv6)" -#~ msgstr "ブロック済みパケットの割合(最終更新以前、IPv4/IPv6)" - -#~ msgid "Port of the adblock uhttpd instance" -#~ msgstr "adblock uhttpdインスタンスのポート" - -#~ msgid "Port of the adblock uhttpd instance for https links" -#~ msgstr "httpsリンク用adblock uhttpdインスタンスのポート" - -#~ msgid "Redirect all DNS queries to the local resolver" -#~ msgstr "全てのDNSクエリをローカルリゾルバにリダイレクト" - -#~ msgid "" -#~ "Skip writing update status information to the config file. Status fields " -#~ "on this page will not be updated." -#~ msgstr "" -#~ "更新ステータス情報をコンフィグファイルに書き込まず、スキップします。この" -#~ "ページのステータス画面は更新されなくなります。" - -#~ msgid "Statistics" -#~ msgstr "ステータス" - -#~ msgid "Timeout for blocklist fetch (seconds)" -#~ msgstr "ブロックリスト取得の制限時間(秒)" - -#~ msgid "Total count of blocked domains" -#~ msgstr "ブロック済みドメインの合計" - -#~ msgid "" -#~ "When adblock is active, all DNS queries are redirected to the local " -#~ "resolver in this server by default. You can disable that to allow queries " -#~ "to external DNS servers." -#~ msgstr "" -#~ "adblockがアクティブである時、全てのDNSクエリは既定でこのサーバー上のリゾル" -#~ "バにリダイレクトされます。外部DNSサーバーへのクエリを許可する場合、この設" -#~ "定を無効にすることもできます。" diff --git a/applications/luci-app-adblock/po/pt-br/adblock.po b/applications/luci-app-adblock/po/pt-br/adblock.po index 72f6910429..044352da63 100644 --- a/applications/luci-app-adblock/po/pt-br/adblock.po +++ b/applications/luci-app-adblock/po/pt-br/adblock.po @@ -51,12 +51,22 @@ msgstr "" "Configuração do pacote adblock para bloquear, usando o DNS, domínios que " "distribuem propagandas abusivas." +msgid "" +"Create compressed blocklist backups, they will be used in case of download " +"errors or during startup in manual mode." +msgstr "" + msgid "DNS backend" msgstr "" msgid "Description" msgstr "Descrição" +msgid "" +"Do not automatically update blocklists during startup, use blocklist backups " +"instead." +msgstr "" + msgid "Download Utility (SSL Library)" msgstr "" @@ -117,6 +127,9 @@ msgstr "" msgid "Loading" msgstr "" +msgid "Manual mode" +msgstr "" + msgid "No" msgstr "" diff --git a/applications/luci-app-adblock/po/sv/adblock.po b/applications/luci-app-adblock/po/sv/adblock.po index 7f271221ae..cf92dbddc0 100644 --- a/applications/luci-app-adblock/po/sv/adblock.po +++ b/applications/luci-app-adblock/po/sv/adblock.po @@ -40,12 +40,22 @@ msgstr "" "Konfiguration av paketet adblock för att blockera annons/otillåtna domäner " "genom att använda DNS." +msgid "" +"Create compressed blocklist backups, they will be used in case of download " +"errors or during startup in manual mode." +msgstr "" + msgid "DNS backend" msgstr "Bakände för DNS" msgid "Description" msgstr "Beskrivning" +msgid "" +"Do not automatically update blocklists during startup, use blocklist backups " +"instead." +msgstr "" + msgid "Download Utility (SSL Library)" msgstr "Nerladdningsprogram (SSL-bibliotek)" @@ -107,6 +117,9 @@ msgstr "" msgid "Loading" msgstr "Laddar" +msgid "Manual mode" +msgstr "" + msgid "No" msgstr "Nej" diff --git a/applications/luci-app-adblock/po/templates/adblock.pot b/applications/luci-app-adblock/po/templates/adblock.pot index c5771ef22e..5b5a96866a 100644 --- a/applications/luci-app-adblock/po/templates/adblock.pot +++ b/applications/luci-app-adblock/po/templates/adblock.pot @@ -38,12 +38,22 @@ msgid "" "Configuration of the adblock package to block ad/abuse domains by using DNS." msgstr "" +msgid "" +"Create compressed blocklist backups, they will be used in case of download " +"errors or during startup in manual mode." +msgstr "" + msgid "DNS backend" msgstr "" msgid "Description" msgstr "" +msgid "" +"Do not automatically update blocklists during startup, use blocklist backups " +"instead." +msgstr "" + msgid "Download Utility (SSL Library)" msgstr "" @@ -104,6 +114,9 @@ msgstr "" msgid "Loading" msgstr "" +msgid "Manual mode" +msgstr "" + msgid "No" msgstr "" diff --git a/applications/luci-app-adblock/po/zh-cn/adblock.po b/applications/luci-app-adblock/po/zh-cn/adblock.po index dfa03f32b1..46dc99e66e 100644 --- a/applications/luci-app-adblock/po/zh-cn/adblock.po +++ b/applications/luci-app-adblock/po/zh-cn/adblock.po @@ -50,12 +50,22 @@ msgid "" "Configuration of the adblock package to block ad/abuse domains by using DNS." msgstr "Adblock 配置工具,通过 DNS 来拦截广告和阻止域名。" +msgid "" +"Create compressed blocklist backups, they will be used in case of download " +"errors or during startup in manual mode." +msgstr "" + msgid "DNS backend" msgstr "DNS 后端" msgid "Description" msgstr "描述" +msgid "" +"Do not automatically update blocklists during startup, use blocklist backups " +"instead." +msgstr "" + msgid "Download Utility (SSL Library)" msgstr "" @@ -116,6 +126,9 @@ msgstr "" msgid "Loading" msgstr "加载中" +msgid "Manual mode" +msgstr "" + msgid "No" msgstr "否" diff --git a/applications/luci-app-advanced-reboot/Makefile b/applications/luci-app-advanced-reboot/Makefile new file mode 100644 index 0000000000..3a886eb8de --- /dev/null +++ b/applications/luci-app-advanced-reboot/Makefile @@ -0,0 +1,20 @@ +# Copyright (c) 2017 Stan Grishin (stangri@melmac.net) +# This is free software, licensed under the GNU General Public License v3. + +include $(TOPDIR)/rules.mk + +PKG_LICENSE:=GPL-3.0+ +PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net> + +LUCI_TITLE:=Advanced Linksys Reboot Web UI +LUCI_DESCRIPTION:=Provides Web UI (found under System/Advanced Reboot) to reboot supported Linksys routers to\ + an altnerative partition. Also provides Web UI to shut down (power off) your device. Supported dual-partition\ + routers are listed at https://github.com/stangri/openwrt-luci/blob/luci-app-advanced-reboot/applications/luci-app-advanced-reboot/README.md + +LUCI_DEPENDS:=+luci +LUCI_PKGARCH:=all +PKG_RELEASE:=23 + +include ../../luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-advanced-reboot/README.md b/applications/luci-app-advanced-reboot/README.md new file mode 100644 index 0000000000..ee87a00020 --- /dev/null +++ b/applications/luci-app-advanced-reboot/README.md @@ -0,0 +1,35 @@ +# Advanced Reboot Web UI (luci-app-advanced-reboot) + +## Description +This package allows you to reboot to an alternative partition on supported (dual-partition) routers and to power off (power down) your OpenWrt/LEDE Project device. + +## Supported Devices +Currently supported dual-partition devices include: +- Linksys WRT1200AC +- Linksys WRT1900AC +- Linksys WRT1900ACv2 +- Linksys WRT1900ACS +- Linksys WRT3200ACM +- Linksys E4200v2 +- Linksys EA4500 +- Linksys EA8500 + +If you're interested in having your device supported, please post in [LEDE Project Forum Support Thread](https://forum.lede-project.org/t/web-ui-to-reboot-to-another-partition-dual-partition-routers/3423). + +## Screenshot (luci-app-advanced-reboot) +![screenshot](https://raw.githubusercontent.com/stangri/screenshots/master/luci-app-advanced-reboot/screenshot01.png "screenshot") + +## How to install +Install ```luci-app-advanced-reboot``` from Web UI or connect to your router via ssh and run the following commands: +```sh +opkg update +opkg install luci-app-advanced-reboot +``` + +## Notes/Known Issues +- When you reboot to a different partition, your current settings (WiFi SSID/password, etc.) will not apply to a different partition. Different partitions might have completely different settings and even firmware. +- If you reboot to a partition which doesn't allow you to switch boot partitions (like stock Linksys firmware), you might not be able to boot back to OpenWrt/LEDE Project unless you reflash it, loosing all the settings. +- Some devices allow you to trigger reboot to alternative partition by interrupting boot 3 times in a row (by resetting/switching off the device or pulling power). As these methods might be different for different devices, do your own homework. + +## Thanks +I'd like to thank everyone who helped create, test and troubleshoot this package. Without contributions from [@hnyman](https://github.com/hnyman) and [@jpstyves](https://github.com/jpstyves) it wouldn't have been possible. diff --git a/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua b/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua new file mode 100644 index 0000000000..2b55217b8e --- /dev/null +++ b/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua @@ -0,0 +1,120 @@ +-- Copyright 2017 Stan Grishin <stangri@melmac.net> +-- Licensed to the public under the Apache License 2.0. + +module("luci.controller.advanced_reboot", package.seeall) + +-- device, board_name, part1, part2, offset, env_var_1, value_1_1, value_1_2, env_var_2, value_2_1, value_2_2 +devices = { + {"Linksys WRT1200AC", "armada-385-linksys-caiman", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, + {"Linksys WRT1900AC", "armada-xp-linksys-mamba", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, + {"Linksys WRT1900ACv2", "armada-385-linksys-cobra", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, + {"Linksys WRT1900ACS", "armada-385-linksys-shelby", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, + {"Linksys WRT3200ACM", "armada-385-linksys-rango", "mtd5", "mtd7", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, + {"Linksys E4200v2/EA4500", "linksys-viper", "mtd3", "mtd5", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, + {"Linksys EA8500", "ea8500", "mtd13", "mtd15", 32, "boot_part", 1, 2} +} + +board_name = luci.util.trim(luci.sys.exec("cat /tmp/sysinfo/board_name")) +for i=1, #devices do + if board_name and devices[i][2] == board_name then + device_name = devices[i][1] + partition_one_mtd = devices[i][3] or nil + partition_two_mtd = devices[i][4] or nil + partition_skip = devices[i][5] or nil + boot_envvar1 = devices[i][6] or nil + boot_envvar1_partition_one = tonumber(devices[i][7]) or nil + boot_envvar1_partition_two = tonumber(devices[i][8]) or nil + boot_envvar2 = devices[i][9] or nil + boot_envvar2_partition_one = devices[i][10] or nil + boot_envvar2_partition_two = devices[i][11] or nil + if partition_one_mtd and partition_skip then + partition_one_label = luci.util.trim(luci.sys.exec("dd if=/dev/" .. partition_one_mtd .. " bs=1 skip=" .. partition_skip .. " count=25" .. " 2>/dev/null")) + n, partition_one_version = string.match(partition_one_label, '(Linux)-([%d|.]+)') + end + if partition_two_mtd and partition_skip then + partition_two_label = luci.util.trim(luci.sys.exec("dd if=/dev/" .. partition_two_mtd .. " bs=1 skip=" .. partition_skip .. " count=25" .. " 2>/dev/null")) + n, partition_two_version = string.match(partition_two_label, '(Linux)-([%d|.]+)') + end + if string.find(partition_one_label, "LEDE") then partition_one_os = "LEDE" end + if string.find(partition_one_label, "OpenWrt") then partition_one_os = "OpenWrt" end + if string.find(partition_one_label, "Linksys") then partition_one_os = "Linksys" end + if string.find(partition_two_label, "LEDE") then partition_two_os = "LEDE" end + if string.find(partition_two_label, "OpenWrt") then partition_two_os = "OpenWrt" end + if string.find(partition_two_label, "Linksys") then partition_two_os = "Linksys" end + if not partition_one_os then partition_one_os = "Unknown" end + if not partition_two_os then partition_two_os = "Unknown" end + if partition_one_os and partition_one_version then partition_one_os = partition_one_os .. " (Linux " .. partition_one_version .. ")" end + if partition_two_os and partition_two_version then partition_two_os = partition_two_os .. " (Linux " .. partition_two_version .. ")" end + if nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then + current_partition = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1))) + other_partition = current_partition == boot_envvar1_partition_one and boot_envvar1_partition_two or boot_envvar1_partition_one + end + end +end + +function index() + entry({"admin", "system", "advanced_reboot"}, template("advanced_reboot/advanced_reboot"), _("Advanced Reboot"), 90) + entry({"admin", "system", "advanced_reboot", "reboot"}, post("action_reboot")) +-- if device_name then entry({"admin", "system", "advanced_reboot", "altreboot"}, post("action_altreboot")) end + entry({"admin", "system", "advanced_reboot", "alternative_reboot"}, post("action_altreboot")) + entry({"admin", "system", "advanced_reboot", "power_off"}, post("action_poweroff")) +end + +function action_reboot() + luci.template.render("admin_system/applyreboot", { + title = luci.i18n.translate("Rebooting..."), + msg = luci.i18n.translate("The system is rebooting now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."), + addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1" + }) + luci.sys.reboot() +end + +function action_altreboot() + if luci.http.formvalue("cancel") then + luci.http.redirect(luci.dispatcher.build_url('admin/system/advanced_reboot')) + return + end + local step = tonumber(luci.http.formvalue("step") or 1) + if step == 1 then + if device_name and nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then + luci.template.render("advanced_reboot/alternative_reboot",{}) + else + luci.template.render("advanced_reboot/advanced_reboot",{}) + end + elseif step == 2 then + luci.template.render("admin_system/applyreboot", { + title = luci.i18n.translate("Rebooting..."), + msg = luci.i18n.translate("The system is rebooting to an alternative partition now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."), + addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1" + }) + if boot_envvar1 then env1 = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1))) end + if boot_envvar2 then env2 = luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar2)) end + if env1 and env1 == boot_envvar1_partition_one then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. boot_envvar1_partition_two) end + if env1 and env1 == boot_envvar1_partition_two then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. boot_envvar1_partition_one) end + if env2 and env2 == boot_envvar2_partition_one then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. boot_envvar2_partition_two .. "'") end + if env2 and env2 == boot_envvar2_partition_two then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. boot_envvar2_partition_one .. "'") end + luci.sys.reboot() + end +end + +function action_poweroff() + if luci.http.formvalue("cancel") then + luci.http.redirect(luci.dispatcher.build_url('admin/system/advanced_reboot')) + return + end + local step = tonumber(luci.http.formvalue("step") or 1) + if step == 1 then + if nixio.fs.access("/sbin/poweroff") then + luci.template.render("advanced_reboot/power_off",{}) + else + luci.template.render("advanced_reboot/advanced_reboot",{}) + end + elseif step == 2 then + luci.template.render("admin_system/applyreboot", { + title = luci.i18n.translate("Shutting down..."), + msg = luci.i18n.translate("The system is shutting down now.<br /> DO NOT POWER OFF THE DEVICE!<br /> It might be necessary to renew the address of your computer to reach the device again, depending on your settings."), + addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1" + }) + luci.sys.call("/sbin/poweroff") + end +end diff --git a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm new file mode 100644 index 0000000000..206d250543 --- /dev/null +++ b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm @@ -0,0 +1,92 @@ +<%# + Copyright 2008 Steven Barth <steven@midlink.org> + Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org> + Copyright 2017 Stan Grishin <stangri@melmac.net> + Licensed to the public under the Apache License 2.0. +-%> + +<%+header%> + +<h2 name="content"><%:Advanced Reboot%></h2> +<br /> + +<%- local c = require("luci.model.uci").cursor():changes(); if c and next(c) then -%> + <p class="alert-message warning"><%:Warning: There are unsaved changes that will get lost on reboot!%></p> +<%- end -%> + +<%- 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> + <%=boot_envvar1_partition_one%> + </td> + <td> + <%- if boot_envvar1_partition_one == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%> + </td> + <td> + <%=partition_one_os%> + </td> + <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%>" /> + <input id="reboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to current partition%>" /> + </form> + <%- else -%> + <form method="post" action="<%=url('admin/system/advanced_reboot/alternative_reboot')%>"> + <input type="hidden" name="token" value="<%=token%>" /> + <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> + <%=boot_envvar1_partition_two%> + </td> + <td> + <%- if boot_envvar1_partition_two == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%> + </td> + <td> + <%=partition_two_os%> + </td> + <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%>" /> + <input id="reboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to current partition%>" /> + </form> + <%- else -%> + <form method="post" action="<%=url('admin/system/advanced_reboot/alternative_reboot')%>"> + <input type="hidden" name="token" value="<%=token%>" /> + <input id="altreboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to alternative partition...%>" /> + </form> + <%- end -%> + </td> + </tr> + </table> +</fieldset> +<%- else -%> + <p class="alert-message warning"><%:Warning: This system does not have two partitions!%></p> +<%- end -%> + +<hr /> + +<%- if nixio.fs.access("/sbin/poweroff") then -%> +<form method="post" action="<%=url('admin/system/advanced_reboot/power_off')%>"> + <input type="hidden" name="token" value="<%=token%>" /> + <input id="poweroff-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Perform power off...%>" /> +</form> +<%- else -%> + <p class="alert-message warning"><%:Warning: This system does not support powering off!%></p> +<%- end -%> + +<%+footer%> diff --git a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm new file mode 100644 index 0000000000..6325934094 --- /dev/null +++ b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm @@ -0,0 +1,29 @@ +<%# + Copyright 2008 Steven Barth <steven@midlink.org> + Copyright 2008-2009 Jo-Philipp Wich <jow@openwrt.org> + Copyright 2017 Stan Grishin <stangri@melmac.net> + Licensed to the public under the Apache License 2.0. +-%> + +<%+header%> + +<h2 name="content"><%:Reboot Device to an Alternative Partition%> - <%:Confirm%></h2> +<p> + <%_ WARNING: An alternative partition might have its own settings and completely different firmware.<br /><br /> + As your network configuration and WiFi SSID/password on alternative partition might be different, + you might have to adjust your computer settings to be able to access your device once it reboots.<br /><br /> + Please also be aware that alternative partition firmware might not provide an easy way to switch active partition + and boot back to the currently active partition.<br /><br /> + Click "Proceed" below to reboot device to an alternative partition. %> +</p> + +<div class="cbi-page-actions right"> + <form class="inline" action="<%=REQUEST_URI%>" method="post"> + <input type="hidden" name="token" value="<%=token%>" /> + <input type="hidden" name="step" value="2" /> + <input class="cbi-button cbi-button-reset" name="cancel" type="submit" value="<%:Cancel%>" /> + <input class="cbi-button cbi-button-apply" type="submit" value="<%:Proceed%>" /> + </form> +</div> + +<%+footer%> diff --git a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm new file mode 100644 index 0000000000..0ddea11e65 --- /dev/null +++ b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm @@ -0,0 +1,25 @@ +<%# + Copyright 2008 Steven Barth <steven@midlink.org> + Copyright 2008-2009 Jo-Philipp Wich <jow@openwrt.org> + Copyright 2017 Stan Grishin <stangri@melmac.net> + Licensed to the public under the Apache License 2.0. +-%> + +<%+header%> + +<h2 name="content"><%:Power Off Device%> - <%:Confirm%></h2> +<p> + <%_ WARNING: Power off might result in a reboot on a device which doesn't support power off.<br /><br /> + Click "Proceed" below to power off your device. %> +</p> + +<div class="cbi-page-actions right"> + <form class="inline" action="<%=REQUEST_URI%>" method="post"> + <input type="hidden" name="token" value="<%=token%>" /> + <input type="hidden" name="step" value="2" /> + <input class="cbi-button cbi-button-reset" name="cancel" type="submit" value="<%:Cancel%>" /> + <input class="cbi-button cbi-button-apply" type="submit" value="<%:Proceed%>" /> + </form> +</div> + +<%+footer%> diff --git a/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot b/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot new file mode 100644 index 0000000000..9c810892c2 --- /dev/null +++ b/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot @@ -0,0 +1,102 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "Action" +msgstr "" + +msgid "Advanced Reboot" +msgstr "" + +msgid "Alternative" +msgstr "" + +msgid "Cancel" +msgstr "" + +msgid "Confirm" +msgstr "" + +msgid "Current" +msgstr "" + +msgid "Firmware/OS (Kernel)" +msgstr "" + +msgid "Partition" +msgstr "" + +msgid "Partitions" +msgstr "" + +msgid "Perform power off..." +msgstr "" + +msgid "Power Off Device" +msgstr "" + +msgid "Proceed" +msgstr "" + +msgid "Reboot Device to an Alternative Partition" +msgstr "" + +msgid "Reboot to alternative partition..." +msgstr "" + +msgid "Reboot to current partition" +msgstr "" + +msgid "Rebooting..." +msgstr "" + +msgid "Shutting down..." +msgstr "" + +msgid "Status" +msgstr "" + +msgid "" +"The system is rebooting now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a " +"few minutes before you try to reconnect. It might be necessary to renew the " +"address of your computer to reach the device again, depending on your " +"settings." +msgstr "" + +msgid "" +"The system is rebooting to an alternative partition now.<br /> DO NOT POWER " +"OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It " +"might be necessary to renew the address of your computer to reach the device " +"again, depending on your settings." +msgstr "" + +msgid "" +"The system is shutting down now.<br /> DO NOT POWER OFF THE DEVICE!<br /> It " +"might be necessary to renew the address of your computer to reach the device " +"again, depending on your settings." +msgstr "" + +msgid "" +"WARNING: An alternative partition might have its own settings and completely " +"different firmware.<br /><br /> As your network configuration and WiFi SSID/" +"password on alternative partition might be different, you might have to " +"adjust your computer settings to be able to access your device once it " +"reboots.<br /><br /> Please also be aware that alternative partition " +"firmware might not provide an easy way to switch active partition and boot " +"back to the currently active partition.<br /><br /> Click \"Proceed\" below " +"to reboot device to an alternative partition." +msgstr "" + +msgid "" +"WARNING: Power off might result in a reboot on a device which doesn't " +"support power off.<br /><br /> Click \"Proceed\" below to power off your " +"device." +msgstr "" + +msgid "Warning: There are unsaved changes that will get lost on reboot!" +msgstr "" + +msgid "Warning: This system does not have two partitions!" +msgstr "" + +msgid "Warning: This system does not support powering off!" +msgstr "" diff --git a/applications/luci-app-aria2/po/sv/aria2.po b/applications/luci-app-aria2/po/sv/aria2.po new file mode 100644 index 0000000000..a7f41f250d --- /dev/null +++ b/applications/luci-app-aria2/po/sv/aria2.po @@ -0,0 +1,208 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "\"Falloc\" is not available in all cases." +msgstr "" + +msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled" +msgstr "" + +msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled" +msgstr "" + +msgid "Additional Bt tracker enabled" +msgstr "" + +msgid "Aria2" +msgstr "Aria2" + +msgid "Aria2 Settings" +msgstr "Inställningar för Aria2" + +msgid "Aria2 Status" +msgstr "Status för Aria2" + +msgid "" +"Aria2 is a multi-protocol & multi-source download utility, here you can " +"configure the settings." +msgstr "Aria2 är ett verktyg för multiprotokoll & multi-käll" + +msgid "Autosave session interval" +msgstr "" + +msgid "BitTorrent Settings" +msgstr "Inställningar för BitTorrent" + +msgid "BitTorrent listen port" +msgstr "Lyssningsport för BitTorrent" + +msgid "Collecting data..." +msgstr "Samlar in data..." + +msgid "Config file directory" +msgstr "Ställ in fil-mapp" + +msgid "Debug" +msgstr "Avlusa" + +msgid "Default download directory" +msgstr "Standard nerladdningsmapp" + +msgid "Disk cache" +msgstr "Disk-cache" + +msgid "Enable log" +msgstr "Aktivera logg" + +msgid "Enabled" +msgstr "Aktiverad" + +msgid "Error" +msgstr "Fel" + +msgid "Extra Settings" +msgstr "Extra inställningar" + +msgid "Falloc" +msgstr "Falloc" + +msgid "Files and Locations" +msgstr "Filer och Platser" + +msgid "Follow torrent" +msgstr "Följ torrenten" + +msgid "General Settings" +msgstr "Generella inställningar" + +msgid "Generate Randomly" +msgstr "Generera slumpmässigt" + +msgid "Info" +msgstr "Info" + +msgid "List of additional Bt tracker" +msgstr "" + +msgid "List of extra settings" +msgstr "" + +msgid "Log file is in the config file dir." +msgstr "Logg-filen är i konfigurationsfilens mapp." + +msgid "Log level" +msgstr "Loggningsnivå" + +msgid "Max concurrent downloads" +msgstr "Maximalt sammanhängande nerladdningar" + +msgid "Max connection per server" +msgstr "Max antalet anslutningar per server" + +msgid "Max number of peers per torrent" +msgstr "Maximalt antalet jämlikar per torrent" + +msgid "Max number of split" +msgstr "" + +msgid "Min split size" +msgstr "" + +msgid "No Authentication" +msgstr "Ingen autentisering" + +msgid "Notice" +msgstr "Avisering" + +msgid "Off" +msgstr "Av" + +msgid "Open WebUI-Aria2" +msgstr "" + +msgid "Open YAAW" +msgstr "Öppna YAAW" + +msgid "Overall download limit" +msgstr "" + +msgid "Overall speed limit enabled" +msgstr "" + +msgid "Overall upload limit" +msgstr "" + +msgid "Per task download limit" +msgstr "" + +msgid "Per task speed limit enabled" +msgstr "" + +msgid "Per task upload limit" +msgstr "" + +msgid "Prealloc" +msgstr "Prealloc" + +msgid "Preallocation" +msgstr "" + +msgid "Prefix of peer ID" +msgstr "" + +msgid "RPC Token" +msgstr "" + +msgid "RPC authentication method" +msgstr "" + +msgid "RPC password" +msgstr "RPC-lösenord" + +msgid "RPC port" +msgstr "RPC-port" + +msgid "RPC username" +msgstr "RPC-användarnamn" + +msgid "Run daemon as user" +msgstr "Kör daemonen som användare" + +msgid "Sec" +msgstr "Sek" + +msgid "Task Settings" +msgstr "" + +msgid "The Aria2 service is not running." +msgstr "Aria2-tjänsten körs inte." + +msgid "The Aria2 service is running." +msgstr "Aria2-tjänsten körs." + +msgid "Token" +msgstr "" + +msgid "Trunc" +msgstr "" + +msgid "Use WebSocket" +msgstr "Använd WebSocket" + +msgid "User agent value" +msgstr "Använd agent-värde" + +msgid "Username & Password" +msgstr "Användarnamn & Lösenord" + +msgid "View Json-RPC URL" +msgstr "" + +msgid "Warn" +msgstr "Varna" + +msgid "in bytes, You can append K or M." +msgstr "" + +msgid "in bytes/sec, You can append K or M." +msgstr "" diff --git a/applications/luci-app-clamav/po/sv/clamav.po b/applications/luci-app-clamav/po/sv/clamav.po new file mode 100644 index 0000000000..589d5f9aa3 --- /dev/null +++ b/applications/luci-app-clamav/po/sv/clamav.po @@ -0,0 +1,119 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "10" +msgstr "10" + +msgid "1024" +msgstr "1024" + +msgid "15" +msgstr "15" + +msgid "150M" +msgstr "150M" + +msgid "1M" +msgstr "1M" + +msgid "20" +msgstr "20" + +msgid "2048" +msgstr "2048" + +msgid "2M" +msgstr "2M" + +msgid "50M" +msgstr "50M" + +msgid "512K" +msgstr "512K" + +msgid "600" +msgstr "600" + +msgid "Block encrypted archives" +msgstr "Blockera krypterade arkiv" + +msgid "ClamAV" +msgstr "ClamAV" + +msgid "Database check every N sec" +msgstr "" + +msgid "Detect broken executables" +msgstr "" + +msgid "Detect possibly unwanted apps" +msgstr "Upptäck möjliga oönskade appar" + +msgid "Enable verbose logging" +msgstr "Aktivera utförlig loggning" + +msgid "Follow directory symlinks" +msgstr "" + +msgid "Follow file symlinks" +msgstr "" + +msgid "Log" +msgstr "Logg" + +msgid "Log additional infection info" +msgstr "" + +msgid "Log time with each message" +msgstr "" + +msgid "Max directory scan depth" +msgstr "" + +msgid "Max number of threads" +msgstr "Maximalt antalet trådar" + +msgid "Max size of log file" +msgstr "" + +msgid "Max size of scanned file" +msgstr "" + +msgid "No" +msgstr "Nej" + +msgid "Port range, highest port" +msgstr "" + +msgid "Port range, lowest port" +msgstr "" + +msgid "Scan ELF files" +msgstr "Sök igenom ELF-filer" + +msgid "Scan MS Office and .msi files" +msgstr "Sök igen MS Office och .msi-filer" + +msgid "Scan RFC1341 messages split over many emails" +msgstr "Sök igen RFC1341-meddelanden uppdelade över många e-postmeddelanden" + +msgid "Scan archives" +msgstr "Sök igenom arkiven" + +msgid "Scan emails" +msgstr "Sök igenom e-postmeddelanden" + +msgid "Scan pdf files" +msgstr "Sök igenom pdf-filer" + +msgid "Scan portable executables" +msgstr "" + +msgid "Scan swf files" +msgstr "Sök igenom swf-filer" + +msgid "Settings" +msgstr "Inställningar" + +msgid "Yes" +msgstr "Ja" diff --git a/applications/luci-app-commands/Makefile b/applications/luci-app-commands/Makefile index dc5d0ca849..f41d6e2d42 100644 --- a/applications/luci-app-commands/Makefile +++ b/applications/luci-app-commands/Makefile @@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI Shell Command Module LUCI_DEPENDS:= +PKG_LICENSE:=Apache-2.0 + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-commands/po/sv/commands.po b/applications/luci-app-commands/po/sv/commands.po index 5a4c255e4a..8cb1923e29 100644 --- a/applications/luci-app-commands/po/sv/commands.po +++ b/applications/luci-app-commands/po/sv/commands.po @@ -10,98 +10,102 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "A short textual description of the configured command" -msgstr "" +msgstr "En kort textuell beskrivning av det inställda kommandot" msgid "" "Allow executing the command and downloading its output without prior " "authentication" msgstr "" +"Tillåt att kommandot kan köras och ladda ner dess utmatning utan föregående " +"autentisering" msgid "Allow the user to provide additional command line arguments" -msgstr "" +msgstr "Tillåt användaren att tillge extra kommandoradsargument" msgid "Arguments:" -msgstr "" +msgstr "Argument:" msgid "Binary data not displayed, download instead." -msgstr "" +msgstr "Binärdatan visades inte, ladda ner istället." msgid "Code:" -msgstr "" +msgstr "Kod:" msgid "Collecting data..." -msgstr "" +msgstr "Samlar in data..." msgid "Command" -msgstr "" +msgstr "Kommando" msgid "Command executed successfully." -msgstr "" +msgstr "Kommandot utfördes korrekt" msgid "Command exited with status code" -msgstr "" +msgstr "Kommandot avslutade med statuskod" msgid "Command failed" -msgstr "" +msgstr "Kommandot misslyckades" msgid "Command line to execute" -msgstr "" +msgstr "Kommandorad att exekvera" msgid "Command successful" -msgstr "" +msgstr "Kommandot lyckades" msgid "Command:" -msgstr "" +msgstr "Kommando:" msgid "Configure" -msgstr "" +msgstr "Ställ in" msgid "Custom Commands" -msgstr "" +msgstr "Anpassade kommandon" msgid "Custom arguments" -msgstr "" +msgstr "Anpassade argument" msgid "Dashboard" -msgstr "" +msgstr "Instrumentpanel" msgid "Description" -msgstr "" +msgstr "Beskrivning" msgid "Download" -msgstr "" +msgstr "Ladda ner" msgid "Download execution result" -msgstr "" +msgstr "Resultatet av nerladdningen" msgid "Failed to execute command!" -msgstr "" +msgstr "Misslyckade med att köra kommando!" msgid "Link" -msgstr "" +msgstr "Länk" msgid "Loading" -msgstr "" +msgstr "Laddar" msgid "Or display result" -msgstr "" +msgstr "Eller visa resultat" msgid "Public access" -msgstr "" +msgstr "Publik tillgång" msgid "Run" -msgstr "" +msgstr "Kör" msgid "Standard Error" -msgstr "" +msgstr "Standardfel" msgid "Standard Output" -msgstr "" +msgstr "Standardinmatning" msgid "" "This page allows you to configure custom shell commands which can be easily " "invoked from the web interface." msgstr "" +"Den här sidan tillåter dig att ställa in anpassade skalkommandon som lättast kan " +"åberopas från webbgränssnittet." msgid "Waiting for command to complete..." -msgstr "" +msgstr "Väntar på att kommandot ska slutföras..." diff --git a/applications/luci-app-ddns/po/sv/ddns.po b/applications/luci-app-ddns/po/sv/ddns.po new file mode 100644 index 0000000000..780a2f9c8f --- /dev/null +++ b/applications/luci-app-ddns/po/sv/ddns.po @@ -0,0 +1,718 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "&" +msgstr "&" + +msgid "-- custom --" +msgstr "-- anpassad --" + +msgid "-- default --" +msgstr "-- standard --" + +msgid "Advanced Settings" +msgstr "Avancerade inställningar" + +msgid "Allow non-public IP's" +msgstr "Tillåt icke-publika IP-adresser" + +msgid "Applying changes" +msgstr "Verkställer ändringar" + +msgid "Basic Settings" +msgstr "Standardinställningar" + +msgid "" +"Below a list of configuration tips for your system to run Dynamic DNS " +"updates without limitations" +msgstr "" + +msgid "" +"Below is a list of configured DDNS configurations and their current state." +msgstr "" + +msgid "Bind Network" +msgstr "" + +msgid "Binding to a specific network not supported" +msgstr "" + +msgid "" +"BusyBox's nslookup and Wget do not support to specify the IP version to use " +"for communication with DDNS Provider!" +msgstr "" + +msgid "" +"BusyBox's nslookup and hostip do not support to specify to use TCP instead " +"of default UDP when requesting DNS server!" +msgstr "" + +msgid "" +"BusyBox's nslookup in the current compiled version does not handle given DNS " +"Servers correctly!" +msgstr "" + +msgid "Casual users should not change this setting" +msgstr "" + +msgid "Change provider" +msgstr "Byt operatör" + +msgid "Check Interval" +msgstr "Kontroll-intervall" + +msgid "Collecting data..." +msgstr "Samlar in data..." + +msgid "Config error" +msgstr "Konfigurationsfel" + +msgid "Configuration" +msgstr "Konfiguration" + +msgid "" +"Configure here the details for all Dynamic DNS services including this LuCI " +"application." +msgstr "" + +msgid "Configure here the details for selected Dynamic DNS service." +msgstr "" + +msgid "Current setting" +msgstr "Nuvarande inställning" + +msgid "" +"Currently DDNS updates are not started at boot or on interface events.<br /" +">This is the default if you run DDNS scripts by yourself (i.e. via cron with " +"force_interval set to '0')" +msgstr "" + +msgid "" +"Currently DDNS updates are not started at boot or on interface events.<br /" +">You can start/stop each configuration here. It will run until next reboot." +msgstr "" + +msgid "Custom update script to be used for updating your DDNS Provider." +msgstr "" + +msgid "Custom update-URL" +msgstr "Anpassad webbadress för uppdatering" + +msgid "Custom update-script" +msgstr "Anpassat uppdateringsskript" + +msgid "DDNS Autostart disabled" +msgstr "" + +msgid "DDNS Client Configuration" +msgstr "" + +msgid "DDNS Client Documentation" +msgstr "" + +msgid "DDNS Service provider" +msgstr "" + +msgid "DNS requests via TCP not supported" +msgstr "" + +msgid "DNS-Server" +msgstr "DNS-server" + +msgid "Date format" +msgstr "Datumformat" + +msgid "Defines the Web page to read systems IPv4-Address from" +msgstr "" + +msgid "Defines the Web page to read systems IPv6-Address from" +msgstr "" + +msgid "Defines the interface to read systems IP-Address from" +msgstr "" + +msgid "Defines the network to read systems IPv4-Address from" +msgstr "" + +msgid "Defines the network to read systems IPv6-Address from" +msgstr "" + +msgid "" +"Defines the source to read systems IPv4-Address from, that will be send to " +"the DDNS provider" +msgstr "" + +msgid "" +"Defines the source to read systems IPv6-Address from, that will be send to " +"the DDNS provider" +msgstr "" + +msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" +msgstr "" + +msgid "Details for" +msgstr "Detaljer för" + +msgid "Directory contains Log files for each running section" +msgstr "" + +msgid "" +"Directory contains PID and other status information for each running section" +msgstr "" + +msgid "Disabled" +msgstr "Inaktivera" + +msgid "Domain" +msgstr "Domän" + +msgid "Dynamic DNS" +msgstr "Dynamisk DNS" + +msgid "" +"Dynamic DNS allows that your router can be reached with a fixed hostname " +"while having a dynamically changing IP address." +msgstr "" + +msgid "Enable secure communication with DDNS provider" +msgstr "" + +msgid "Enabled" +msgstr "Aktiverad" + +msgid "Error" +msgstr "Fel" + +msgid "Error Retry Counter" +msgstr "" + +msgid "Error Retry Interval" +msgstr "" + +msgid "Event Network" +msgstr "" + +msgid "File" +msgstr "Fil" + +msgid "File not found" +msgstr "Filen hittades inte" + +msgid "File not found or empty" +msgstr "Filen hittades inte eller tom" + +msgid "" +"Follow this link<br />You will find more hints to optimize your system to " +"run DDNS scripts with all options" +msgstr "" + +msgid "For detailed information about parameter settings look here." +msgstr "" + +msgid "For supported codes look here" +msgstr "" + +msgid "Force IP Version" +msgstr "Tvinga IP-version" + +msgid "Force IP Version not supported" +msgstr "Påtvingad IP-version stöds inte" + +msgid "Force Interval" +msgstr "" + +msgid "Force TCP on DNS" +msgstr "" + +msgid "Forced IP Version don't matched" +msgstr "" + +msgid "Format" +msgstr "Format" + +msgid "Format: IP or FQDN" +msgstr "Format: IP eller FQDN" + +msgid "" +"GNU Wget will use the IP of given network, cURL will use the physical " +"interface." +msgstr "" +"GNU Wget kommer att använda IP-adressen för det angivna nätverket, cURL kommer att använda det fysiska " +"gränssnittet." + +msgid "Global Settings" +msgstr "Globala inställningar" + +msgid "HTTPS not supported" +msgstr "HTTPS stöds inte" + +msgid "Hints" +msgstr "Ledtrådar" + +msgid "Hostname/FQDN to validate, if IP update happen or necessary" +msgstr "" + +msgid "IP address source" +msgstr "IP-adressens källa" + +msgid "IP address version" +msgstr "Version för IP-adress" + +msgid "IPv4-Address" +msgstr "IPv4-adress" + +msgid "IPv6 address must be given in square brackets" +msgstr "" + +msgid "" +"IPv6 is currently not (fully) supported by this system<br />Please follow " +"the instructions on OpenWrt's homepage to enable IPv6 support<br />or update " +"your system to the latest OpenWrt Release" +msgstr "" + +msgid "IPv6 not supported" +msgstr "IPv6 stöds inte" + +msgid "IPv6-Address" +msgstr "IPv6-adress" + +msgid "If both cURL and GNU Wget are installed, Wget is used by default." +msgstr "Om både cURL och GNU Wget är installerade så används Wget som standard." + +msgid "" +"If this service section is disabled it could not be started.<br />Neither " +"from LuCI interface nor from console" +msgstr "" + +msgid "If using secure communication you should verify server certificates!" +msgstr "" + +msgid "" +"If you want to send updates for IPv4 and IPv6 you need to define two " +"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" +msgstr "" + +msgid "" +"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." +msgstr "" + +msgid "Info" +msgstr "Info" + +msgid "" +"Install 'ca-certificates' package or needed certificates by hand into /etc/" +"ssl/certs default directory" +msgstr "" + +msgid "Interface" +msgstr "Gränssnitt" + +msgid "" +"Interval to check for changed IP<br />Values below 5 minutes == 300 seconds " +"are not supported" +msgstr "" + +msgid "" +"Interval to force updates send to DDNS Provider<br />Setting this parameter " +"to 0 will force the script to only run once<br />Values lower 'Check " +"Interval' except '0' are not supported" +msgstr "" + +msgid "It is NOT recommended for casual users to change settings on this page." +msgstr "Det är INTE rekommenderat för vanliga användare att ändra inställningar på den här sidan." + +msgid "Last Update" +msgstr "Senaste uppdateringen" + +msgid "Loading" +msgstr "Laddar" + +msgid "Log File Viewer" +msgstr "Visare för loggfil" + +msgid "Log directory" +msgstr "" + +msgid "Log length" +msgstr "Loggens längd" + +msgid "Log to file" +msgstr "Logga till fil" + +msgid "Log to syslog" +msgstr "Logga till syslog" + +msgid "Lookup Hostname" +msgstr "Kolla upp värdnamn" + +msgid "NOT installed" +msgstr "INTE installerad" + +msgid "" +"Neither GNU Wget with SSL nor cURL installed to select a network to use for " +"communication." +msgstr "" + +msgid "" +"Neither GNU Wget with SSL nor cURL installed to support secure updates via " +"HTTPS protocol." +msgstr "" + +msgid "Network" +msgstr "Nätverk" + +msgid "Network on which the ddns-updater scripts will be started" +msgstr "" + +msgid "Never" +msgstr "Aldrig" + +msgid "Next Update" +msgstr "Nästa uppdatering" + +msgid "No certificates found" +msgstr "Inga ceritifikat hittades" + +msgid "No data" +msgstr "Ingen data" + +msgid "No logging" +msgstr "Ingen loggning" + +msgid "Non-public and by default blocked IP's" +msgstr "" + +msgid "Notice" +msgstr "" + +msgid "Number of last lines stored in log files" +msgstr "" + +msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." +msgstr "" + +msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." +msgstr "" + +msgid "OPTIONAL: Network to use for communication" +msgstr "" + +msgid "OPTIONAL: Proxy-Server for detection and updates." +msgstr "" + +msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." +msgstr "" + +msgid "On Error the script will retry the failed action after given time" +msgstr "" + +msgid "On Error the script will stop execution after given number of retrys" +msgstr "" + +msgid "OpenWrt Wiki" +msgstr "Wiki för OpenWrt" + +msgid "Optional Encoded Parameter" +msgstr "" + +msgid "Optional Parameter" +msgstr "Valfri parameter" + +msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" +msgstr "" + +msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" +msgstr "" + +msgid "Overview" +msgstr "" + +msgid "PROXY-Server" +msgstr "PROXY-server" + +msgid "PROXY-Server not supported" +msgstr "PROXY-servern stöds inte" + +msgid "Password" +msgstr "Lösenord" + +msgid "Path to CA-Certificate" +msgstr "" + +msgid "Please [Save & Apply] your changes first" +msgstr "Vänligen [Spara & Verkställ] dina ändringar först" + +msgid "Please press [Read] button" +msgstr "Vänligen tryck på [Läs]-knappen" + +msgid "Please update to the current version!" +msgstr "Vänligen uppdatera till den senaste versionen!" + +msgid "Process ID" +msgstr "" + +msgid "Read / Reread log file" +msgstr "Läs / Läs om loggfilen" + +msgid "Really change DDNS provider?" +msgstr "" + +msgid "Registered IP" +msgstr "Registrerad IP" + +msgid "Replaces [DOMAIN] in Update-URL" +msgstr "" + +msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" +msgstr "" + +msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" +msgstr "" + +msgid "Run once" +msgstr "Kör en gång" + +msgid "Script" +msgstr "Skript" + +msgid "Show more" +msgstr "Visa mer" + +msgid "Software update required" +msgstr "" + +msgid "Specifying a DNS-Server is not supported" +msgstr "" + +msgid "Start" +msgstr "Starta" + +msgid "Start / Stop" +msgstr "Starta / Stoppa" + +msgid "Status directory" +msgstr "" + +msgid "Stopped" +msgstr "Stoppad" + +msgid "" +"The currently installed 'ddns-scripts' package did not support all available " +"settings." +msgstr "" + +msgid "The default setting of '0' will retry infinite." +msgstr "" + +msgid "There is no service configured." +msgstr "Det finns ingen tjänst inställd." + +msgid "Timer Settings" +msgstr "" + +msgid "To change global settings click here" +msgstr "Klicka här för att ändra på globala inställningar" + +msgid "To use cURL activate this option." +msgstr "" + +msgid "URL" +msgstr "Webbadress" + +msgid "URL to detect" +msgstr "Webbadress att upptäcka" + +msgid "Unknown error" +msgstr "Okänt fel" + +msgid "" +"Update URL to be used for updating your DDNS Provider.<br />Follow " +"instructions you will find on their WEB page." +msgstr "" + +msgid "Update error" +msgstr "Uppdateringsfel" + +msgid "Use HTTP Secure" +msgstr "Använd Säker HTTP" + +msgid "Use cURL" +msgstr "Använd cURL" + +msgid "User defined script to read systems IP-Address" +msgstr "" + +msgid "Username" +msgstr "Användarnamn" + +msgid "Using specific DNS Server not supported" +msgstr "" + +msgid "Verify" +msgstr "Verkställ" + +msgid "Version" +msgstr "Version" + +msgid "Version Information" +msgstr "Information om versionen" + +msgid "Waiting for changes to be applied..." +msgstr "Väntar på att ändringarna ska bli verkställda..." + +msgid "Warning" +msgstr "Varning" + +msgid "" +"Writes detailed messages to log file. File will be truncated automatically." +msgstr "" + +msgid "" +"Writes log messages to syslog. Critical Errors will always be written to " +"syslog." +msgstr "" + +msgid "" +"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' " +"package, if you need to specify a DNS server to detect your registered IP." +msgstr "" + +msgid "" +"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " +"requests." +msgstr "" + +msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." +msgstr "" + +msgid "" +"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" +"*ssl' package." +msgstr "" + +msgid "You should install 'wget' or 'curl' package." +msgstr "" + +msgid "" +"You should install 'wget' or 'uclient-fetch' package or replace libcurl." +msgstr "" + +msgid "cURL is installed, but libcurl was compiled without proxy support." +msgstr "" + +msgid "cURL without Proxy Support" +msgstr "cURL utan Proxy-stöd" + +msgid "can not detect local IP. Please select a different Source combination" +msgstr "kan inte upptäcka lokal IP-adress. Vänligen välj en annorlunda Käll-kombination" + +msgid "can not resolve host:" +msgstr "kan inte avgöra värd:" + +msgid "config error" +msgstr "konfigurationsfel" + +msgid "days" +msgstr "dagar" + +msgid "directory or path/file" +msgstr "" + +msgid "either url or script could be set" +msgstr "kunde varken fastställa webbadress eller skript" + +msgid "enable here" +msgstr "aktivera här" + +msgid "file or directory not found or not 'IGNORE'" +msgstr "" + +msgid "help" +msgstr "hjälp" + +msgid "hours" +msgstr "timmar" + +msgid "installed" +msgstr "installerad" + +msgid "invalid FQDN / required - Sample" +msgstr "ogiltig FQDN / behövs - Urval" + +msgid "minimum value '0'" +msgstr "minimalt värde '0'" + +msgid "minimum value '1'" +msgstr "minimalt värde '1'" + +msgid "minimum value 5 minutes == 300 seconds" +msgstr "minimalt värde 5 minuter == 300 sekunder" + +msgid "minutes" +msgstr "minutrar" + +msgid "missing / required" +msgstr "saknas / behövs" + +msgid "must be greater or equal 'Check Interval'" +msgstr "" + +msgid "must start with 'http://'" +msgstr "måste börja med 'http://" + +msgid "nc (netcat) can not connect" +msgstr "nc (netcat) kan inte ansluta" + +msgid "never" +msgstr "aldrig" + +msgid "no data" +msgstr "ingen data" + +msgid "not found or not executable - Sample: '/path/to/script.sh'" +msgstr "" + +msgid "nslookup can not resolve host" +msgstr "" + +msgid "or" +msgstr "eller" + +msgid "or higher" +msgstr "eller större" + +msgid "please disable" +msgstr "vänligen inaktivera" + +msgid "please remove entry" +msgstr "vänligen ta bort inmatningen" + +msgid "please select 'IPv4' address version" +msgstr "vänligen välj version för 'IPv4'-adress" + +msgid "please select 'IPv4' address version in" +msgstr "" + +msgid "please set to 'default'" +msgstr "" + +msgid "proxy port missing" +msgstr "" + +msgid "required" +msgstr "behövs" + +msgid "seconds" +msgstr "sekunder" + +msgid "to run HTTPS without verification of server certificates (insecure)" +msgstr "för att köra HTTPS utan verifiering av server-certifikaten (osäkert)" + +msgid "unknown error" +msgstr "okänt fel" + +msgid "unspecific error" +msgstr "ospecifierat fel" + +msgid "use hostname, FQDN, IPv4- or IPv6-Address" +msgstr "använd värdnamn, FQDN, IPv4- eller IPv6-adress" diff --git a/applications/luci-app-diag-core/po/sv/diag_core.po b/applications/luci-app-diag-core/po/sv/diag_core.po index dd0a81a644..b5679655d0 100644 --- a/applications/luci-app-diag-core/po/sv/diag_core.po +++ b/applications/luci-app-diag-core/po/sv/diag_core.po @@ -10,10 +10,10 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "Configure Diagnostics" -msgstr "" +msgstr "Ställ in diagnostik" msgid "Diagnostics" -msgstr "" +msgstr "Diagnostik" msgid "" "The diagnostics available under this menu depend on what modules you have " @@ -29,3 +29,5 @@ msgid "" "With this menu you can configure network diagnostics, such as network device " "scans and ping tests." msgstr "" +"Med den här menyn så kan du ställa in nätverksdiagnostik så som igenomsökningar och " +"ping-tester för nätverksenheten." diff --git a/applications/luci-app-firewall/Makefile b/applications/luci-app-firewall/Makefile index 21804d7c2d..4fa85f2d5b 100644 --- a/applications/luci-app-firewall/Makefile +++ b/applications/luci-app-firewall/Makefile @@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Firewall and Portforwarding application LUCI_DEPENDS:=+firewall +PKG_LICENSE:=Apache-2.0 + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua b/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua index 500d1bf32f..7553504572 100644 --- a/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua +++ b/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua @@ -21,7 +21,7 @@ nw.init(m.uci) local zone = fw:get_zone(arg[1]) if not zone then - luci.http.redirect(dsp.build_url("admin/network/firewall/zones")) + luci.http.redirect(ds.build_url("admin/network/firewall/zones")) return else m.title = "%s - %s" %{ diff --git a/applications/luci-app-firewall/po/sv/firewall.po b/applications/luci-app-firewall/po/sv/firewall.po index 2e169fb927..777c81787d 100644 --- a/applications/luci-app-firewall/po/sv/firewall.po +++ b/applications/luci-app-firewall/po/sv/firewall.po @@ -10,43 +10,43 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "%s in %s" -msgstr "" +msgstr "%s i %s" msgid "%s%s with %s" -msgstr "" +msgstr "%s%s med %s" msgid "%s, %s in %s" -msgstr "" +msgstr "%2, %s i %s" msgid "(Unnamed Entry)" -msgstr "" +msgstr "(Namnlös post)" msgid "(Unnamed Rule)" -msgstr "" +msgstr "(Namnlös regel)" msgid "(Unnamed SNAT)" -msgstr "" +msgstr "(Namnlös SNAT)" msgid "<var>%d</var> pkts. per <var>%s</var>" -msgstr "" +msgstr "<var>%d</var> pkt. per <var>%s</var>" msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts." -msgstr "" +msgstr "<var>%d</var> pkt. per <var>%s</var>, brustna <var>%d</var> pkt." msgid "<var>%s</var> and limit to %s" -msgstr "" +msgstr "<var>%s</var> och gränsen till %s" msgid "Action" -msgstr "" +msgstr "Åtgärd" msgid "Add" -msgstr "" +msgstr "Lägg till" msgid "Add and edit..." -msgstr "" +msgstr "Lägg till och redigera..." msgid "Advanced Settings" -msgstr "" +msgstr "Avancerade inställningar" msgid "Allow forward from <em>source zones</em>:" msgstr "" @@ -55,13 +55,13 @@ msgid "Allow forward to <em>destination zones</em>:" msgstr "" msgid "Any" -msgstr "" +msgstr "Alla" msgid "Covered networks" -msgstr "" +msgstr "Nätverk som omfattas" msgid "Custom Rules" -msgstr "" +msgstr "Anpassade regler" msgid "" "Custom rules allow you to execute arbritary iptables commands which are not " @@ -73,22 +73,22 @@ msgid "Destination IP address" msgstr "" msgid "Destination address" -msgstr "" +msgstr "Destinationsadress" msgid "Destination port" -msgstr "" +msgstr "Destinationsport" msgid "Destination zone" msgstr "" msgid "Do not rewrite" -msgstr "" +msgstr "Skriv inte om igen" msgid "Drop invalid packets" -msgstr "" +msgstr "Släpp ogiltiga paket" msgid "Enable" -msgstr "" +msgstr "Aktivera" msgid "Enable NAT Loopback" msgstr "" @@ -100,22 +100,22 @@ msgid "Enable logging on this zone" msgstr "" msgid "External IP address" -msgstr "" +msgstr "Extern IP-adress" msgid "External port" -msgstr "" +msgstr "Extern port" msgid "External zone" -msgstr "" +msgstr "Extern zon" msgid "Extra arguments" -msgstr "" +msgstr "Extra argument" msgid "Firewall" -msgstr "" +msgstr "Brandvägg" msgid "Firewall - Custom Rules" -msgstr "" +msgstr "Brandvägg - Anpassade regler" msgid "Firewall - Port Forwards" msgstr "" @@ -130,16 +130,16 @@ msgid "Force connection tracking" msgstr "" msgid "Forward" -msgstr "" +msgstr "Vidarebefordra" msgid "Forward to" -msgstr "" +msgstr "Vidarebefordra till" msgid "Friday" -msgstr "" +msgstr "Fredag" msgid "From %s in %s" -msgstr "" +msgstr "Från %s i %s" msgid "From %s in %s with source %s" msgstr "" @@ -148,40 +148,40 @@ msgid "From %s in %s with source %s and %s" msgstr "" msgid "General Settings" -msgstr "" +msgstr "Generella inställningar" msgid "IPv4" -msgstr "" +msgstr "IPv4" msgid "IPv4 and IPv6" -msgstr "" +msgstr "IPv4 och IPv6" msgid "IPv4 only" -msgstr "" +msgstr "Endast IPv4" msgid "IPv6" -msgstr "" +msgstr "IPv6" msgid "IPv6 only" -msgstr "" +msgstr "Endast IPv6" msgid "Input" -msgstr "" +msgstr "Inmatning" msgid "Inter-Zone Forwarding" msgstr "" msgid "Internal IP address" -msgstr "" +msgstr "Intern IP-adress" msgid "Internal port" -msgstr "" +msgstr "Intern port" msgid "Internal zone" -msgstr "" +msgstr "Intern zon" msgid "Limit log messages" -msgstr "" +msgstr "Begränsa loggmeddelanden" msgid "MSS clamping" msgstr "" @@ -190,7 +190,7 @@ msgid "Masquerading" msgstr "" msgid "Match" -msgstr "" +msgstr "Matcha" msgid "Match ICMP type" msgstr "" @@ -209,22 +209,22 @@ msgid "" msgstr "" msgid "Monday" -msgstr "" +msgstr "Måndag" msgid "Month Days" msgstr "" msgid "Name" -msgstr "" +msgstr "Namn" msgid "New SNAT rule" -msgstr "" +msgstr "Ny SNAT-regel" msgid "New forward rule" -msgstr "" +msgstr "Ny vidarebefordningsregel" msgid "New input rule" -msgstr "" +msgstr "Ny inmatningsregel" msgid "New port forward" msgstr "" @@ -247,13 +247,13 @@ msgid "" msgstr "" msgid "Open ports on router" -msgstr "" +msgstr "Öppna portar i router" msgid "Other..." -msgstr "" +msgstr "Andra..." msgid "Output" -msgstr "" +msgstr "Utmatning" msgid "Passes additional arguments to iptables. Use with care!" msgstr "" @@ -267,7 +267,7 @@ msgid "" msgstr "" msgid "Protocol" -msgstr "" +msgstr "Protokoll" msgid "" "Redirect matched incoming traffic to the given port on the internal host" @@ -277,7 +277,7 @@ msgid "Redirect matched incoming traffic to the specified internal host" msgstr "" msgid "Restart Firewall" -msgstr "" +msgstr "Starta om brandvägg" msgid "Restrict Masquerading to given destination subnets" msgstr "" @@ -286,7 +286,7 @@ msgid "Restrict Masquerading to given source subnets" msgstr "" msgid "Restrict to address family" -msgstr "" +msgstr "Begränsa till adressfamilj" msgid "Rewrite matched traffic to the given address." msgstr "" @@ -297,25 +297,25 @@ msgid "" msgstr "" msgid "Rewrite to source %s" -msgstr "" +msgstr "Skriv om igen till källan %s" msgid "Rewrite to source %s, %s" msgstr "" msgid "SNAT IP address" -msgstr "" +msgstr "IP-adress för SNAT" msgid "SNAT port" -msgstr "" +msgstr "SNAT-port" msgid "Saturday" -msgstr "" +msgstr "Lördag" msgid "Source IP address" -msgstr "" +msgstr "IP-adress för källa" msgid "Source MAC address" -msgstr "" +msgstr "MAC-adress för källa" msgid "Source NAT" msgstr "" @@ -336,19 +336,19 @@ msgid "Source zone" msgstr "" msgid "Start Date (yyyy-mm-dd)" -msgstr "" +msgstr "Startdatum (åååå-mm-dd)" msgid "Start Time (hh:mm:ss)" -msgstr "" +msgstr "Starttid (tt:mm:ss)" msgid "Stop Date (yyyy-mm-dd)" -msgstr "" +msgstr "Stopptid (åååå-mm-dd)" msgid "Stop Time (hh:mm:ss)" -msgstr "" +msgstr "Stopptid (tt:mm:ss)" msgid "Sunday" -msgstr "" +msgstr "Söndag" msgid "" "The firewall creates zones over your network interfaces to control network " @@ -383,22 +383,22 @@ msgid "" msgstr "" msgid "Thursday" -msgstr "" +msgstr "Torsdag" msgid "Time in UTC" -msgstr "" +msgstr "Tid enligt UTC" msgid "To %s at %s on <var>this device</var>" -msgstr "" +msgstr "Till %s vid %s på <var>den här enheten</var>" msgid "To %s in %s" -msgstr "" +msgstr "Till %s i %s" msgid "To %s on <var>this device</var>" -msgstr "" +msgstr "Till %s på <var>den här enheten</var>" msgid "To %s, %s in %s" -msgstr "" +msgstr "Till %s, %s i %s" msgid "To source IP" msgstr "" @@ -407,7 +407,7 @@ msgid "To source port" msgstr "" msgid "Traffic Rules" -msgstr "" +msgstr "Trafikregler" msgid "" "Traffic rules define policies for packets traveling between different zones, " @@ -416,19 +416,19 @@ msgid "" msgstr "" msgid "Tuesday" -msgstr "" +msgstr "Tisdag" msgid "Via %s" -msgstr "" +msgstr "Via %s" msgid "Via %s at %s" msgstr "" msgid "Wednesday" -msgstr "" +msgstr "Onsdag" msgid "Week Days" -msgstr "" +msgstr "Veckodagar" msgid "" "You may specify multiple by selecting \"-- custom --\" and then entering " @@ -436,37 +436,37 @@ msgid "" msgstr "" msgid "Zone %q" -msgstr "" +msgstr "Zon %q" msgid "Zone ⇒ Forwardings" msgstr "" msgid "Zones" -msgstr "" +msgstr "Zoner" msgid "accept" -msgstr "" +msgstr "acceptera" msgid "any" -msgstr "" +msgstr "alla" msgid "any host" -msgstr "" +msgstr "alla värdar" msgid "any router IP" msgstr "" msgid "any zone" -msgstr "" +msgstr "alla zoner" msgid "don't track" -msgstr "" +msgstr "spåra inte" msgid "drop" -msgstr "" +msgstr "släpp" msgid "reject" -msgstr "" +msgstr "neka" msgid "traffic" -msgstr "" +msgstr "trafik" diff --git a/applications/luci-app-mwan3/luasrc/controller/mwan3.lua b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua index d3fd150692..ca39c9bf30 100644 --- a/applications/luci-app-mwan3/luasrc/controller/mwan3.lua +++ b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua @@ -3,7 +3,7 @@ module("luci.controller.mwan3", package.seeall) sys = require "luci.sys" ut = require "luci.util" -ip = "/usr/bin/ip -4 " +ip = "ip -4 " function index() if not nixio.fs.access("/etc/config/mwan3") then diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua index 7e863a371f..aeabc63616 100644 --- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua +++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua @@ -111,8 +111,8 @@ mwan_interface = m5:section(TypedSection, "interface", translate("Interfaces"), "Interfaces may not share the same name as configured members, policies or rules")) mwan_interface.addremove = true mwan_interface.dynamic = false - mwan_interface.sectionhead = "Interface" - mwan_interface.sortable = true + mwan_interface.sectionhead = translate("Interface") + mwan_interface.sortable = false mwan_interface.template = "cbi/tblsection" mwan_interface.extedit = dsp.build_url("admin", "network", "mwan", "configuration", "interface", "%s") function mwan_interface.create(self, section) diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua index e7c16fdfdc..2b46376399 100644 --- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua +++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua @@ -107,9 +107,9 @@ family = mwan_interface:option(ListValue, "family", translate("Internet Protocol family:value("ipv4", translate("IPv4")) family:value("ipv6", translate("IPv6")) -track_ip = mwan_interface:option(DynamicList, "track_ip", translate("Tracking IP"), - translate("This IP address will be pinged to dermine if the link is up or down. Leave blank to assume interface is always online")) - track_ip.datatype = "ipaddr" +track_ip = mwan_interface:option(DynamicList, "track_ip", translate("Tracking hostname or IP address"), + translate("This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to assume interface is always online")) + track_ip.datatype = "host" reliability = mwan_interface:option(Value, "reliability", translate("Tracking reliability"), translate("Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up")) diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua index 3bccbd942f..efbe8f7902 100644 --- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua +++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua @@ -13,7 +13,7 @@ mwan_member = m5:section(TypedSection, "member", translate("Members"), "Members may not share the same name as configured interfaces, policies or rules")) mwan_member.addremove = true mwan_member.dynamic = false - mwan_member.sectionhead = "Member" + mwan_member.sectionhead = translate("Member") mwan_member.sortable = true mwan_member.template = "cbi/tblsection" mwan_member.extedit = ds.build_url("admin", "network", "mwan", "configuration", "member", "%s") diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua index 08c3f69de6..6640564d50 100644 --- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua +++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua @@ -42,7 +42,7 @@ mwan_policy = m5:section(TypedSection, "policy", translate("Policies"), "Policies may not share the same name as configured interfaces, members or rules")) mwan_policy.addremove = true mwan_policy.dynamic = false - mwan_policy.sectionhead = "Policy" + mwan_policy.sectionhead = translate("Policy") mwan_policy.sortable = true mwan_policy.template = "cbi/tblsection" mwan_policy.extedit = ds.build_url("admin", "network", "mwan", "configuration", "policy", "%s") @@ -65,7 +65,6 @@ use_member = mwan_policy:option(DummyValue, "use_member", translate("Members ass else return "—" end - end last_resort = mwan_policy:option(DummyValue, "last_resort", translate("Last resort")) @@ -73,11 +72,11 @@ last_resort = mwan_policy:option(DummyValue, "last_resort", translate("Last reso function last_resort.cfgvalue(self, s) local action = self.map:get(s, "last_resort") if action == "blackhole" then - return "blackhole (drop)" + return translate("blackhole (drop)") elseif action == "default" then - return "default (use main routing table)" + return translate("default (use main routing table)") else - return "unreachable (reject)" + return translate("unreachable (reject)") end end diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua index 412f369eb0..0f4c5950a0 100644 --- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua +++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua @@ -47,7 +47,7 @@ mwan_rule = m5:section(TypedSection, "rule", translate("Traffic Rules"), mwan_rule.addremove = true mwan_rule.anonymous = false mwan_rule.dynamic = false - mwan_rule.sectionhead = "Rule" + mwan_rule.sectionhead = translate("Rule") mwan_rule.sortable = true mwan_rule.template = "cbi/tblsection" mwan_rule.extedit = dsp.build_url("admin", "network", "mwan", "configuration", "rule", "%s") @@ -93,10 +93,10 @@ sticky = mwan_rule:option(DummyValue, "sticky", translate("Sticky")) function sticky.cfgvalue(self, s) if self.map:get(s, "sticky") == "1" then stickied = 1 - return "Yes" + return translate("Yes") else stickied = nil - return "No" + return translate("No") end end @@ -133,7 +133,7 @@ errors = mwan_rule:option(DummyValue, "errors", translate("Errors")) if not string.find(error_protocol_list, " " .. s .. " ") then return "" else - return "<span title=\"No protocol specified\"><img src=\"/luci-static/resources/cbi/reset.gif\" alt=\"error\"></img></span>" + return "<span title=\"" .. translate("No protocol specified") .. "\"><img src=\"/luci-static/resources/cbi/reset.gif\" alt=\"error\"></img></span>" end end diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm index 14d404bc7c..e4a14adade 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm @@ -33,14 +33,14 @@ { output.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="padding: 20px; vertical-align: middle;" /> ' + - "Waiting for MWAN to " + task + "..." + String.format("<%:Waiting for MWAN to %s...%>", task) ; } else { output.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="padding: 20px; vertical-align: middle;" /> ' + - "Waiting for diagnostic results..." + "<%:Waiting for diagnostic results...%>" ; } @@ -56,7 +56,7 @@ } else { - output.innerHTML = '<pre id="diag_output_css"><strong>No diagnostic results returned</strong></pre>'; + output.innerHTML = '<pre id="diag_output_css"><strong><%:No diagnostic results returned%></strong></pre>'; } } ); @@ -93,20 +93,6 @@ </div> <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin-left: 30px; - padding-right: 30px; - width: auto; - } - #mwan_diagnostics { - background-color: #FFFFFF; - border: 1px dotted #555555; - padding: 20px; - } - #diag_select { - padding: 12px 20px 20px 20px; - } #mwaniface { float: left; margin: 8px 20px 0px 0px; diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm index 4c2a0dc208..10b4f10558 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm @@ -8,17 +8,7 @@ </ul> <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin: 0px 0px 0px 30px; - padding-right: 30px; - width: auto; - } - .cbi-section-node { - margin-top: 20px; - } .cbi-section { - border: 1px dotted #555555; padding: 20px; } </style> diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm index fba3fa6940..20ae6036fc 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm @@ -8,17 +8,7 @@ </ul> <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin: 0px 0px 0px 30px; - padding-right: 30px; - width: auto; - } - .cbi-section-node { - margin-top: 20px; - } .cbi-section { - border: 1px dotted #555555; padding: 20px; } </style> diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm index cf90112078..bed43107c0 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm @@ -8,17 +8,7 @@ </ul> <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin: 0px 0px 0px 30px; - padding-right: 30px; - width: auto; - } - .cbi-section-node { - margin-top: 20px; - } .cbi-section { - border: 1px dotted #555555; padding: 20px; } </style> diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm index 0a12496899..4174ef4b21 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm @@ -37,7 +37,7 @@ } else { - tshoot.innerHTML = '<strong>Error collecting troubleshooting information</strong>'; + tshoot.innerHTML = '<strong><%:Error collecting troubleshooting information%></strong>'; } } ); @@ -46,22 +46,11 @@ <div id="troubleshoot"> <fieldset class="cbi-section"> <legend><%:Troubleshooting Data%></legend> - <div id="troubleshoot_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div> + <div id="troubleshoot_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /><%:Collecting data...%></div> </fieldset> </div> <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin-left: 30px; - padding-right: 30px; - width: auto; - } - #troubleshoot { - background-color: #FFFFFF; - border: 1px dotted #555555; - padding: 20px; - } #troubleshoot_text { padding: 20px; text-align: left; diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm index 5077674185..bb18d53493 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm @@ -8,17 +8,7 @@ </ul> <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin: 0px 0px 0px 30px; - padding-right: 30px; - width: auto; - } - .cbi-section-node { - margin-top: 20px; - } .cbi-section { - border: 1px dotted #555555; padding: 20px; } </style> diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm b/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm index 99da4875b0..5d91c536eb 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm @@ -1,10 +1,4 @@ <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin-left: 30px; - padding-right: 30px; - width: auto; - } table td { /* cells showing the configuration values */ padding: 0px; text-align: center; diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm b/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm index 9329b92735..7cef0630ee 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm @@ -13,19 +13,19 @@ switch (mArray.wans[i].status) { case 'online': - stat = 'Online (tracking active)'; + stat = '<%:Online (tracking active)%>'; cssc = 'wanon'; break; case 'notMonitored': - stat = 'Online (tracking off)'; + stat = '<%:Online (tracking off)%>'; cssc = 'wanon'; break; case 'offline': - stat = 'Offline'; + stat = '<%:Offline%>'; cssc = 'wanoff'; break; case 'notEnabled': - stat = 'Disabled'; + stat = '<%:Disabled%>'; cssc = 'wanoff'; break; } @@ -38,7 +38,7 @@ } else { - status.innerHTML = '<strong>No MWAN interfaces found</strong>'; + status.innerHTML = '<strong><%:No MWAN interfaces found%></strong>'; } } ); @@ -46,16 +46,13 @@ <fieldset id="interface_field" class="cbi-section"> <legend><%:MWAN Interface Live Status%></legend> - <div id="mwan_status_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div> + <div id="mwan_status_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /><%:Collecting data...%></div> </fieldset> <style type="text/css"> .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ max-width: 1044px; } - #interface_field { - padding: 12px 20px 20px 20px; - } #mwan_status_text { display: table; font-size: 14px; diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm b/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm index b80b9f3acf..6a800c3f98 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm @@ -17,7 +17,7 @@ } else { - status.innerHTML = '<strong>No detailed status information available</strong>'; + status.innerHTML = '<strong><%:No detailed status information available%></strong>'; } } ); @@ -26,22 +26,11 @@ <div id="mwan_detail_status"> <fieldset class="cbi-section"> <legend><%:MWAN Detailed Status%></legend> - <div id="mwan_detail_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div> + <div id="mwan_detail_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /><%:Collecting data...%></div> </fieldset> </div> <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin-left: 30px; - padding-right: 30px; - width: auto; - } - #mwan_detail_status { - border: 1px dotted #555555; - background-color: #FFFFFF; - padding: 20px; - } #mwan_detail_text { padding: 20px; text-align: left; diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm b/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm index 472c7ce7fc..2929a6df60 100644 --- a/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm +++ b/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm @@ -21,19 +21,19 @@ switch (mArray.wans[i].status) { case 'online': - status = 'Online (tracking active)'; + status = '<%:Online (tracking active)%>'; css = 'wanon'; break; case 'notMonitored': - status = 'Online (tracking off)'; + status = '<%:Online (tracking off)%>'; css = 'wanon'; break; case 'offline': - status = 'Offline'; + status = '<%:Offline%>'; css = 'wanoff'; break; case 'notEnabled': - status = 'Disabled'; + status = '<%:Disabled%>'; css = 'wanoff'; break; } @@ -46,18 +46,18 @@ } else { - statusDiv.innerHTML = '<strong>No MWAN interfaces found</strong>'; + statusDiv.innerHTML = '<strong><%:No MWAN interfaces found%></strong>'; } var logs = document.getElementById('mwan_statuslog_text'); if (mArray.mwanlog) { - var mwanLog = 'Last 50 MWAN systemlog entries. Newest entries sorted at the top :'; + var mwanLog = '<%:Last 50 MWAN systemlog entries. Newest entries sorted at the top :%>'; logs.innerHTML = String.format('<pre>%s<br /><br />%s</pre>', mwanLog, mArray.mwanlog[0]); } else { - logs.innerHTML = '<strong>No MWAN systemlog history found</strong>'; + logs.innerHTML = '<strong><%:No MWAN systemlog history found%></strong>'; } } ); @@ -66,29 +66,15 @@ <div id="mwan_interface_status"> <fieldset id="interface_field" class="cbi-section"> <legend><%:MWAN Interface Live Status%></legend> - <div id="mwan_status_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div> + <div id="mwan_status_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /><%:Collecting data...%></div> </fieldset> <fieldset class="cbi-section"> <legend><%:MWAN Interface Systemlog%></legend> - <div id="mwan_statuslog_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div> + <div id="mwan_statuslog_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /><%:Collecting data...%></div> </fieldset> </div> <style type="text/css"> - .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: none; - margin-left: 30px; - padding-right: 30px; - width: auto; - } - #mwan_interface_status { - background-color: #FFFFFF; - border: 1px dotted #555555; - padding: 20px; - } - #interface_field { - padding: 12px 20px 20px 20px; - } #mwan_status_text { display: table; font-size: 14px; diff --git a/applications/luci-app-mwan3/po/ja/mwan3.po b/applications/luci-app-mwan3/po/ja/mwan3.po index cae45b8a2f..0d6ea152d0 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\n" +"X-Generator: Poedit 2.0.2\n" "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n" "Plural-Forms: nplurals=1; plural=0;\n" "Language: ja\n" @@ -46,6 +46,9 @@ msgstr "IP ルールのチェック" msgid "Check routing table" msgstr "ルーティング テーブルのチェック" +msgid "Collecting data..." +msgstr "" + msgid "Configuration" msgstr "設定" @@ -73,6 +76,9 @@ msgstr "診断結果" msgid "Diagnostics" msgstr "診断機能" +msgid "Disabled" +msgstr "" + msgid "" "Downed interface will be deemed up after this many successful ping tests" msgstr "" @@ -82,6 +88,9 @@ msgstr "" msgid "Enabled" msgstr "有効" +msgid "Error collecting troubleshooting information" +msgstr "" + msgid "Errors" msgstr "エラー" @@ -135,6 +144,9 @@ msgstr "インターフェース" msgid "Internet Protocol" msgstr "インターネット プロトコル" +msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :" +msgstr "" + msgid "Last resort" msgstr "最終手段" @@ -209,6 +221,9 @@ msgstr "" "単一または複数のポート(例: \"22\" または \"80,443\")、あるいはポートの範囲" "(例: \"1024:2048\")を、クオーテーション無しで指定することができます。" +msgid "Member" +msgstr "" + msgid "Member used" msgstr "使用されるメンバー" @@ -244,6 +259,30 @@ msgstr "ネットワーク設定" msgid "No" msgstr "いいえ" +msgid "No MWAN interfaces found" +msgstr "" + +msgid "No MWAN systemlog history found" +msgstr "" + +msgid "No detailed status information available" +msgstr "" + +msgid "No diagnostic results returned" +msgstr "" + +msgid "No protocol specified" +msgstr "" + +msgid "Offline" +msgstr "" + +msgid "Online (tracking active)" +msgstr "" + +msgid "Online (tracking off)" +msgstr "" + msgid "Overview" msgstr "概要" @@ -292,6 +331,9 @@ msgstr "" "ん。また、15文字以内でなければなりません。<br />ポリシーでは、設定済みのイン" "ターフェースやメンバー、ルールと同じ名前を使用することはできません。" +msgid "Policy" +msgstr "" + msgid "Policy assigned" msgstr "アサイン済みポリシー" @@ -310,6 +352,9 @@ msgstr "デフォルトのホットプラグ スクリプトの復元" msgid "Restore..." msgstr "復元..." +msgid "Rule" +msgstr "" + msgid "Rules" msgstr "ルール" @@ -362,16 +407,17 @@ msgid "There are currently %d of 250 supported interfaces configured" msgstr "現在、250個中 %d 個のサポートされたインターフェースが設定済みです。" msgid "" -"This IP address will be pinged to dermine if the link is up or down. Leave " -"blank to assume interface is always online" +"This displays the metric assigned to this interface in /etc/config/network" msgstr "" -"これらは、リンクの Up または Down を判定するために Ping が送信されるIP アドレ" -"スです。常にオンラインとする場合、空欄のままにします。" +"/etc/config/network で、このインターフェースに割り当てられたメトリックです。" msgid "" -"This displays the metric assigned to this interface in /etc/config/network" +"This hostname or IP address will be pinged to determine if the link is up or " +"down. Leave blank to assume interface is always online" msgstr "" -"/etc/config/network で、このインターフェースに割り当てられたメトリックです。" +"リンクの Up または Down 状態を判定するために、このホスト名または IP アドレス" +"に対して Ping の送信が行われます。常にオンラインとする場合、空欄のままにしま" +"す。" msgid "This section allows you to modify the contents of /etc/config/mwan3" msgstr "" @@ -408,6 +454,9 @@ msgstr "" msgid "Tracking IP" msgstr "追跡 IP" +msgid "Tracking hostname or IP address" +msgstr "追跡ホスト名または IP アドレス" + msgid "Tracking reliability" msgstr "追跡の信頼性" @@ -525,6 +574,12 @@ msgstr "" "警告: このルールは不適切なプロトコルが指定されているか、または何も指定されて" "いません!プロトコルを指定し直してください!" +msgid "Waiting for MWAN to %s..." +msgstr "" + +msgid "Waiting for diagnostic results..." +msgstr "" + msgid "Weight" msgstr "ウエイト" @@ -560,3 +615,10 @@ msgstr "never" msgid "unreachable (reject)" msgstr "unreachable (reject)" + +#~ msgid "" +#~ "This IP address will be pinged to dermine if the link is up or down. " +#~ "Leave blank to assume interface is always online" +#~ msgstr "" +#~ "これらは、リンクの Up または Down を判定するために Ping が送信されるIP ア" +#~ "ドレスです。常にオンラインとする場合、空欄のままにします。" diff --git a/applications/luci-app-mwan3/po/templates/mwan3.pot b/applications/luci-app-mwan3/po/templates/mwan3.pot index 0bda248fae..d9bddf5e08 100644 --- a/applications/luci-app-mwan3/po/templates/mwan3.pot +++ b/applications/luci-app-mwan3/po/templates/mwan3.pot @@ -33,6 +33,9 @@ msgstr "" msgid "Check routing table" msgstr "" +msgid "Collecting data..." +msgstr "" + msgid "Configuration" msgstr "" @@ -60,6 +63,9 @@ msgstr "" msgid "Diagnostics" msgstr "" +msgid "Disabled" +msgstr "" + msgid "" "Downed interface will be deemed up after this many successful ping tests" msgstr "" @@ -67,6 +73,9 @@ msgstr "" msgid "Enabled" msgstr "" +msgid "Error collecting troubleshooting information" +msgstr "" + msgid "Errors" msgstr "" @@ -118,6 +127,9 @@ msgstr "" msgid "Internet Protocol" msgstr "" +msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :" +msgstr "" + msgid "Last resort" msgstr "" @@ -183,6 +195,9 @@ msgid "" "as a portrange (eg \"1024:2048\") without quotes" msgstr "" +msgid "Member" +msgstr "" + msgid "Member used" msgstr "" @@ -212,6 +227,30 @@ msgstr "" msgid "No" msgstr "" +msgid "No MWAN interfaces found" +msgstr "" + +msgid "No MWAN systemlog history found" +msgstr "" + +msgid "No detailed status information available" +msgstr "" + +msgid "No diagnostic results returned" +msgstr "" + +msgid "No protocol specified" +msgstr "" + +msgid "Offline" +msgstr "" + +msgid "Online (tracking active)" +msgstr "" + +msgid "Online (tracking off)" +msgstr "" + msgid "Overview" msgstr "" @@ -252,6 +291,9 @@ msgid "" "configured interfaces, members or rules" msgstr "" +msgid "Policy" +msgstr "" + msgid "Policy assigned" msgstr "" @@ -270,6 +312,9 @@ msgstr "" msgid "Restore..." msgstr "" +msgid "Rule" +msgstr "" + msgid "Rules" msgstr "" @@ -312,12 +357,12 @@ msgid "There are currently %d of 250 supported interfaces configured" msgstr "" msgid "" -"This IP address will be pinged to dermine if the link is up or down. Leave " -"blank to assume interface is always online" +"This displays the metric assigned to this interface in /etc/config/network" msgstr "" msgid "" -"This displays the metric assigned to this interface in /etc/config/network" +"This hostname or IP address will be pinged to determine if the link is up or " +"down. Leave blank to assume interface is always online" msgstr "" msgid "This section allows you to modify the contents of /etc/config/mwan3" @@ -343,6 +388,9 @@ msgstr "" msgid "Tracking IP" msgstr "" +msgid "Tracking hostname or IP address" +msgstr "" + msgid "Tracking reliability" msgstr "" @@ -429,6 +477,12 @@ msgid "" "specified! Please configure a specific protocol!" msgstr "" +msgid "Waiting for MWAN to %s..." +msgstr "" + +msgid "Waiting for diagnostic results..." +msgstr "" + msgid "Weight" msgstr "" diff --git a/applications/luci-app-mwan3/po/zh-cn/mwan3.po b/applications/luci-app-mwan3/po/zh-cn/mwan3.po index b8948b3163..d239312f9b 100644 --- a/applications/luci-app-mwan3/po/zh-cn/mwan3.po +++ b/applications/luci-app-mwan3/po/zh-cn/mwan3.po @@ -1,17 +1,7 @@ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Language-Team: \n" "Last-Translator: Hsing-Wang Liao <kuoruan@gmail.com>\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0\n" -"Last-Translator: \n" -"Plural-Forms: nplurals=1; plural=0;\n" -"Language: zh_CN\n" msgid "%d hour" msgstr "%d 小时" @@ -32,20 +22,23 @@ msgid "" "Acceptable values: 1-100. This many Tracking IP addresses must respond for " "the link to be deemed up" msgstr "" -"接受的值: 1-100。这个设置项指定了当多少个IP地址能够连通时接口会被认为在线" +"取值范围: 1-100。这个设置项指定了当多少个 IP 地址能够连通时接口会被认为在线" msgid "Acceptable values: 1-1000. Defaults to 1 if not set" -msgstr "接受的值: 1-100。如果不填写,默认值为 1" +msgstr "取值范围: 1-100。如果不填写,默认值为 1" msgid "Advanced" msgstr "高级" msgid "Check IP rules" -msgstr "检查IP规则" +msgstr "检查 IP 规则" msgid "Check routing table" msgstr "检查路由表" +msgid "Collecting data..." +msgstr "正在收集数据..." + msgid "Configuration" msgstr "配置" @@ -73,6 +66,9 @@ msgstr "诊断结果" msgid "Diagnostics" msgstr "诊断" +msgid "Disabled" +msgstr "禁用" + msgid "" "Downed interface will be deemed up after this many successful ping tests" msgstr "当 Ping 成功次数达到这个数值后,已经被认为离线的接口将会重新上线" @@ -80,6 +76,9 @@ msgstr "当 Ping 成功次数达到这个数值后,已经被认为离线的接 msgid "Enabled" msgstr "启用" +msgid "Error collecting troubleshooting information" +msgstr "收集故障排除信息时出错" + msgid "Errors" msgstr "错误" @@ -131,6 +130,9 @@ msgstr "接口" msgid "Internet Protocol" msgstr "互联网协议" +msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :" +msgstr "最近 50 条 MWAN 系统日志,最新条目排在顶部:" + msgid "Last resort" msgstr "备用成员" @@ -192,15 +194,19 @@ msgid "" msgstr "" "MWAN 支持最多 250 个物理或逻辑接口。<br />MWAN 要求所有接口必须在 /etc/" "config/network 中设定唯一的网关跃点。<br />名称必须与 /etc/config/network 中" -"的接口名称匹配。(可查看“高级”选项卡)<br />名称允许包括A-Z、a-z、0-9、_ 但是不" -"能有空格。<br />接口不应该与成员、策略、规则中的任意一个设置项使用相同的名称" +"的接口名称匹配。(可查看“高级”选项卡)<br />名称允许包括A-Z、a-z、0-9、_ 但是" +"不能有空格。<br />接口不应该与成员、策略、规则中的任意一个设置项使用相同的名" +"称" msgid "" "May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or " "as a portrange (eg \"1024:2048\") without quotes" msgstr "" -"可以输入一个或多个端口 (例如 \"22\" 或者 \"80,443\") 或者是一个端口范围 (例" -"如 \"1024:2048\") 不含引号" +"可以输入一个或多个端口(例如 \"22\" 或者 \"80,443\")或者是一个端口范围(例" +"如 \"1024:2048\")不含引号" + +msgid "Member" +msgstr "成员" msgid "Member used" msgstr "使用的成员" @@ -213,7 +219,7 @@ msgid "" ">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Members " "may not share the same name as configured interfaces, policies or rules" msgstr "" -"“成员”用来设置每一个 MWAN 接口的跃点数 (即接口优先级) 和所占比重。<br />名称" +"“成员”用来设置每一个 MWAN 接口的跃点数(即接口优先级)和所占比重。<br />名称" "允许包括 A-Z、 a-、0-9、_ 但是不能有空格。<br />成员不应该与接口、策略、规则" "中的任意一个设置项使用相同的名称" @@ -236,6 +242,30 @@ msgstr "网络配置文件" msgid "No" msgstr "否" +msgid "No MWAN interfaces found" +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 "Offline" +msgstr "离线" + +msgid "Online (tracking active)" +msgstr "在线(追踪启用中)" + +msgid "Online (tracking off)" +msgstr "在线(追踪已关闭)" + msgid "Overview" msgstr "概况" @@ -281,6 +311,9 @@ msgstr "" "包括A-Z、a-z、0-9、_ 但是不能有空格。名称应该在 15 个字符以内<br />策略不应该" "与接口、成员、规则中的任意一个设置项使用相同的名称" +msgid "Policy" +msgstr "策略" + msgid "Policy assigned" msgstr "分配的策略" @@ -299,6 +332,9 @@ msgstr "恢复默认的 hotplug 脚本" msgid "Restore..." msgstr "恢复..." +msgid "Rule" +msgstr "规则" + msgid "Rules" msgstr "规则" @@ -342,22 +378,20 @@ msgid "Stop MWAN" msgstr "停止 MWAN" msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes" -msgstr "支持 CIDR 记法 (例如: \"192.168.100.0/24\") 不含引号" +msgstr "支持 CIDR 记法(例如: \"192.168.100.0/24\")不含引号" msgid "There are currently %d of 250 supported interfaces configured" -msgstr "" - -msgid "" -"This IP address will be pinged to dermine if the link is up or down. Leave " -"blank to assume interface is always online" -msgstr "" -"MWAN 将会通过 Ping 这些 IP 地址来确定接口是否上线。如果留空,则 MWAN 认为该接" -"口永远在线" +msgstr "当前已配置 %d 个接口,最大支持 250 个" msgid "" "This displays the metric assigned to this interface in /etc/config/network" msgstr "这里显示了这个接口在 /etc/config/network 中配置的跃点数" +msgid "" +"This hostname or IP address will be pinged to determine if the link is up or " +"down. Leave blank to assume interface is always online" +msgstr "通过 ping 此主机或 IP 地址来确定链路是否在线。留空则认为接口始终在线" + msgid "This section allows you to modify the contents of /etc/config/mwan3" msgstr "这里允许你修改 /etc/config/mwan3 的内容" @@ -377,18 +411,21 @@ msgid "" "$INTERFACE is the interface name (wan1, wan2, etc.)<br />$DEVICE is the " "device name attached to the interface (eth0.1, eth1, etc.)" msgstr "" -"这里允许你修改/etc/hotplug.d/iface/16-mwancustom 的内容<br />这可以在接口 " +"这里允许你修改 /etc/hotplug.d/iface/16-mwancustom 的内容<br />这可以在接口 " "ifup 或 ifdown Hotplug 事件时运行系统命令或脚本<br /><br />注意:<br />脚本的" "第一行必须是 "#!/bin/sh" 不含引号<br />以#开头的行是注释,不会执行" -"<br /><br />可用变量:<br />$ACTION 是 Hotplug 事件 (ifup, ifdown)<br />" -"$INTERFACE 是接口名称 (wan1、wan2 等)<br />$DEVICE 是连接到接口的设备名称 " -"(eth0.1、eth1 等)" +"<br /><br />可用变量:<br />$ACTION 是 Hotplug 事件(ifup, ifdown)<br />" +"$INTERFACE 是接口名称(wan1、wan2 等)<br />$DEVICE 是连接到接口的设备名称 " +"(eth0.1、eth1 等)" msgid "Tracking IP" -msgstr "跟踪的 IP" +msgstr "追踪的 IP" + +msgid "Tracking hostname or IP address" +msgstr "追踪的主机或 IP 地址" msgid "Tracking reliability" -msgstr "跟踪可靠性" +msgstr "追踪可靠性" msgid "Traffic Rules" msgstr "流量规则" @@ -410,70 +447,77 @@ msgid "View the contents of /etc/protocols for protocol descriptions" msgstr "请查看 /etc/protocols 获取可选协议详情" msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!" -msgstr "" +msgstr "警告: 已配置 %d 个接口,超过最大值 250!" msgid "" "WARNING: Some policies have names exceeding the maximum of 15 characters!" -msgstr "" +msgstr "警告: 某些策略的名称超过了 15 个字符!" msgid "" "WARNING: some interfaces are configured incorrectly or not at all in /etc/" "config/network!" -msgstr "" +msgstr "警告: 某些接口配置不正确或未配置到 /etc/config/network!" msgid "" "WARNING: some interfaces have a higher reliability requirement than there " "are tracking IP addresses!" -msgstr "" +msgstr "警告: 某些接口的追踪可靠性要求大于了追踪 IP 地址总数!" msgid "" "WARNING: some interfaces have duplicate metrics configured in /etc/config/" "network!" -msgstr "" +msgstr "警告: 某些接口在 /etc/config/network 中配置了相同的跃点数!" msgid "" "WARNING: some interfaces have no default route in the main routing table!" -msgstr "" +msgstr "警告: 某些接口在主路由表中没有默认路由!" msgid "" "WARNING: some interfaces have no metric configured in /etc/config/network!" -msgstr "" +msgstr "警告: 某些接口没有在 /etc/config/network 中配置跃点数!" 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 "" +msgstr "警告: 此接口和其他接口在 /etc/config/network 中配置了相同的跃点数!" msgid "" "WARNING: this interface has a higher reliability requirement than there are " "tracking IP addresses!" -msgstr "" +msgstr "警告: 此接口的追踪可靠性要求大于了追踪 IP 地址总数!" msgid "WARNING: this interface has no default route in the main routing table!" -msgstr "" +msgstr "警告: 此接口在主路由表中没有默认路由!" msgid "" "WARNING: this interface has no metric configured in /etc/config/network!" -msgstr "" +msgstr "警告: 此接口没有在 /etc/config/network 中配置跃点数!" msgid "" "WARNING: this interface is configured incorrectly or not at all in /etc/" "config/network!" -msgstr "" +msgstr "警告: 此接口配置不正确或未配置到 /etc/config/network!" msgid "" "WARNING: this policy's name is %d characters exceeding the maximum of 15!" -msgstr "" +msgstr "警告: 此策略的名称具有 %d 个字符,超过了 15 个字符!" msgid "" "WARNING: this rule is incorrectly configured with no or improper protocol " "specified! Please configure a specific protocol!" -msgstr "" +msgstr "警告: 此规则没有配置或配置了不正确的协议,请重新指定协议!" + +msgid "Waiting for MWAN to %s..." +msgstr "等待 MWAN %s..." + +msgid "Waiting for diagnostic results..." +msgstr "等待诊断结果..." msgid "Weight" msgstr "比重" @@ -492,10 +536,10 @@ msgid "always" msgstr "总是" msgid "blackhole (drop)" -msgstr "黑洞 (丢弃)" +msgstr "黑洞(丢弃)" msgid "default (use main routing table)" -msgstr "默认 (使用主路由表)" +msgstr "默认(使用主路由表)" msgid "ifdown" msgstr "ifdown" @@ -507,4 +551,4 @@ msgid "never" msgstr "从不" msgid "unreachable (reject)" -msgstr "不可达 (拒绝)" +msgstr "不可达(拒绝)" diff --git a/applications/luci-app-privoxy/Makefile b/applications/luci-app-privoxy/Makefile index e174c807b8..486cf0ee74 100644 --- a/applications/luci-app-privoxy/Makefile +++ b/applications/luci-app-privoxy/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2008-2015 The LuCI Team <luci@lists.subsignal.org> +# Copyright (C) 2008-2017 The LuCI Team <luci@lists.subsignal.org> # # This is free software, licensed under the Apache License, Version 2.0 . # @@ -14,10 +14,10 @@ PKG_VERSION:=1.0.6 # Release == build # increase on changes of translation files -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_LICENSE:=Apache-2.0 -PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com> +PKG_MAINTAINER:= # LuCI specific settings LUCI_TITLE:=LuCI Support for Privoxy WEB proxy @@ -30,7 +30,6 @@ help $(LUCI_TITLE) . Version: $(PKG_VERSION)-$(PKG_RELEASE) - $(PKG_MAINTAINER) endef include ../../luci.mk diff --git a/applications/luci-app-qos/Makefile b/applications/luci-app-qos/Makefile index dd322a347a..fd12557453 100644 --- a/applications/luci-app-qos/Makefile +++ b/applications/luci-app-qos/Makefile @@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Quality of Service configuration module LUCI_DEPENDS:=+qos-scripts +PKG_LICENSE:=Apache-2.0 + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-shadowsocks-libev/Makefile b/applications/luci-app-shadowsocks-libev/Makefile index 848a5c8317..d0923e07a4 100644 --- a/applications/luci-app-shadowsocks-libev/Makefile +++ b/applications/luci-app-shadowsocks-libev/Makefile @@ -1,14 +1,16 @@ # -# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org> +# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com> # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk -LUCI_TITLE:=LuCI Support for Shadowsocks-libev +LUCI_TITLE:=LuCI Support for shadowsocks-libev LUCI_DEPENDS:= +PKG_LICENSE:=Apache-2.0 + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua b/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua index ae968168f1..05d12e38b2 100644 --- a/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua +++ b/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua @@ -1,12 +1,33 @@ --- Copyright 2015 Jian Chang <aa65535@live.com> +-- Copyright 2017 Yousong Zhou <yszhou4tech@gmail.com> -- Licensed to the public under the Apache License 2.0. - +-- module("luci.controller.shadowsocks-libev", package.seeall) function index() - if not nixio.fs.access("/etc/config/shadowsocks-libev") then - return - end + entry({"admin", "services", "shadowsocks-libev"}, + alias("admin", "services", "shadowsocks-libev", "instances"), + _("Shadowsocks-libev"), 59) + + entry({"admin", "services", "shadowsocks-libev", "instances"}, + arcombine(cbi("shadowsocks-libev/instances"), cbi("shadowsocks-libev/instance-details")), + _("Local Instances"), 10).leaf = true + + entry({"admin", "services", "shadowsocks-libev", "servers"}, + cbi("shadowsocks-libev/servers"), + _("Remote Servers"), 20).leaf = true + + entry({"admin", "services", "shadowsocks-libev", "rules"}, + cbi("shadowsocks-libev/rules"), + _("Redir Rules"), 30).leaf = true + + entry({"admin", "services", "shadowsocks-libev", "status"}, call("ss_status"), nil).leaf = true + +end + +function ss_status() + local ut = require "luci.util" + local rv = ut.ubus("service", "list", {name = "shadowsocks-libev"})["shadowsocks-libev"] or {_=0} - entry({"admin", "services", "shadowsocks-libev"}, cbi("shadowsocks-libev"), _("ShadowSocks-libev"), 74).dependent = true + luci.http.prepare_content("application/json") + luci.http.write_json(rv) end diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev.lua deleted file mode 100644 index 76435e2f14..0000000000 --- a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev.lua +++ /dev/null @@ -1,156 +0,0 @@ --- Copyright 2015 Jian Chang <aa65535@live.com> --- Licensed to the public under the Apache License 2.0. - -local m, s, o, e, a - -if luci.sys.call("pidof ss-redir >/dev/null") == 0 then - m = Map("shadowsocks-libev", translate("ShadowSocks-libev"), translate("ShadowSocks-libev is running")) -else - m = Map("shadowsocks-libev", translate("ShadowSocks-libev"), translate("ShadowSocks-libev is not running")) -end - -e = { - "table", - "rc4", - "rc4-md5", - "aes-128-cfb", - "aes-192-cfb", - "aes-256-cfb", - "bf-cfb", - "camellia-128-cfb", - "camellia-192-cfb", - "camellia-256-cfb", - "cast5-cfb", - "des-cfb", - "idea-cfb", - "rc2-cfb", - "seed-cfb", - "salsa20", - "chacha20", -} - --- Global Setting -s = m:section(TypedSection, "shadowsocks-libev", translate("Global Setting")) -s.anonymous = true - -o = s:option(Flag, "enable", translate("Enable")) -o.default = 1 -o.rmempty = false - -o = s:option(Value, "server", translate("Server Address")) -o.datatype = "ipaddr" -o.rmempty = false - -o = s:option(Value, "server_port", translate("Server Port")) -o.datatype = "port" -o.rmempty = false - -o = s:option(Value, "local_port", translate("Local Port")) -o.datatype = "port" -o.default = 1080 -o.rmempty = false - -o = s:option(Value, "timeout", translate("Connection Timeout")) -o.datatype = "uinteger" -o.default = 60 -o.rmempty = false - -o = s:option(Value, "password", translate("Password")) -o.password = true -o.rmempty = false - -o = s:option(ListValue, "encrypt_method", translate("Encrypt Method")) -for i,v in ipairs(e) do - o:value(v) -end -o.rmempty = false - -o = s:option(Value, "ignore_list", translate("Ignore List")) -o:value("/dev/null", translate("Disabled")) -o.default = "/dev/null" -o.rmempty = false - --- UDP Relay -s = m:section(TypedSection, "shadowsocks-libev", translate("UDP Relay")) -s.anonymous = true - -o = s:option(ListValue, "udp_mode", translate("Relay Mode")) -o:value("0", translate("Disabled")) -o:value("1", translate("Enabled")) -o:value("2", translate("Custom")) -o.default = 0 -o.rmempty = false - -o = s:option(Value, "udp_server", translate("Server Address")) -o.datatype = "ipaddr" -o:depends("udp_mode", 2) - -o = s:option(Value, "udp_server_port", translate("Server Port")) -o.datatype = "port" -o:depends("udp_mode", 2) - -o = s:option(Value, "udp_local_port", translate("Local Port")) -o.datatype = "port" -o.default = 1081 -o:depends("udp_mode", 2) - -o = s:option(Value, "udp_timeout", translate("Connection Timeout")) -o.datatype = "uinteger" -o.default = 60 -o:depends("udp_mode", 2) - -o = s:option(Value, "udp_password", translate("Password")) -o.password = true -o:depends("udp_mode", 2) - -o = s:option(ListValue, "udp_encrypt_method", translate("Encrypt Method")) -for i,v in ipairs(e) do - o:value(v) -end -o:depends("udp_mode", 2) - --- UDP Forward -s = m:section(TypedSection, "shadowsocks-libev", translate("UDP Forward")) -s.anonymous = true - -o = s:option(Flag, "tunnel_enable", translate("Enable")) -o.default = 1 -o.rmempty = false - -o = s:option(Value, "tunnel_port", translate("UDP Local Port")) -o.datatype = "port" -o.default = 5300 - -o = s:option(Value, "tunnel_forward", translate("Forwarding Tunnel")) -o.default = "8.8.4.4:53" - --- Access Control -s = m:section(TypedSection, "shadowsocks-libev", translate("Access Control")) -s.anonymous = true - -s:tab("lan_ac", translate("LAN")) - -o = s:taboption("lan_ac", ListValue, "lan_ac_mode", translate("Access Control")) -o:value("0", translate("Disabled")) -o:value("1", translate("Allow listed only")) -o:value("2", translate("Allow all except listed")) -o.default = 0 -o.rmempty = false - -a = luci.sys.net.arptable() or {} - -o = s:taboption("lan_ac", DynamicList, "lan_ac_ip", translate("LAN IP List")) -o.datatype = "ipaddr" -for i,v in ipairs(a) do - o:value(v["IP address"]) -end - -s:tab("wan_ac", translate("WAN")) - -o = s:taboption("wan_ac", DynamicList, "wan_bp_ip", translate("Bypassed IP")) -o.datatype = "ip4addr" - -o = s:taboption("wan_ac", DynamicList, "wan_fw_ip", translate("Forwarded IP")) -o.datatype = "ip4addr" - -return m diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua new file mode 100644 index 0000000000..d9a61d0bf7 --- /dev/null +++ b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua @@ -0,0 +1,49 @@ +-- Copyright 2017 Yousong Zhou <yszhou4tech@gmail.com> +-- Licensed to the public under the Apache License 2.0. + +local ds = require "luci.dispatcher" +local ss = require "luci.model.shadowsocks-libev" + +local sname = arg[1] +local redirect_url = ds.build_url("admin/services/shadowsocks-libev/instances") +local s, o + +local m = Map("shadowsocks-libev") +local sdata = m:get(sname) +if not sdata then + luci.http.redirect(redirect_url) + return +end +local stype = sdata[".type"] +m.redirect = redirect_url +m.title = "shadowsocks-libev - %s - %s" % {stype, sname} + + +s = m:section(NamedSection, sname, stype) +s:tab("general", translate("General Settings")) +s:tab("advanced", translate("Advanced Settings")) +s:taboption("general", Flag, "disabled", translate("Disable")) +ss.option_install_package(s, "general") + +if stype == "ss_server" then + ss.options_server(s, "general") + o = s:taboption("general", Value, "bind_address", + translate("Bind address"), + translate("The address ss-server will initiate connection from")) + o.datatype = "ipaddr" + o.placeholder = "0.0.0.0" + ss.values_ipaddr(o) + o = s:taboption("general", Value, "manager_address", translate("Manager address")) + o.datatype = "hostport" +else + ss.options_client(s, "general") + if stype == "ss_tunnel" then + o = s:taboption("general", Value, "tunnel_address", + translate("Tunnel address"), + translate("The address ss-tunnel will forward traffic to")) + o.datatype = "hostport" + end +end +ss.options_common(s, "advanced") + +return m diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua new file mode 100644 index 0000000000..62a90fb416 --- /dev/null +++ b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua @@ -0,0 +1,104 @@ +-- Copyright 2017 Yousong Zhou <yszhou4tech@gmail.com> +-- Licensed to the public under the Apache License 2.0. + +local ds = require "luci.dispatcher" +local ss = require "luci.model.shadowsocks-libev" +local ut = require "luci.util" +local m, s, o + +m = Map("shadowsocks-libev", + translate("Local Instances"), + translate("Instances of shadowsocks-libev components, e.g. ss-local, \ + ss-redir, ss-tunnel, ss-server, etc. To enable an instance it \ + is required to enable both the instance itself and the remote \ + server it refers to.")) + +local instances = {} +local cfgtypes = { "ss_local", "ss_redir", "ss_server", "ss_tunnel" } + +for sname, sdata in pairs(m:get()) do + local key, value = ss.cfgvalue_overview(sdata) + if key ~= nil then + instances[key] = value + end +end + +s = m:section(Table, instances) +s.addremove = true +s.template_addremove = "shadowsocks-libev/add_instance" +s.extedit = function(self, section) + local value = instances[section] + if type(value) == "table" then + return ds.build_url(unpack(ds.context.requestpath), + "services/shadowsocks-libev/instances", + value[".name"]) + end +end +s.parse = function(self, ...) + Table.parse(self, ...) + + local crval = REMOVE_PREFIX .. self.config + local name = self.map:formvaluetable(crval) + for k,v in pairs(name) do + local value = instances[k] + local sname = value[".name"] + if type(value) == "table" then + m:del(sname) + instances[k] = nil + for _, oname in ipairs({"redir_tcp", "redir_udp"}) do + local ovalue = m:get("ss_rules", oname) + if ovalue == sname then + m:del("ss_rules", oname) + end + end + end + end + + local stype = m:formvalue("_newinst.type") + local sname = m:formvalue("_newinst.name") + if ut.contains(cfgtypes, stype) then + local created + if sname and #sname > 0 then + created = m:set(sname, nil, stype) + else + created = m:add(stype) + sname = created + end + if created then + m.uci:save("shadowsocks-libev") + luci.http.redirect(ds.build_url( + "admin/services/shadowsocks-libev/instances", sname + )) + end + end +end + +o = s:option(DummyValue, "name", translate("Name")) +o.rawhtml = true +o = s:option(DummyValue, "overview", translate("Overview")) +o.rawhtml = true + +s:option(DummyValue, "running", translate("Running")) + +o = s:option(Button, "disabled", translate("Enable/Disable")) +o.render = function(self, section, scope) + if instances[section].disabled then + self.title = translate("Disabled") + self.inputstyle = "reset" + else + self.title = translate("Enabled") + self.inputstyle = "save" + end + Button.render(self, section, scope) +end +o.write = function(self, section) + local sdata = instances[section] + if type(sdata) == "table" then + local sname = sdata[".name"] + local disabled = not sdata["disabled"] + sdata["disabled"] = disabled + m:set(sname, "disabled", tostring(disabled)) + end +end + +return m diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/rules.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/rules.lua new file mode 100644 index 0000000000..fe5f9c31b8 --- /dev/null +++ b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/rules.lua @@ -0,0 +1,73 @@ +-- Copyright 2017 Yousong Zhou <yszhou4tech@gmail.com> +-- Licensed to the public under the Apache License 2.0. + +local ss = require("luci.model.shadowsocks-libev") + +local m, s, o + +m = Map("shadowsocks-libev", + translate("Redir Rules"), + translate("On this page you can configure how traffics are to be \ + forwarded to ss-redir instances. \ + If enabled, packets will first have their source ip addresses checked \ + against <em>Src ip bypass</em>, <em>Src ip forward</em>, \ + <em>Src ip checkdst</em> and if none matches <em>Src default</em> \ + will give the default action to be taken. \ + If the prior check results in action <em>checkdst</em>, packets will continue \ + to have their destination addresses checked.")) + + +s = m:section(NamedSection, "ss_rules", "ss-rules") +s:tab("general", translate("General Settings")) +s:tab("srcip", translate("Source Settings")) +s:tab("dstip", translate("Destination Settings")) + +s:taboption('general', Flag, "disabled", translate("Disable")) +ss.option_install_package(s, 'general') + +o = s:taboption('general', ListValue, "redir_tcp", + translate("ss-redir for TCP")) +ss.values_redir(o, 'tcp') +o = s:taboption('general', ListValue, "redir_udp", + translate("ss-redir for UDP")) +ss.values_redir(o, 'udp') + +o = s:taboption('general', ListValue, "local_default", + translate("Local-out default"), + translate("Default action for locally generated packets")) +ss.values_actions(o) +s:taboption('general', Value, "ipt_args", + translate("Extra arguments"), + translate("Passes additional arguments to iptables. Use with care!")) + +s:taboption('srcip', DynamicList, "src_ips_bypass", + translate("Src ip bypass"), + translate("Bypass redir action for packets with source addresses in this list")) +s:taboption('srcip', DynamicList, "src_ips_forward", + translate("Src ip forward"), + translate("Go through redir action for packets with source addresses in this list")) +s:taboption('srcip', DynamicList, "src_ips_checkdst", + translate("Src ip checkdst"), + translate("Continue to have dst address checked for packets with source addresses in this list")) +o = s:taboption('srcip', ListValue, "src_default", + translate("Src default"), + translate("Default action for packets whose source addresses do not match any of the source ip list")) +ss.values_actions(o) + +s:taboption('dstip', DynamicList, "dst_ips_bypass", + translate("Dst ip bypass"), + translate("Bypass redir action for packets with destination addresses in this list")) +s:taboption('dstip', DynamicList, "dst_ips_forward", + translate("Dst ip forward"), + translate("Go through redir action for packets with destination addresses in this list")) + +o = s:taboption('dstip', FileBrowser, "dst_ips_bypass_file", + translate("Dst ip bypass file"), + translate("File containing ip addresses for the purposes as with <em>Dst ip bypass</em>")) +o.datatype = "file" +s:taboption('dstip', FileBrowser, "dst_ips_forward_file", + translate("Dst ip forward file"), + translate("File containing ip addresses for the purposes as with <em>Dst ip forward</em>")) +o.datatype = "file" + +return m diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua new file mode 100644 index 0000000000..71c66562e1 --- /dev/null +++ b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua @@ -0,0 +1,31 @@ +-- Copyright 2017 Yousong Zhou <yszhou4tech@gmail.com> +-- Licensed to the public under the Apache License 2.0. + +local ds = require "luci.dispatcher" +local ss = require("luci.model.shadowsocks-libev") + +local m, s + +m = Map("shadowsocks-libev", + translate("Remote Servers"), + translate("Definition of remote shadowsocks servers. \ + Disable any of them will also disable instances refering to it.")) + +local sname = arg[1] +if sname then + if not m:get(sname) then + luci.http.redirect(ds.build_url("admin/services/shadowsocks-libev/servers")) + return + end + s = m:section(NamedSection, sname, "server") + m.title = m.title .. ' - ' .. sname +else + s = m:section(TypedSection, "server") + s.template = 'cbi/tblsection' + s.addremove = true +end + +s:option(Flag, "disabled", translate("Disable")) +ss.options_server(s) + +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 new file mode 100644 index 0000000000..2753f458b5 --- /dev/null +++ b/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua @@ -0,0 +1,253 @@ +-- Copyright 2017 Yousong Zhou <yszhou4tech@gmail.com> +-- Licensed to the public under the Apache License 2.0. + +local _up = getfenv(3) +local ut = require("luci.util") +local ds = require("luci.dispatcher") +local nw = require("luci.model.network") +nw.init() +module("luci.model.shadowsocks-libev", function(m) + setmetatable(m, {__index=function (self, k) + local tb = _up + return rawget(self, k) or _up[k] + end}) +end) + +function values_actions(o) + for _, a in ipairs(actions) do + o:value(a) + end +end + +function values_redir(o, xmode) + o.map.uci.foreach("shadowsocks-libev", "ss_redir", function(sdata) + local sname = sdata[".name"] + local mode = sdata["mode"] + if mode and mode:find(xmode) then + local desc = "%s - %s" % {sname, mode} + o:value(sname, desc) + end + end) +end + +function values_serverlist(o) + o.map.uci.foreach("shadowsocks-libev", "server", function(sdata) + local sname = sdata[".name"] + local server = sdata["server"] + local server_port = sdata["server_port"] + if server and server_port then + local desc = "%s - %s:%s" % {sname, sdata["server"], sdata["server_port"]} + o:value(sname, desc) + end + end) +end + +function values_ipaddr(o) + local keys, vals = {}, {} + for _, v in ipairs(nw:get_interfaces()) do + for _, a in ipairs(v:ipaddrs()) do + o:value(a:host():string(), '%s (%s)' %{ a:host(), v:shortname() }) + end + end +end + +function options_client(s, tab) + local o + + o = s:taboption(tab, ListValue, "server", translate("Remote server")) + values_serverlist(o) + o = s:taboption(tab, Value, "local_address", translate("Local address")) + o.datatype = "ipaddr" + o.placeholder = "0.0.0.0" + values_ipaddr(o) + o = s:taboption(tab, Value, "local_port", translate("Local port")) + o.datatype = "port" +end + +function options_server(s, tab) + local o + local optfunc + + if tab == nil then + optfunc = function(...) return s:option(...) end + else + optfunc = function(...) return s:taboption(tab, ...) end + end + + o = optfunc(Value, "server", translate("Server")) + o.datatype = "host" + o.size = 16 + o = optfunc(Value, "server_port", translate("Server port")) + o.datatype = "port" + o.size = 5 + o = optfunc(ListValue, "method", translate("Method")) + for _, m in ipairs(methods) do + o:value(m) + end + o = optfunc(Value, "key", translate("Key (base64 encoding)")) + o.datatype = "base64" + o.password = true + o.size = 12 + o = optfunc(Value, "password", translate("Password")) + o.password = true + o.size = 12 +end + +function options_common(s, tab) + local o + + o = s:taboption(tab, ListValue, "mode", translate("Mode of operation")) + for _, m in ipairs(modes) do + o:value(m) + end + o.default = "tcp_and_udp" + o = s:taboption(tab, Value, "mtu", translate("MTU")) + o.datatype = "uinteger" + o = s:taboption(tab, Value, "timeout", translate("Timeout (sec)")) + o.datatype = "uinteger" + s:taboption(tab, Value, "user", translate("Run as")) + + s:taboption(tab, Flag, "verbose", translate("Verbose")) + s:taboption(tab, Flag, "fast_open", translate("Enable TCP Fast Open")) + s:taboption(tab, Flag, "reuse_port", translate("Enable SO_REUSEPORT")) +end + +function ucival_to_bool(val) + return val == "true" or val == "1" or val == "yes" or val == "on" +end + +function cfgvalue_overview(sdata) + local stype = sdata[".type"] + local lines = {} + + if stype == "ss_server" then + cfgvalue_overview_(sdata, lines, names_options_server) + cfgvalue_overview_(sdata, lines, names_options_common) + cfgvalue_overview_(sdata, lines, { + "bind_address", + "manager_address", + }) + elseif stype == "ss_local" or stype == "ss_redir" or stype == "ss_tunnel" then + cfgvalue_overview_(sdata, lines, names_options_client) + if stype == "ss_tunnel" then + cfgvalue_overview_(sdata, lines, {"tunnel_address"}) + end + cfgvalue_overview_(sdata, lines, names_options_common) + else + return nil, nil + end + local sname = sdata[".name"] + local key = "%s.%s" % {stype, sname} + local value = { + [".name"] = sname, + name = '%s.<var>%s</var>' % {stype, sname}, + overview = table.concat(lines, "</br>"), + disabled = ucival_to_bool(sdata["disabled"]), + } + return key, value +end + +function cfgvalue_overview_(sdata, lines, names) + local line + + for _, n in ipairs(names) do + local v = sdata[n] + if v ~= nil then + local fv = "<var>%s</var>" % ut.pcdata(v) + if sdata[".type"] ~= "ss_server" and n == "server" then + fv = '<a class="label" href="%s">%s</a>' % { + ds.build_url("admin/services/shadowsocks-libev/servers", v), fv} + end + line = n .. ": " .. fv + table.insert(lines, line) + end + end +end + +function option_install_package(s, tab) + local bin = s.sectiontype:gsub("_", "-", 1) + local installed = nixio.fs.access("/usr/bin/" .. bin) + if installed then + return + end + local opkg_package = "shadowsocks-libev-" .. bin + local p_install + if tab then + p_install = s:taboption(tab, Button, "_install") + else + p_install = s:option(Button, "_install") + end + p_install.title = translate("Package is not installed") + p_install.inputtitle = translate("Install package %q" % opkg_package) + p_install.inputstyle = "apply" + + function p_install.write() + return luci.http.redirect( + luci.dispatcher.build_url("admin/system/packages") .. + "?submit=1&install=%s" % opkg_package + ) + end +end + +names_options_server = { + "server", + "server_port", + "method", + "key", + "password", +} + +names_options_client = { + "server", + "local_address", + "local_port", +} + +names_options_common = { + "verbose", + "fast_open", + "reuse_port", + "mode", + "mtu", + "timeout", + "user", +} + +modes = { + "tcp_only", + "tcp_and_udp", + "udp_only", +} + +actions = { + "bypass", + "forward", + "checkdst", +} + +methods = { + -- aead + "aes-128-gcm", + "aes-192-gcm", + "aes-256-gcm", + -- stream + "table", + "rc4", + "rc4-md5", + "aes-128-cfb", + "aes-192-cfb", + "aes-256-cfb", + "aes-128-ctr", + "aes-192-ctr", + "aes-256-ctr", + "bf-cfb", + "camellia-128-cfb", + "camellia-192-cfb", + "camellia-256-cfb", + "salsa20", + "chacha20", + "chacha20-ietf", + "aes-128-gcm", + "aes-192-gcm", + "aes-256-gcm", +} 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 new file mode 100644 index 0000000000..219d89b074 --- /dev/null +++ b/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm @@ -0,0 +1,45 @@ +<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"> + <select class="cbi-input-select" id="_newinst.type" name="_newinst.type"> + <option value="_dummy">-- instance type --</option> + <option value="ss_local">ss-local</option> + <option value="ss_tunnel">ss-tunnel</option> + <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"> + <input type="text" class="cbi-input-text" id="_newinst.name" name="_newinst.name" placeholder="<%:Name%>"/> + </td> + <td class="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> +<script type="text/javascript">//<![CDATA[ + XHR.poll(5, '<%=url('admin/services/shadowsocks-libev/status')%>', null, + function(x, st) + { + var names = [ + <%- + for _, name in ipairs(self:cfgsections()) do + write("%q," % name) + end + -%> + ]; + var instances = st["instances"] || {}; + for (var i = 0, len = names.length; i < len; i++) { + var name = names[i]; + var el = document.getElementById('cbi-table-' + name + '-running'); + if (el) { + var running = instances.hasOwnProperty(name)? instances[name].running : false; + el.innerText = running ? 'yes' : 'no'; + } + } + } + ); +//]]></script> diff --git a/applications/luci-app-shadowsocks-libev/po/pt-br/shadowsocks-libev.po b/applications/luci-app-shadowsocks-libev/po/pt-br/shadowsocks-libev.po deleted file mode 100644 index f2b18e374c..0000000000 --- a/applications/luci-app-shadowsocks-libev/po/pt-br/shadowsocks-libev.po +++ /dev/null @@ -1,97 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.11\n" -"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt_BR\n" - -msgid "Access Control" -msgstr "Controle de Acesso" - -msgid "Allow all except listed" -msgstr "Permitir todos, exceto os listados" - -msgid "Allow listed only" -msgstr "Permitir somente os listados" - -msgid "Bypassed IP" -msgstr "Endereços IP Ignorados" - -msgid "Connection Timeout" -msgstr "Tempo limite de conexão" - -msgid "Custom" -msgstr "Personalizado" - -msgid "Disabled" -msgstr "Desabilitado" - -msgid "Enable" -msgstr "Ativar" - -msgid "Enabled" -msgstr "Ativado" - -msgid "Encrypt Method" -msgstr "Método de Cifragem" - -msgid "Forwarded IP" -msgstr "Endereço IP Encaminhado" - -msgid "Forwarding Tunnel" -msgstr "Tunel para Encaminhamento" - -msgid "Global Setting" -msgstr "Opções Globais" - -msgid "Ignore List" -msgstr "Lista de Ignorados" - -msgid "LAN" -msgstr "LAN" - -msgid "LAN IP List" -msgstr "Lista de endereços IP da LAN" - -msgid "Local Port" -msgstr "Porta Local" - -msgid "Password" -msgstr "Senha" - -msgid "Relay Mode" -msgstr "Modo de Retransmissor" - -msgid "Server Address" -msgstr "Endereço do Servidor" - -msgid "Server Port" -msgstr "Porta do servidor" - -msgid "ShadowSocks-libev" -msgstr "ShadowSocks-libev" - -msgid "ShadowSocks-libev is not running" -msgstr "O serviço ShadowSocks-libev está parado" - -msgid "ShadowSocks-libev is running" -msgstr "O serviço ShadowSocks-libev está em execução." - -msgid "UDP Forward" -msgstr "Encaminhamento UDP" - -msgid "UDP Local Port" -msgstr "Porta Local UDP" - -msgid "UDP Relay" -msgstr "Retransmissão UDP" - -msgid "WAN" -msgstr "WAN" diff --git a/applications/luci-app-shadowsocks-libev/po/sv/shadowsocks-libev.po b/applications/luci-app-shadowsocks-libev/po/sv/shadowsocks-libev.po deleted file mode 100644 index b0cf6d3316..0000000000 --- a/applications/luci-app-shadowsocks-libev/po/sv/shadowsocks-libev.po +++ /dev/null @@ -1,136 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Access Control" -msgstr "" - -msgid "Allow all except listed" -msgstr "" - -msgid "Allow listed only" -msgstr "" - -msgid "Bypassed IP" -msgstr "" - -msgid "Connection Timeout" -msgstr "" - -msgid "Custom" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encrypt Method" -msgstr "" - -msgid "Forwarded IP" -msgstr "" - -msgid "Forwarding Tunnel" -msgstr "" - -msgid "Global Setting" -msgstr "" - -msgid "Ignore List" -msgstr "" - -msgid "LAN" -msgstr "" - -msgid "LAN IP List" -msgstr "" - -msgid "Local Port" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "Relay Mode" -msgstr "" - -msgid "Server Address" -msgstr "" - -msgid "Server Port" -msgstr "" - -msgid "ShadowSocks-libev" -msgstr "" - -msgid "ShadowSocks-libev is not running" -msgstr "" - -msgid "ShadowSocks-libev is running" -msgstr "" - -msgid "UDP Forward" -msgstr "" - -msgid "UDP Local Port" -msgstr "" - -msgid "UDP Relay" -msgstr "" - -msgid "WAN" -msgstr "" - -#~ msgid "Broadcast on all interfaces" -#~ msgstr "Sänd i alla gränssnitt" - -#~ msgid "Choose the host to wake up or enter a custom MAC address to use" -#~ msgstr "" -#~ "Välj värden som ska väckas upp eller fyll i en anpassad MAC-adress att " -#~ "använda" - -#~ msgid "Host to wake up" -#~ msgstr "Värd som ska väckas upp" - -#~ msgid "Network interface to use" -#~ msgstr "Nätverksgränssnitt som ska användas" - -#~ msgid "" -#~ "Sometimes only one of the two tools works. If one fails, try the other one" -#~ msgstr "" -#~ "Ibland så fungerar bara en av de två verktygen. Prova med den andra om " -#~ "den första misslyckades" - -#~ msgid "Specifies the interface the WoL packet is sent on" -#~ msgstr "Anger gränssnittet som fjärrstartspaketet skickas med" - -#~ msgid "Starting WoL utility:" -#~ msgstr "Startar hjälpprogrammet för fjärrstyrning av uppstart:" - -#~ msgid "Wake on LAN" -#~ msgstr "Fjärrstyrning av uppstart" - -#~ msgid "" -#~ "Wake on LAN is a mechanism to remotely boot computers in the local " -#~ "network." -#~ msgstr "" -#~ "Fjärrstyrning av uppstart är en mekanism för att starta upp datorer via " -#~ "fjärrstyrning i det lokala nätverket." - -#~ msgid "Wake up host" -#~ msgstr "Väck upp värden" - -#~ msgid "WoL program" -#~ msgstr "Program för fjärrstart" diff --git a/applications/luci-app-shadowsocks-libev/po/templates/shadowsocks-libev.pot b/applications/luci-app-shadowsocks-libev/po/templates/shadowsocks-libev.pot deleted file mode 100644 index 81bbcb72f4..0000000000 --- a/applications/luci-app-shadowsocks-libev/po/templates/shadowsocks-libev.pot +++ /dev/null @@ -1,86 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Access Control" -msgstr "" - -msgid "Allow all except listed" -msgstr "" - -msgid "Allow listed only" -msgstr "" - -msgid "Bypassed IP" -msgstr "" - -msgid "Connection Timeout" -msgstr "" - -msgid "Custom" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encrypt Method" -msgstr "" - -msgid "Forwarded IP" -msgstr "" - -msgid "Forwarding Tunnel" -msgstr "" - -msgid "Global Setting" -msgstr "" - -msgid "Ignore List" -msgstr "" - -msgid "LAN" -msgstr "" - -msgid "LAN IP List" -msgstr "" - -msgid "Local Port" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "Relay Mode" -msgstr "" - -msgid "Server Address" -msgstr "" - -msgid "Server Port" -msgstr "" - -msgid "ShadowSocks-libev" -msgstr "" - -msgid "ShadowSocks-libev is not running" -msgstr "" - -msgid "ShadowSocks-libev is running" -msgstr "" - -msgid "UDP Forward" -msgstr "" - -msgid "UDP Local Port" -msgstr "" - -msgid "UDP Relay" -msgstr "" - -msgid "WAN" -msgstr "" diff --git a/applications/luci-app-shadowsocks-libev/po/zh-cn/shadowsocks-libev.po b/applications/luci-app-shadowsocks-libev/po/zh-cn/shadowsocks-libev.po deleted file mode 100644 index f86eee7e9f..0000000000 --- a/applications/luci-app-shadowsocks-libev/po/zh-cn/shadowsocks-libev.po +++ /dev/null @@ -1,97 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-12 14:12+0800\n" -"PO-Revision-Date: 2015-07-02 14:26+0800\n" -"Last-Translator: Jian Chang <aa65535@live.com>\n" -"Language: zh_CN\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: Pootle 2.0.6\n" - -msgid "Access Control" -msgstr "访问控制" - -msgid "Allow all except listed" -msgstr "仅允许列表外" - -msgid "Allow listed only" -msgstr "仅允许列表内" - -msgid "Bypassed IP" -msgstr "被忽略的IP" - -msgid "Connection Timeout" -msgstr "连接超时" - -msgid "Custom" -msgstr "自定义" - -msgid "Disabled" -msgstr "已禁用" - -msgid "Enable" -msgstr "启用" - -msgid "Enabled" -msgstr "已启用" - -msgid "Encrypt Method" -msgstr "加密方式" - -msgid "Forwarded IP" -msgstr "走代理的IP" - -msgid "Forwarding Tunnel" -msgstr "UDP转发地址" - -msgid "Global Setting" -msgstr "全局设置" - -msgid "Ignore List" -msgstr "忽略列表" - -msgid "LAN" -msgstr "" - -msgid "LAN IP List" -msgstr "内网IP列表" - -msgid "Local Port" -msgstr "本地端口" - -msgid "Password" -msgstr "密码" - -msgid "Relay Mode" -msgstr "中继模式" - -msgid "Server Address" -msgstr "服务器地址" - -msgid "Server Port" -msgstr "服务器端口" - -msgid "ShadowSocks-libev" -msgstr "ShadowSocks-libev" - -msgid "ShadowSocks-libev is not running" -msgstr "ShadowSocks-libev 未运行" - -msgid "ShadowSocks-libev is running" -msgstr "ShadowSocks-libev 运行中" - -msgid "UDP Forward" -msgstr "UDP转发" - -msgid "UDP Local Port" -msgstr "UDP本地端口" - -msgid "UDP Relay" -msgstr "UDP中继" - -msgid "WAN" -msgstr "" diff --git a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua index 1bc0714de8..ec26f02d0d 100644 --- a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua +++ b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua @@ -23,6 +23,7 @@ function index() s_general = _("General plugins"), s_network = _("Network plugins"), + apcups = _("APC UPS"), conntrack = _("Conntrack"), contextswitch = _("Context Switches"), cpu = _("Processor"), @@ -59,8 +60,8 @@ function index() -- our collectd menu local collectd_menu = { output = { "csv", "network", "rrdtool", "unixsock" }, - general = { "contextswitch", "cpu", "cpufreq", "df", "disk", "email", - "entropy", "exec", "irq", "load", "memory", + general = { "apcups", "contextswitch", "cpu", "cpufreq", "df", + "disk", "email", "entropy", "exec", "irq", "load", "memory", "nut", "processes", "sensors", "thermal", "uptime" }, network = { "conntrack", "dns", "interface", "iptables", "netlink", "olsrd", "openvpn", "ping", @@ -88,7 +89,7 @@ function index() _entry( { "admin", "statistics", "collectd", section, plugin }, cbi("luci_statistics/" .. plugin ), - labels[plugin], j * 10 + labels[plugin] or plugin, j * 10 ) end diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua new file mode 100644 index 0000000000..49e28c7cfd --- /dev/null +++ b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua @@ -0,0 +1,28 @@ +-- Copyright 2015 Jo-Philipp Wich <jow@openwrt.org> +-- Licensed to the public under the Apache License 2.0. + +m = Map("luci_statistics", + translate("APCUPS Plugin Configuration"), + translate( + "The APCUPS plugin collects statistics about the APC UPS." + )) + +-- collectd_apcups config section +s = m:section( NamedSection, "collectd_apcups", "luci_statistics" ) + +-- collectd_apcups.enable +enable = s:option( Flag, "enable", translate("Enable this plugin") ) +enable.default = 0 + +-- collectd_apcups.host (Host) +host = s:option( Value, "Host", translate("Monitor host"), translate ("Add multiple hosts separated by space.")) +host.default = "localhost" +host:depends( "enable", 1 ) + +-- collectd_apcups.port (Port) +port = s:option( Value, "Port", translate("Port for apcupsd communication") ) +port.isinteger = true +port.default = 3551 +port:depends( "enable", 1 ) + +return m diff --git a/applications/luci-app-statistics/luasrc/statistics/datatree.lua b/applications/luci-app-statistics/luasrc/statistics/datatree.lua index 806b054cb6..5176a19a22 100644 --- a/applications/luci-app-statistics/luasrc/statistics/datatree.lua +++ b/applications/luci-app-statistics/luasrc/statistics/datatree.lua @@ -13,9 +13,17 @@ local sections = uci:get_all("luci_statistics") Instance = util.class() function Instance.__init__( self, host ) - self._host = host or sections.collectd.Hostname or sys.hostname() - self._libdir = sections.collectd.PluginDir or "/usr/lib/collectd" - self._rrddir = sections.collectd_rrdtool.DataDir or "/tmp/rrd" + self._host = host or sys.hostname() + self._libdir = "/usr/lib/collectd" + self._rrddir = "/tmp/rrd" + + if sections and sections.collectd then + self._host = host or sections.collectd.Hostname or sys.hostname() + self._libdir = sections.collectd.PluginDir or "/usr/lib/collectd" + end + if sections and sections.collectd_rrdtool then + self._rrddir = sections.collectd_rrdtool.DataDir or "/tmp/rrd" + end self._libdir = self._libdir:gsub("/$","") self._rrddir = self._rrddir:gsub("/$","") diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua index 4e00e7f1fc..e29a2e17d9 100644 --- a/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua +++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua @@ -278,7 +278,7 @@ function Graph._generic( self, opts, plugin, plugin_instance, dtype, index ) -- create line1 statement _tif( _args, "LINE%d:%s_%s#%s:%s", - source.noarea and 2 or 1, + source.width or (source.noarea and 2 or 1), source.sname, var, line_color, legend ) end diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua new file mode 100644 index 0000000000..2a8aceec08 --- /dev/null +++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua @@ -0,0 +1,117 @@ +-- Copyright 2015 Jo-Philipp Wich <jow@openwrt.org> +-- Licensed to the public under the Apache License 2.0. + +module("luci.statistics.rrdtool.definitions.apcups",package.seeall) + +function rrdargs( graph, plugin, plugin_instance, dtype ) + + local voltagesdc = { + title = "%H: Voltages on APC UPS - Battery", + vlabel = "Volts DC", + alt_autoscale = true, + number_format = "%5.1lfV", + data = { + instances = { + voltage = { "battery" } + }, + + options = { + voltage = { title = "Battery voltage", noarea=true } + } + } + } + + local voltages = { + title = "%H: Voltages on APC UPS - AC", + vlabel = "Volts AC", + alt_autoscale = true, + number_format = "%5.1lfV", + data = { + instances = { + voltage = { "input", "output" } + }, + + options = { + voltage_output = { color = "00e000", title = "Output voltage", noarea=true, overlay=true }, + voltage_input = { color = "ffb000", title = "Input voltage", noarea=true, overlay=true } + } + } + } + + local percentload = { + title = "%H: Load on APC UPS ", + vlabel = "Percent", + y_min = "0", + y_max = "100", + number_format = "%5.1lf%%", + data = { + sources = { + percent_load = { "value" } + }, + instances = { + percent = "load" + }, + options = { + percent_load = { color = "00ff00", title = "Load level" } + } + } + } + + local charge_percent = { + title = "%H: Battery charge on APC UPS ", + vlabel = "Percent", + y_min = "0", + y_max = "100", + number_format = "%5.1lf%%", + data = { + types = { "charge" }, + options = { + charge = { color = "00ff0b", title = "Charge level" } + } + } + } + + local temperature = { + title = "%H: Battery temperature on APC UPS ", + vlabel = "\176C", + number_format = "%5.1lf\176C", + data = { + types = { "temperature" }, + options = { + temperature = { color = "ffb000", title = "Battery temperature" } } + } + } + + local timeleft = { + title = "%H: Time left on APC UPS ", + vlabel = "Minutes", + number_format = "%.1lfm", + data = { + sources = { + timeleft = { "value" } + }, + options = { + timeleft = { color = "0000ff", title = "Time left" } + } + } + } + + local frequency = { + title = "%H: Incoming line frequency on APC UPS ", + vlabel = "Hz", + number_format = "%5.0lfhz", + data = { + sources = { + frequency_input = { "value" } + }, + instances = { + frequency = "frequency" + }, + options = { + frequency_frequency = { color = "000fff", title = "Line frequency" } + } + } + } + + return { voltages, voltagesdc, percentload, charge_percent, temperature, timeleft, frequency } +end diff --git a/applications/luci-app-statistics/root/etc/config/luci_statistics b/applications/luci-app-statistics/root/etc/config/luci_statistics index c081a8e724..8cc918e3db 100644 --- a/applications/luci-app-statistics/root/etc/config/luci_statistics +++ b/applications/luci-app-statistics/root/etc/config/luci_statistics @@ -49,6 +49,11 @@ config statistics 'collectd_unixsock' # input plugins +config statistics 'collectd_apcups' + option enable '0' + option Host 'localhost' + option Port '3551' + config statistics 'collectd_conntrack' option enable '0' diff --git a/applications/luci-app-statistics/root/usr/bin/stat-genconfig b/applications/luci-app-statistics/root/usr/bin/stat-genconfig index 090344cee4..2bf63c1fe6 100755 --- a/applications/luci-app-statistics/root/usr/bin/stat-genconfig +++ b/applications/luci-app-statistics/root/usr/bin/stat-genconfig @@ -255,6 +255,12 @@ end plugins = { + apcups = { + { "Host", "Port" }, + { }, + { } + }, + collectd = { { "BaseDir", "Include", "PIDFile", "PluginDir", "TypesDB", "Interval", "ReadThreads", "Hostname" }, { }, @@ -461,8 +467,10 @@ preprocess = { section("collectd") +section("logfile") + for plugin in pairs(plugins) do - if plugin ~= "collectd" then + if (plugin ~= "collectd") and (plugin ~= "logfile") then section( plugin ) end end diff --git a/applications/luci-app-travelmate/po/ja/travelmate.po b/applications/luci-app-travelmate/po/ja/travelmate.po index e4a8b8bda2..bd1d54739c 100644 --- a/applications/luci-app-travelmate/po/ja/travelmate.po +++ b/applications/luci-app-travelmate/po/ja/travelmate.po @@ -7,18 +7,20 @@ msgstr "" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.1\n" +"X-Generator: Poedit 2.0.3\n" "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n" "Plural-Forms: nplurals=1; plural=0;\n" "Language: ja\n" -msgid "<br /> Network Interface 'trm_wwan' created successfully." -msgstr "" -"<br /> ネットワーク インターフェース 'trm_wwan' の作成に成功しました。" - msgid "Add Interface" msgstr "インターフェースの追加" +msgid "Add Uplink" +msgstr "アップリンクの追加" + +msgid "Add Wireless Uplink Configuration" +msgstr "無線アップリンク追加の設定" + msgid "" "Additional trigger delay in seconds before travelmate processing begins." msgstr "Travelmate の処理が開始されるまでの、追加の遅延時間(秒)です。" @@ -26,12 +28,8 @@ msgstr "Travelmate の処理が開始されるまでの、追加の遅延時間 msgid "Advanced" msgstr "詳細設定" -msgid "" -"Automatically create a new wireless wan uplink interface 'trm_wwan', " -"configure it to use dhcp and" -msgstr "" -"新しい無線 WAN インターフェース 'trm_wwan' を自動的に作成し、 DHCP を使用する" -"よう構成して" +msgid "Back to overview" +msgstr "概要へ戻る" msgid "" "Configuration of the travelmate package to to enable travel router " @@ -45,6 +43,27 @@ msgstr "接続制限" msgid "Create Uplink Interface" msgstr "アップリンク インターフェースの作成" +msgid "" +"Create a new wireless wan uplink interface, configure it to use dhcp and" +msgstr "" +"新規の無線 WAN アップリンク インターフェースを作成し、 DHCP を使用するよう構" +"成して" + +msgid "Delete" +msgstr "削除" + +msgid "Delete this Uplink" +msgstr "このアップリンクを削除" + +msgid "Device" +msgstr "デバイス" + +msgid "Disabled" +msgstr "無効" + +msgid "Edit" +msgstr "編集" + msgid "Edit Firewall Configuration" msgstr "ファイアウォール設定の編集" @@ -57,6 +76,12 @@ msgstr "Travelmate 設定の編集" msgid "Edit Wireless Configuration" msgstr "無線設定の編集" +msgid "Edit Wireless Uplink Configuration" +msgstr "無線アップリンク設定の編集" + +msgid "Edit this Uplink" +msgstr "このアップリンクを編集" + msgid "Enable 'automatic' mode" msgstr "'automatic' モードの有効化" @@ -66,15 +91,21 @@ msgstr "Travelmate の有効化" msgid "Enable verbose debug logging" msgstr "詳細なデバッグ ログの有効化" +msgid "Encryption" +msgstr "暗号化" + msgid "Extra options" msgstr "拡張オプション" +msgid "Find and join network on" +msgstr "ネットワークの検索と参加:" + msgid "" "For further information <a href=\"%s\" target=\"_blank\">see online " "documentation</a>" msgstr "" -"詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a>を確" -"認してください。" +"詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a> を" +"確認してください。" msgid "How long should travelmate wait for a successful wlan interface reload" msgstr "" @@ -82,26 +113,36 @@ msgstr "" "す。" msgid "How many times should travelmate try to connect to an Uplink" -msgstr "Travelmate がアップリンクに対して接続を試行する回数です。" +msgstr "Travelmate がアップリンクへの接続を試行する回数です。" msgid "Input file not found, please check your configuration." msgstr "入力ファイルが見つかりません。設定を確認してください。" -msgid "Interface Setup" -msgstr "インターフェース設定" - msgid "Interface Timeout" msgstr "インターフェース タイムアウト" +msgid "Interface Wizard" +msgstr "インターフェース ウィザード" + msgid "Keep travelmate in an active state." msgstr "Travelmate をアクティブ状態で維持します。" msgid "Last rundate" msgstr "最終実行日時" +msgid "Mode" +msgstr "モード" + +msgid "Name of the uplink interface that triggers travelmate processing." +msgstr "" +"Travelmate の処理のトリガーとなる、アップリンク インターフェースの名前です。" + msgid "Online Status" msgstr "オンライン ステータス" +msgid "Open" +msgstr "オープン" + msgid "" "Options for further tweaking in case the defaults are not suitable for you." msgstr "デフォルトの設定が適切でない場合、さらに設定するためのオプションです。" @@ -112,11 +153,22 @@ msgstr "全体タイムアウト" msgid "Overview" msgstr "概要" +msgid "Passphrase (%s)" +msgstr "暗号フレーズ (%s)" + +msgid "" +"Provides an overview of all configured uplink interfaces for travelmate. You " +"can edit and delete existing interfaces or scan for new uplinks." +msgstr "" +"Travelmate における、全ての設定済みアップリンク インターフェースの一覧です。" +"既存のインターフェースを編集または削除したり、新規アップリンクの追加のために" +"スキャンを行うことができます。" + msgid "Radio selection" msgstr "無線の選択" -msgid "Restrict interface trigger to certain interface(s)" -msgstr "インターフェース トリガーを特定のインターフェースに限定する" +msgid "Repeat scan" +msgstr "再スキャン" msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'" msgstr "Travelmate が特定の無線に接続するようにします。例: 'radio0'" @@ -124,26 +176,23 @@ msgstr "Travelmate が特定の無線に接続するようにします。例: 'r msgid "Runtime information" msgstr "実行情報" -msgid "" -"Scan & Add new wireless stations via standard <a href=\"%s\">Wireless " -"Setup</a>" -msgstr "" -"通常の<a href=\"%s\">無線設定</a>にて、新規の無線ステーションのスキャン及び追" -"加を行います。" +msgid "SSID" +msgstr "SSID" -msgid "" -"Space separated list of interfaces that trigger travelmate processing. To " -"disable event driven (re-)starts remove all entries." -msgstr "" -"Travelmate の処理のトリガーとなる、スペースで区切られたインターフェースのリス" -"トです。処理を発生させるイベントを無効にするには、全てのエントリーを削除して" -"空欄にします。" +msgid "Scan" +msgstr "スキャン:" + +msgid "Signal strength" +msgstr "信号強度" + +msgid "Specify the secret encryption key here." +msgstr "暗号キーを設定します。" msgid "Station Interface" msgstr "ステーション インターフェース" msgid "Station Radio" -msgstr "ステーション 無線" +msgstr "ステーション電波" msgid "Station SSID" msgstr "ステーション SSID" @@ -198,9 +247,42 @@ msgstr "Travelmate バージョン" msgid "Trigger delay" msgstr "トリガー遅延" +msgid "Unknown" +msgstr "不明" + +msgid "Uplink / Trigger interface" +msgstr "アップリンク/トリガー インターフェース" + +msgid "Uplink Interface" +msgstr "アップリンク インターフェース" + +msgid "Uplink SSID" +msgstr "アップリンク SSID" + +msgid "Uplink interface" +msgstr "アップリンク インターフェース" + msgid "View Logfile" msgstr "ログファイルの確認" +msgid "WEP" +msgstr "WEP" + +msgid "WEP passphrase" +msgstr "WEP 暗号キー" + +msgid "WPA / WPA2" +msgstr "WPA / WPA2" + +msgid "WPA passphrase" +msgstr "WPA 暗号キー" + +msgid "Wireless Scan" +msgstr "無線スキャン" + +msgid "Wireless Stations" +msgstr "無線ステーション" + msgid "" "add it to the wan zone of the firewall. This step has only to be done once." msgstr "" @@ -210,126 +292,11 @@ msgstr "" msgid "connected" msgstr "接続済み" +msgid "hidden" +msgstr "(不明)" + msgid "n/a" msgstr "利用不可" msgid "not connected" msgstr "未接続" - -#~ msgid "." -#~ msgstr "。" - -#~ msgid "" -#~ "Automatically create a new wireless wan interface, configure it to use " -#~ "dhcp and add it to the wan zone of the firewall. This step has only to be " -#~ "done once." -#~ msgstr "" -#~ "新しい無線 WAN インターフェースを自動的に作成し、DHCP を使用するよう構成し" -#~ "てファイアウォールの wan ゾーンに追加します。このステップは、一度だけ実行" -#~ "する必要があります。" - -#~ msgid "Direct Link: <a href=\"%s\">Wireless Setup</a>" -#~ msgstr "ダイレクト リンク: <a href=\"%s\">無線設定</a>" - -#~ msgid "For further information" -#~ msgstr "詳細情報は" - -#~ msgid "Name of the new wireless wan interface" -#~ msgstr "新しい無線 WAN のインターフェース名" - -#~ msgid "" -#~ "Network Interface '%s' created successfully. Feel free to scan & add new " -#~ "stations via standard wireless setup." -#~ msgstr "" -#~ "ネットワーク インターフェース '%s' の作成に成功しました。通常の無線設定に" -#~ "て、スキャン及び新規ステーションの追加が可能です。" - -#~ msgid "Setup WWAN Interface" -#~ msgstr "WWAN インターフェース設定" - -#~ msgid "" -#~ "The allowed characters are: <code>A-Z</code>, <code>a-z</code>, " -#~ "<code>0-9</code> and <code>_</code> (3-15 characters)." -#~ msgstr "" -#~ "使用可能文字: <code>A-Z</code>, <code>a-z</code>, <code>0-9</code> and " -#~ "<code>_</code>(3 - 15文字)" - -#~ msgid "The given network interface name already exist" -#~ msgstr "入力されたネットワーク インターフェース名は、既に存在しています。" - -#~ msgid "see online documentation" -#~ msgstr "オンライン ドキュメントを確認してください" - -#~ msgid "" -#~ "Brief advice: Create a wwan interface, configure it to use dhcp and add " -#~ "it to the wan zone in firewall. Create the wifi interfaces to be used " -#~ "('client' mode, assigned to wwan network, left as disabled). Travelmate " -#~ "will try to connect to the known wifi client interfaces in the defined " -#~ "order." -#~ msgstr "" -#~ "簡単な解説: 予めWWANインターフェースを作成し、DHCPを使用するよう構成して" -#~ "ファイアウォールのWANゾーンに追加します。また、使用される無線インター" -#~ "フェースを作成しておきます(\"クライアント\" モード、WWANに割り当て、無効" -#~ "状態)。Travelmateは、登録されている順序で既知の無線クライアント インター" -#~ "フェースへの接続を試行します。" - -#~ msgid "" -#~ "Configuration of the Travelmate package to enable travel router " -#~ "functionality." -#~ msgstr "トラベル ルータ機能を有効にする、Travelmate パッケージの設定です。" - -#~ msgid "Debug logging" -#~ msgstr "デバッグ ログ" - -#~ msgid "Default 20, range 10-60" -#~ msgstr "既定値 20、範囲 10 - 60" - -#~ msgid "Default 3, range 1-10" -#~ msgstr "既定値 3、範囲 1 - 10" - -#~ msgid "Disable this if you want to use iwinfo instead of iw" -#~ msgstr "iw の代わりに iwinfo を使用したい場合、この設定を無効にします。" - -#~ msgid "Enable Travelmate" -#~ msgstr "Travelmateの有効化" - -#~ msgid "Global options" -#~ msgstr "全般オプション" - -#~ msgid "Link to detailed advice" -#~ msgstr "詳細な解説へのリンク" - -#~ msgid "Max. number of connection retries to an uplink" -#~ msgstr "確立までの接続試行回数" - -#~ msgid "Max. timeout in seconds for wlan interface reload" -#~ msgstr "無線LANインターフェース リロード時の最大待機時間(秒)" - -#~ msgid "Restrict reload trigger to certain interface(s)" -#~ msgstr "リロード トリガを特定のインターフェースに限定する" - -#~ msgid "" -#~ "Space separated list of wwan interfaces that trigger reload action. To " -#~ "disable reload trigger set it to 'false'. Default: empty" -#~ msgstr "" -#~ "リロード動作のトリガとなる、スペースで区切られたWWAN インターフェースのリ" -#~ "ストです。リロードのトリガを無効にするには、'false' を設定します。既定値:" -#~ "(空)" - -#~ msgid "Use iw for scanning" -#~ msgstr "スキャンに iw を使用する" - -#~ msgid "Default 3, range 0-10. Set to 0 to allow unlimited retries" -#~ msgstr "既定値 3、範囲 0 - 10。再試行回数を制限しない場合、0 に設定します。" - -#~ msgid "Default 30, range 5-60" -#~ msgstr "既定値 30、範囲 5 - 60" - -#~ msgid "Default: empty = use all radios." -#~ msgstr "デフォルト:(空)= 全ての無線を使用" - -#~ msgid "Loop timeout in seconds for wlan monitoring" -#~ msgstr "無線LAN モニターのループ タイムアウト(秒)" - -#~ msgid "Use only one radio, e.g. 'radio0'" -#~ msgstr "単一の無線のみ使用する 例: 'radio0'" diff --git a/applications/luci-app-travelmate/po/pt-br/travelmate.po b/applications/luci-app-travelmate/po/pt-br/travelmate.po index 4eff34e3e1..5e09759c4a 100644 --- a/applications/luci-app-travelmate/po/pt-br/travelmate.po +++ b/applications/luci-app-travelmate/po/pt-br/travelmate.po @@ -12,10 +12,13 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "Language: pt_BR\n" -msgid "<br /> Network Interface 'trm_wwan' created successfully." +msgid "Add Interface" msgstr "" -msgid "Add Interface" +msgid "Add Uplink" +msgstr "" + +msgid "Add Wireless Uplink Configuration" msgstr "" msgid "" @@ -25,9 +28,7 @@ msgstr "" msgid "Advanced" msgstr "" -msgid "" -"Automatically create a new wireless wan uplink interface 'trm_wwan', " -"configure it to use dhcp and" +msgid "Back to overview" msgstr "" msgid "" @@ -41,6 +42,25 @@ msgstr "" msgid "Create Uplink Interface" msgstr "" +msgid "" +"Create a new wireless wan uplink interface, configure it to use dhcp and" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "Delete this Uplink" +msgstr "" + +msgid "Device" +msgstr "" + +msgid "Disabled" +msgstr "" + +msgid "Edit" +msgstr "" + msgid "Edit Firewall Configuration" msgstr "" @@ -53,6 +73,12 @@ msgstr "" msgid "Edit Wireless Configuration" msgstr "" +msgid "Edit Wireless Uplink Configuration" +msgstr "" + +msgid "Edit this Uplink" +msgstr "" + msgid "Enable 'automatic' mode" msgstr "" @@ -62,9 +88,15 @@ msgstr "" msgid "Enable verbose debug logging" msgstr "" +msgid "Encryption" +msgstr "" + msgid "Extra options" msgstr "Opções adicionais" +msgid "Find and join network on" +msgstr "" + msgid "" "For further information <a href=\"%s\" target=\"_blank\">see online " "documentation</a>" @@ -79,10 +111,10 @@ msgstr "" msgid "Input file not found, please check your configuration." msgstr "" -msgid "Interface Setup" +msgid "Interface Timeout" msgstr "" -msgid "Interface Timeout" +msgid "Interface Wizard" msgstr "" msgid "Keep travelmate in an active state." @@ -91,9 +123,18 @@ msgstr "" msgid "Last rundate" msgstr "" +msgid "Mode" +msgstr "" + +msgid "Name of the uplink interface that triggers travelmate processing." +msgstr "" + msgid "Online Status" msgstr "" +msgid "Open" +msgstr "" + msgid "" "Options for further tweaking in case the defaults are not suitable for you." msgstr "" @@ -104,10 +145,18 @@ msgstr "" msgid "Overview" msgstr "" +msgid "Passphrase (%s)" +msgstr "" + +msgid "" +"Provides an overview of all configured uplink interfaces for travelmate. You " +"can edit and delete existing interfaces or scan for new uplinks." +msgstr "" + msgid "Radio selection" msgstr "" -msgid "Restrict interface trigger to certain interface(s)" +msgid "Repeat scan" msgstr "" msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'" @@ -116,14 +165,16 @@ msgstr "" msgid "Runtime information" msgstr "" -msgid "" -"Scan & Add new wireless stations via standard <a href=\"%s\">Wireless " -"Setup</a>" +msgid "SSID" msgstr "" -msgid "" -"Space separated list of interfaces that trigger travelmate processing. To " -"disable event driven (re-)starts remove all entries." +msgid "Scan" +msgstr "" + +msgid "Signal strength" +msgstr "" + +msgid "Specify the secret encryption key here." msgstr "" msgid "Station Interface" @@ -175,9 +226,42 @@ msgstr "" msgid "Trigger delay" msgstr "" +msgid "Unknown" +msgstr "" + +msgid "Uplink / Trigger interface" +msgstr "" + +msgid "Uplink Interface" +msgstr "" + +msgid "Uplink SSID" +msgstr "" + +msgid "Uplink interface" +msgstr "" + msgid "View Logfile" msgstr "" +msgid "WEP" +msgstr "" + +msgid "WEP passphrase" +msgstr "" + +msgid "WPA / WPA2" +msgstr "" + +msgid "WPA passphrase" +msgstr "" + +msgid "Wireless Scan" +msgstr "" + +msgid "Wireless Stations" +msgstr "" + msgid "" "add it to the wan zone of the firewall. This step has only to be done once." msgstr "" @@ -185,6 +269,9 @@ msgstr "" msgid "connected" msgstr "" +msgid "hidden" +msgstr "" + msgid "n/a" msgstr "" diff --git a/applications/luci-app-travelmate/po/templates/travelmate.pot b/applications/luci-app-travelmate/po/templates/travelmate.pot index 615c3a79ce..a0e5629696 100644 --- a/applications/luci-app-travelmate/po/templates/travelmate.pot +++ b/applications/luci-app-travelmate/po/templates/travelmate.pot @@ -1,10 +1,13 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -msgid "<br /> Network Interface 'trm_wwan' created successfully." +msgid "Add Interface" msgstr "" -msgid "Add Interface" +msgid "Add Uplink" +msgstr "" + +msgid "Add Wireless Uplink Configuration" msgstr "" msgid "" @@ -14,9 +17,7 @@ msgstr "" msgid "Advanced" msgstr "" -msgid "" -"Automatically create a new wireless wan uplink interface 'trm_wwan', " -"configure it to use dhcp and" +msgid "Back to overview" msgstr "" msgid "" @@ -30,6 +31,25 @@ msgstr "" msgid "Create Uplink Interface" msgstr "" +msgid "" +"Create a new wireless wan uplink interface, configure it to use dhcp and" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "Delete this Uplink" +msgstr "" + +msgid "Device" +msgstr "" + +msgid "Disabled" +msgstr "" + +msgid "Edit" +msgstr "" + msgid "Edit Firewall Configuration" msgstr "" @@ -42,6 +62,12 @@ msgstr "" msgid "Edit Wireless Configuration" msgstr "" +msgid "Edit Wireless Uplink Configuration" +msgstr "" + +msgid "Edit this Uplink" +msgstr "" + msgid "Enable 'automatic' mode" msgstr "" @@ -51,9 +77,15 @@ msgstr "" msgid "Enable verbose debug logging" msgstr "" +msgid "Encryption" +msgstr "" + msgid "Extra options" msgstr "" +msgid "Find and join network on" +msgstr "" + msgid "" "For further information <a href=\"%s\" target=\"_blank\">see online " "documentation</a>" @@ -68,10 +100,10 @@ msgstr "" msgid "Input file not found, please check your configuration." msgstr "" -msgid "Interface Setup" +msgid "Interface Timeout" msgstr "" -msgid "Interface Timeout" +msgid "Interface Wizard" msgstr "" msgid "Keep travelmate in an active state." @@ -80,9 +112,18 @@ msgstr "" msgid "Last rundate" msgstr "" +msgid "Mode" +msgstr "" + +msgid "Name of the uplink interface that triggers travelmate processing." +msgstr "" + msgid "Online Status" msgstr "" +msgid "Open" +msgstr "" + msgid "" "Options for further tweaking in case the defaults are not suitable for you." msgstr "" @@ -93,10 +134,18 @@ msgstr "" msgid "Overview" msgstr "" +msgid "Passphrase (%s)" +msgstr "" + +msgid "" +"Provides an overview of all configured uplink interfaces for travelmate. You " +"can edit and delete existing interfaces or scan for new uplinks." +msgstr "" + msgid "Radio selection" msgstr "" -msgid "Restrict interface trigger to certain interface(s)" +msgid "Repeat scan" msgstr "" msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'" @@ -105,14 +154,16 @@ msgstr "" msgid "Runtime information" msgstr "" -msgid "" -"Scan & Add new wireless stations via standard <a href=\"%s\">Wireless " -"Setup</a>" +msgid "SSID" msgstr "" -msgid "" -"Space separated list of interfaces that trigger travelmate processing. To " -"disable event driven (re-)starts remove all entries." +msgid "Scan" +msgstr "" + +msgid "Signal strength" +msgstr "" + +msgid "Specify the secret encryption key here." msgstr "" msgid "Station Interface" @@ -164,9 +215,42 @@ msgstr "" msgid "Trigger delay" msgstr "" +msgid "Unknown" +msgstr "" + +msgid "Uplink / Trigger interface" +msgstr "" + +msgid "Uplink Interface" +msgstr "" + +msgid "Uplink SSID" +msgstr "" + +msgid "Uplink interface" +msgstr "" + msgid "View Logfile" msgstr "" +msgid "WEP" +msgstr "" + +msgid "WEP passphrase" +msgstr "" + +msgid "WPA / WPA2" +msgstr "" + +msgid "WPA passphrase" +msgstr "" + +msgid "Wireless Scan" +msgstr "" + +msgid "Wireless Stations" +msgstr "" + msgid "" "add it to the wan zone of the firewall. This step has only to be done once." msgstr "" @@ -174,6 +258,9 @@ msgstr "" msgid "connected" msgstr "" +msgid "hidden" +msgstr "" + msgid "n/a" msgstr "" diff --git a/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua index 847c98a3e8..bfaacb40bc 100644 --- a/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua +++ b/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua @@ -3,8 +3,20 @@ -- Copyright 2016 Dan Luedtke <mail@danrl.com> -- Licensed to the public under the Apache License 2.0. +local m +local s1 +local ena, mcf, lsv, rlh, rpv, vld, nvd, eds, prt, tlm +local ctl, dlk, dom, dty, lfq, wfq, exa, ctl, d64, pfx, qry, qrs +local pro, tgr, rsc, rsn, ag2 + m = Map("unbound", translate("Recursive DNS"), - translate("Unbound is a validating, recursive, and caching DNS resolver.")) + translatef("<a href=\"%s\" target=\"_blank\">Unbound</a>" + .. " is a validating, recursive, and caching DNS resolver. " + .. "UCI help can be found on " + .. "<a href=\"%s\" target=\"_blank\">github</a>.", + "https://www.unbound.net/", + "https://github.com/openwrt/packages/blob/master/net/unbound/files/README.md")) + s1 = m:section(TypedSection, "unbound") s1.addremove = false @@ -24,19 +36,19 @@ mcf = s1:taboption("service", Flag, "manual_conf", translate("Manual Conf:"), mcf.rmempty = false function ena.cfgvalue(self, section) - return luci.sys.init.enabled("unbound") and self.enabled or self.disabled + return luci.sys.init.enabled("unbound") and self.enabled or self.disabled end function ena.write(self, section, value) - if value == "1" then - luci.sys.init.enable("unbound") - luci.sys.call("/etc/init.d/unbound start >/dev/null") - else - luci.sys.call("/etc/init.d/unbound stop >/dev/null") - luci.sys.init.disable("unbound") - end - - return Flag.write(self, section, value) + if value == "1" then + luci.sys.init.enable("unbound") + luci.sys.call("/etc/init.d/unbound start >/dev/null") + else + luci.sys.call("/etc/init.d/unbound stop >/dev/null") + luci.sys.init.disable("unbound") + end + + return Flag.write(self, section, value) end --Basic Tab @@ -125,6 +137,15 @@ wfq:value("4", translate("Interface FQDN, All Addresses")) wfq:depends({ dhcp_link = "none" }) wfq:depends({ dhcp_link = "odhcpd" }) +exa = s1:taboption("advanced", ListValue, "add_extra_dns", translate("Extra DNS:"), + translate("Use extra DNS entries found in /etc/config/dhcp")) +exa:value("0", translate("Ignore")) +exa:value("1", translate("Include Network/Hostnames")) +exa:value("2", translate("Advanced MX/SRV RR")) +exa:value("3", translate("Advanced CNAME RR")) +exa:depends({ dhcp_link = "none" }) +exa:depends({ dhcp_link = "odhcpd" }) + ctl = s1:taboption("advanced", Flag, "dhcp4_slaac6", translate("DHCPv4 to SLAAC:"), translate("Use DHCPv4 MAC to discover IP6 hosts SLAAC (EUI64)")) ctl.rmempty = false @@ -179,11 +200,17 @@ rsc.rmempty = false ag2 = s1:taboption("resource", Value, "root_age", translate("Root DSKEY Age:"), translate("Limit days between RFC5011 to reduce flash writes")) ag2.datatype = "and(uinteger,min(1),max(99))" -ag2:value("14", "14") -ag2:value("28", "28 ("..translate("default")..")") -ag2:value("45", "45") -ag2:value("90", "90") +ag2:value("3", "3") +ag2:value("9", "9 ("..translate("default")..")") +ag2:value("12", "12") +ag2:value("24", "24") ag2:value("99", "99 ("..translate("never")..")") +tgr = s1:taboption("resource", Value, "trigger", translate("Trigger Networks:"), + translate("Networks that may trigger Unbound to reload (avoid wan6)")) +tgr.template = "cbi/network_netlist" +tgr.widget = "checkbox" +tgr.cast = "string" + return m diff --git a/applications/luci-app-watchcat/po/sv/watchcat.po b/applications/luci-app-watchcat/po/sv/watchcat.po index 0b811bceea..07aa726493 100644 --- a/applications/luci-app-watchcat/po/sv/watchcat.po +++ b/applications/luci-app-watchcat/po/sv/watchcat.po @@ -19,6 +19,8 @@ msgid "" "How often to check internet connection. Default unit is seconds, you can you " "use the suffix 'm' for minutes, 'h' for hours or 'd' for days" msgstr "" +"Hur ofta internet-anslutningen ska kollas. Standardenheten är sekunder, du kan använda " +"tillägget 'm' för minutrar, 't' för timmar eller 'd' för dagar" msgid "" "In periodic mode, it defines the reboot period. In internet mode, it defines " @@ -28,7 +30,7 @@ msgid "" msgstr "" msgid "Operating mode" -msgstr "" +msgstr "Driftsläge" msgid "Period" msgstr "Period" @@ -37,7 +39,7 @@ msgid "Ping host" msgstr "Pinga värd" msgid "Ping period" -msgstr "" +msgstr "Period för pingning" msgid "Watchcat" msgstr "Watchcat" diff --git a/applications/luci-app-wifischedule/po/sv/wifischedule.po b/applications/luci-app-wifischedule/po/sv/wifischedule.po new file mode 100644 index 0000000000..ca4e5aac78 --- /dev/null +++ b/applications/luci-app-wifischedule/po/sv/wifischedule.po @@ -0,0 +1,101 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "Activate wifi" +msgstr "Aktivera wifi" + +msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi" +msgstr "" + +msgid "Could not find required programm /usr/bin/iwinfo" +msgstr "" + +msgid "Cron Jobs" +msgstr "Cron-jobb" + +msgid "Day(s) of Week" +msgstr "Dag(ar) i veckan" + +msgid "Defines a schedule when to turn on and off wifi." +msgstr "Anger ett schema när wifi ska startas och stängas ner." + +msgid "Determine Modules Automatically" +msgstr "Avgör moduler automatiskt" + +msgid "Disable wifi gracefully" +msgstr "Inaktivera wifi elegant" + +msgid "Disabled wifi forced" +msgstr "Inaktivering av wifi påtvingat" + +msgid "Enable" +msgstr "Aktivera" + +msgid "Enable Wifi Schedule" +msgstr "Aktivera Wifi-schema" + +msgid "Enable logging" +msgstr "Aktivera loggning" + +msgid "Force disabling wifi even if stations associated" +msgstr "" + +msgid "Friday" +msgstr "Fredag" + +msgid "Global Settings" +msgstr "Globala inställningar" + +msgid "Monday" +msgstr "Måndag" + +msgid "Saturday" +msgstr "Lördag" + +msgid "Schedule" +msgstr "Schema" + +msgid "Schedule events" +msgstr "Schemalägg händelser" + +msgid "Start Time" +msgstr "Starttid" + +msgid "Start WiFi" +msgstr "Starta WiFi" + +msgid "Stop Time" +msgstr "Stopptid" + +msgid "Stop WiFi" +msgstr "Stoppa WiFi" + +msgid "Sunday" +msgstr "Söndag" + +msgid "The value %s is invalid" +msgstr "Värdet %s är ogiltigt" + +msgid "Thursday" +msgstr "Torsdag" + +msgid "Tuesday" +msgstr "Tisdag" + +msgid "Unload Modules (experimental; saves more power)" +msgstr "Befria moduler (experimentiell; sparar mer ström)" + +msgid "View Cron Jobs" +msgstr "Se Cron-jobb" + +msgid "View Logfile" +msgstr "Se loggfilen" + +msgid "Wednesday" +msgstr "Onsdag" + +msgid "Wifi Schedule" +msgstr "Wifi-schema" + +msgid "Wifi Schedule Logfile" +msgstr "Loggfil för Wifi-schema" diff --git a/applications/luci-app-wireguard/luasrc/view/wireguard.htm b/applications/luci-app-wireguard/luasrc/view/wireguard.htm index 5b5d59a969..5af6232ae6 100644 --- a/applications/luci-app-wireguard/luasrc/view/wireguard.htm +++ b/applications/luci-app-wireguard/luasrc/view/wireguard.htm @@ -17,22 +17,22 @@ data[line[1]] = { name = line[1], public_key = line[3], - listen_port = line[5], - fwmark = line[6], + listen_port = line[4], + fwmark = line[5], peers = { } } else local peer = { public_key = line[2], - endpoint = line[3], + endpoint = line[4], allowed_ips = { }, - latest_handshake = line[5], - transfer_rx = line[6], - transfer_tx = line[7], - persistent_keepalive = line[8] + latest_handshake = line[6], + transfer_rx = line[7], + transfer_tx = line[8], + persistent_keepalive = line[9] } if not (line[4] == '(none)') then - for ipkey, ipvalue in pairs(string.split(line[4], ",")) do + for ipkey, ipvalue in pairs(string.split(line[5], ",")) do if #ipvalue > 0 then table.insert(peer['allowed_ips'], ipvalue) end diff --git a/applications/luci-app-wireguard/po/sv/wireguard.po b/applications/luci-app-wireguard/po/sv/wireguard.po new file mode 100644 index 0000000000..b7e3ed5b58 --- /dev/null +++ b/applications/luci-app-wireguard/po/sv/wireguard.po @@ -0,0 +1,62 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "Allowed IPs" +msgstr "Tillåtna IP-adresser" + +msgid "Collecting data..." +msgstr "Samlar in data..." + +msgid "Configuration" +msgstr "Konfiguration" + +msgid "Data Received" +msgstr "Mottagen data" + +msgid "Data Transmitted" +msgstr "Överförd data" + +msgid "Endpoint" +msgstr "Slutpunkt" + +msgid "Firewall Mark" +msgstr "" + +msgid "Interface" +msgstr "Gränssnitt" + +msgid "Interface does not have a public key!" +msgstr "Gränssnittet har inte en publik nyckel!" + +msgid "Latest Handshake" +msgstr "Senaste handskakning" + +msgid "Listen Port" +msgstr "Lyssningsport" + +msgid "Never" +msgstr "Aldrig" + +msgid "Peer" +msgstr "" + +msgid "Persistent Keepalive" +msgstr "" + +msgid "Public Key" +msgstr "Publik nyckel" + +msgid "WireGuard Status" +msgstr "Status för WireGuard" + +msgid "h ago" +msgstr "t sedan" + +msgid "m ago" +msgstr "m sedan" + +msgid "over a day ago" +msgstr "över en dag sedan" + +msgid "s ago" +msgstr "s sedan" diff --git a/applications/luci-app-wol/po/sv/wol.po b/applications/luci-app-wol/po/sv/wol.po index 5b3e923476..923d4fdbac 100644 --- a/applications/luci-app-wol/po/sv/wol.po +++ b/applications/luci-app-wol/po/sv/wol.po @@ -18,13 +18,13 @@ msgstr "" "använda" msgid "Host to wake up" -msgstr "Värd som ska väckas upp" +msgstr "Värd att väcka upp" msgid "Network interface to use" -msgstr "Nätverksgränssnitt som ska användas" +msgstr "Nätverksgränssnitt att använda" msgid "Send to broadcast address" -msgstr "" +msgstr "Skicka till sändningsadress" msgid "" "Sometimes only one of the two tools works. If one fails, try the other one" diff --git a/collections/luci-ssl/Makefile b/collections/luci-ssl/Makefile index 8fb8ff4627..399c982d22 100644 --- a/collections/luci-ssl/Makefile +++ b/collections/luci-ssl/Makefile @@ -12,6 +12,8 @@ LUCI_BASENAME:=ssl LUCI_TITLE:=LuCI with HTTPS support (mbedTLS as SSL backend) LUCI_DEPENDS:=+luci +libustream-mbedtls +px5g +PKG_LICENSE:=Apache-2.0 + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/collections/luci/Makefile b/collections/luci/Makefile index 4625c95f24..9b495c3187 100644 --- a/collections/luci/Makefile +++ b/collections/luci/Makefile @@ -12,7 +12,10 @@ LUCI_BASENAME:=luci LUCI_TITLE:=Standard OpenWrt set including full admin with ppp support and the default Bootstrap theme LUCI_DEPENDS:= \ +uhttpd +uhttpd-mod-ubus +luci-mod-admin-full +luci-theme-bootstrap \ - +luci-app-firewall +luci-proto-ppp +libiwinfo-lua +IPV6:luci-proto-ipv6 + +luci-app-firewall +luci-proto-ppp +libiwinfo-lua +IPV6:luci-proto-ipv6 \ + +rpcd-mod-rrdns + +PKG_LICENSE:=Apache-2.0 include ../../luci.mk diff --git a/libs/luci-lib-ip/Makefile b/libs/luci-lib-ip/Makefile index eb80dcb258..15cb537cff 100644 --- a/libs/luci-lib-ip/Makefile +++ b/libs/luci-lib-ip/Makefile @@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Lua library for IP calculation and routing information LUCI_DEPENDS:=+liblua +libnl-tiny +PKG_LICENSE:=Apache-2.0 + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/libs/luci-lib-json/Makefile b/libs/luci-lib-json/Makefile index 069886d5c3..ededc1f650 100644 --- a/libs/luci-lib-json/Makefile +++ b/libs/luci-lib-json/Makefile @@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI JSON library LUCI_DEPENDS:= +PKG_LICENSE:=Apache-2.0 + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/libs/luci-lib-nixio/Makefile b/libs/luci-lib-nixio/Makefile index 41800fe54b..bec5f83cda 100644 --- a/libs/luci-lib-nixio/Makefile +++ b/libs/luci-lib-nixio/Makefile @@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=NIXIO POSIX library LUCI_DEPENDS:=+PACKAGE_luci-lib-nixio_openssl:libopenssl +PACKAGE_luci-lib-nixio_cyassl:libcyassl +liblua +PKG_LICENSE:=Apache-2.0 + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/libs/luci-lib-px5g/Makefile b/libs/luci-lib-px5g/Makefile index 70b95e8505..eefee107e8 100644 --- a/libs/luci-lib-px5g/Makefile +++ b/libs/luci-lib-px5g/Makefile @@ -10,6 +10,7 @@ LUCI_TITLE:=RSA/X.509 Key Generator (required for LuCId SSL support) LUCI_DEPENDS:=+liblua PKG_USE_MIPS16:=0 +PKG_LICENSE:=LGPL-2.1 include ../../luci.mk diff --git a/libs/rpcd-mod-rrdns/Makefile b/libs/rpcd-mod-rrdns/Makefile new file mode 100644 index 0000000000..f0bf140a87 --- /dev/null +++ b/libs/rpcd-mod-rrdns/Makefile @@ -0,0 +1,47 @@ +# +# Copyright (C) 2016-2017 Jo-Philipp Wich <jo@mein.io> +# +# Licensed under the Apache License, Version 2.0. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=rpcd-mod-rrdns +PKG_VERSION:=20170710 +PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io> + +PKG_LICENSE:=Apache-2.0 + +PKG_BUILD_PARALLEL:=1 + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/cmake.mk + +define Build/Prepare + $(INSTALL_DIR) $(PKG_BUILD_DIR) + $(CP) ./src/* $(PKG_BUILD_DIR)/ +endef + +define Package/rpcd-mod-rrdns + SECTION:=libs + CATEGORY:=Libraries + TITLE:=Rapid reverse DNS rpcd module + DEPENDS:=+rpcd +libubox +libubus +endef + +define Package/rpcd-mod-rrdns/description + Provides rapid mass reverse DNS lookup functionality. +endef + +define Package/rpcd-mod-rrdns/install + $(INSTALL_DIR) $(1)/usr/lib/rpcd + $(INSTALL_BIN) $(PKG_BUILD_DIR)/rrdns.so $(1)/usr/lib/rpcd/ +endef + +define Package/rpcd-mod-rrdns/postinst +#!/bin/sh +killall -HUP rpcd 2>/dev/null +exit 0 +endef + +$(eval $(call BuildPackage,rpcd-mod-rrdns)) diff --git a/libs/rpcd-mod-rrdns/src/CMakeLists.txt b/libs/rpcd-mod-rrdns/src/CMakeLists.txt new file mode 100644 index 0000000000..ace6ac8664 --- /dev/null +++ b/libs/rpcd-mod-rrdns/src/CMakeLists.txt @@ -0,0 +1,23 @@ +cmake_minimum_required(VERSION 2.6) + +PROJECT(rpcd-mod-rrdns C) + +ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -g3 -Wmissing-declarations) + +SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") + +IF(APPLE) + INCLUDE_DIRECTORIES(/opt/local/include) + LINK_DIRECTORIES(/opt/local/lib) +ENDIF() + +FIND_LIBRARY(resolv NAMES resolv) +IF(resolv STREQUAL "LIBS-NOTFOUND") + SET(resolv "") +ENDIF() + +ADD_LIBRARY(rpcd-mod-rrdns MODULE rrdns.c) +TARGET_LINK_LIBRARIES(rpcd-mod-rrdns ubox ubus ${resolv}) +SET_TARGET_PROPERTIES(rpcd-mod-rrdns PROPERTIES OUTPUT_NAME rrdns PREFIX "") + +INSTALL(TARGETS rpcd-mod-rrdns LIBRARY DESTINATION lib) diff --git a/libs/rpcd-mod-rrdns/src/rrdns.c b/libs/rpcd-mod-rrdns/src/rrdns.c new file mode 100644 index 0000000000..691db9c8fa --- /dev/null +++ b/libs/rpcd-mod-rrdns/src/rrdns.c @@ -0,0 +1,389 @@ +/* + * rrdns - Rapid Reverse DNS lookup plugin for the UBUS RPC server + * + * Copyright (C) 2016 Jo-Philipp Wich <jow@openwrt.org> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <stdio.h> +#include <string.h> +#include <errno.h> +#include <stdint.h> +#include <stdlib.h> +#include <unistd.h> + +#include <arpa/nameser.h> +#include <arpa/inet.h> + +#include <sys/types.h> +#include <sys/socket.h> + +#include <resolv.h> + +#include <libubox/avl.h> +#include <libubox/usock.h> +#include <libubox/uloop.h> + +#include <rpcd/plugin.h> + +#include "rrdns.h" + + +enum { + RPC_L_ADDRS, + RPC_L_TIMEOUT, + RPC_L_SERVER, + RPC_L_PORT, + RPC_L_LIMIT, + __RPC_L_MAX, +}; + +static const struct blobmsg_policy rpc_lookup_policy[__RPC_L_MAX] = { + [RPC_L_ADDRS] = { .name = "addrs", .type = BLOBMSG_TYPE_ARRAY }, + [RPC_L_TIMEOUT] = { .name = "timeout", .type = BLOBMSG_TYPE_INT32 }, + [RPC_L_SERVER] = { .name = "server", .type = BLOBMSG_TYPE_STRING }, + [RPC_L_PORT] = { .name = "port", .type = BLOBMSG_TYPE_INT16 }, + [RPC_L_LIMIT] = { .name = "limit", .type = BLOBMSG_TYPE_INT32 }, +}; + + +static int +rrdns_cmp_id(const void *k1, const void *k2, void *ptr) +{ + const uint16_t *id1 = k1, *id2 = k2; + return (*id1 - *id2); +} + +static int +rrdns_cmp_addr(const void *k1, const void *k2, void *ptr) +{ + const struct in6_addr *a1 = k1, *a2 = k2; + return memcmp(a1, a2, sizeof(*a1)); +} + +static int +rrdns_parse_response(struct rrdns_context *rctx) +{ + int n, len; + uint16_t id; + struct rrdns_request *req; + unsigned char res[512]; + char buf[INET6_ADDRSTRLEN], dname[MAXDNAME]; + HEADER *hdr; + ns_msg handle; + ns_rr rr; + + len = recv(rctx->socket.fd, res, sizeof(res), 0); + + if (len < sizeof(*hdr)) + return -ENODATA; + + hdr = (HEADER *)res; + id = hdr->id; + req = avl_find_element(&rctx->request_ids, &id, req, by_id); + + if (!req) + return -ENOENT; + + avl_delete(&rctx->request_ids, &req->by_id); + + if (ns_initparse(res, len, &handle)) + return -EINVAL; + + for (n = 0; n < ns_msg_count(handle, ns_s_an); n++) { + if (ns_parserr(&handle, ns_s_an, n, &rr)) + return -EINVAL; + + if (ns_rr_type(rr) != ns_t_ptr) + continue; + + if (ns_name_uncompress(ns_msg_base(handle), ns_msg_end(handle), + ns_rr_rdata(rr), dname, sizeof(dname)) < 0) + return -EINVAL; + + inet_ntop(req->family, &req->addr, buf, sizeof(buf)); + blobmsg_add_string(&rctx->blob, buf, dname); + } + + return 0; +} + +static int +rrdns_next_query(struct rrdns_context *rctx) +{ + const char *addr = NULL, *hex = "0123456789abcdef"; + struct rrdns_request *req; + int i, alen, family; + char *p, dname[73]; + + union { + unsigned char uchar[4]; + struct in6_addr in6; + struct in_addr in; + } a = { }; + + union { + unsigned char buf[512]; + HEADER hdr; + } msg; + + if (rctx->addr_rem > 0 && + blob_pad_len(rctx->addr_cur) <= rctx->addr_rem && + blob_pad_len(rctx->addr_cur) >= sizeof(struct blob_attr)) { + + addr = blobmsg_get_string(rctx->addr_cur); + rctx->addr_rem -= blob_pad_len(rctx->addr_cur); + rctx->addr_cur = blob_next(rctx->addr_cur); + } + + if (!addr) + return 0; + + if (inet_pton(AF_INET6, addr, &a.in6)) { + memset(dname, 0, sizeof(dname)); + + for (i = 0, p = dname; i < 16; i++) { + *p++ = hex[a.in6.s6_addr[15-i] % 16]; + *p++ = '.'; + *p++ = hex[a.in6.s6_addr[15-i] / 16]; + *p++ = '.'; + } + + p += snprintf(p, p - dname - 1, "ip6.arpa"); + + family = AF_INET6; + alen = p - dname; + } + else if (inet_pton(AF_INET, addr, &a.in)) { + family = AF_INET; + alen = snprintf(dname, sizeof(dname), "%u.%u.%u.%u.in-addr.arpa", + a.uchar[3], a.uchar[2], a.uchar[1], a.uchar[0]); + } + else { + return -EINVAL; + } + + alen = res_mkquery(QUERY, dname, C_IN, T_PTR, NULL, 0, NULL, + msg.buf, sizeof(msg.buf)); + + if (alen < 0) + return alen; + + if (avl_find(&rctx->request_addrs, &a.in6)) + return -ENOTUNIQ; + + if (send(rctx->socket.fd, msg.buf, alen, 0) != alen) + return -errno; + + req = calloc(1, sizeof(*req)); + + if (!req) + return -ENOMEM; + + req->id = msg.hdr.id; + req->by_id.key = &req->id; + avl_insert(&rctx->request_ids, &req->by_id); + + req->family = family; + req->addr.in6 = a.in6; + req->by_addr.key = &req->addr.in6; + avl_insert(&rctx->request_addrs, &req->by_addr); + + return 0; +} + +static void +rdns_shutdown(struct rrdns_context *rctx) +{ + struct rrdns_request *req, *tmp; + + uloop_timeout_cancel(&rctx->timeout); + uloop_fd_delete(&rctx->socket); + + close(rctx->socket.fd); + + ubus_send_reply(rctx->context, &rctx->request, rctx->blob.head); + ubus_complete_deferred_request(rctx->context, &rctx->request, + UBUS_STATUS_OK); + + avl_remove_all_elements(&rctx->request_addrs, req, by_addr, tmp) + free(req); + + blob_buf_free(&rctx->blob); + free(rctx); +} + +static void +rrdns_handle_timeout(struct uloop_timeout *utm) +{ + struct rrdns_context *rctx = + container_of(utm, struct rrdns_context, timeout); + + rdns_shutdown(rctx); +} + +static void +rrdns_handle_response(struct uloop_fd *ufd, unsigned int ev) +{ + struct rrdns_context *rctx = + container_of(ufd, struct rrdns_context, socket); + + int err = rrdns_parse_response(rctx); + + if (err != -ENODATA && err != -ENOENT) + rrdns_next_query(rctx); + + if (avl_is_empty(&rctx->request_ids)) + rdns_shutdown(rctx); +} + +static char * +rrdns_find_nameserver(void) +{ + static char line[2*INET6_ADDRSTRLEN]; + struct in6_addr in6; + FILE *resolvconf; + char *p; + + resolvconf = fopen("/etc/resolv.conf", "r"); + + if (!resolvconf) + return NULL; + + while (fgets(line, sizeof(line), resolvconf)) { + p = strtok(line, " \t"); + + if (!p || strcmp(p, "nameserver")) + continue; + + p = strtok(NULL, " \t\r\n"); + + if (!p) + continue; + + if (!inet_pton(AF_INET6, p, &in6) && !inet_pton(AF_INET, p, &in6)) + continue; + + fclose(resolvconf); + return p; + } + + fclose(resolvconf); + return NULL; +} + +static int +rpc_rrdns_lookup(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) +{ + int port = 53, limit = RRDNS_DEF_LIMIT, timeout = RRDNS_DEF_TIMEOUT; + struct blob_attr *tb[__RPC_L_MAX]; + struct rrdns_context *rctx; + const char *server = NULL; + + blobmsg_parse(rpc_lookup_policy, __RPC_L_MAX, tb, + blob_data(msg), blob_len(msg)); + + if (tb[RPC_L_PORT]) + port = blobmsg_get_u16(tb[RPC_L_PORT]); + + if (tb[RPC_L_LIMIT]) + limit = blobmsg_get_u32(tb[RPC_L_LIMIT]); + + if (tb[RPC_L_TIMEOUT]) + timeout = blobmsg_get_u32(tb[RPC_L_TIMEOUT]); + + if (tb[RPC_L_SERVER]) + server = blobmsg_get_string(tb[RPC_L_SERVER]); + + + if (!tb[RPC_L_ADDRS]) + return UBUS_STATUS_INVALID_ARGUMENT; + + if (port <= 0) + return UBUS_STATUS_INVALID_ARGUMENT; + + if (limit <= 0 || limit > RRDNS_MAX_LIMIT) + return UBUS_STATUS_INVALID_ARGUMENT; + + if (timeout <= 0 || timeout > RRDNS_MAX_TIMEOUT) + return UBUS_STATUS_INVALID_ARGUMENT; + + + if (!server || !*server) + server = rrdns_find_nameserver(); + + if (!server) + return UBUS_STATUS_NOT_FOUND; + + rctx = calloc(1, sizeof(*rctx)); + + if (!rctx) + return UBUS_STATUS_UNKNOWN_ERROR; + + rctx->socket.fd = usock(USOCK_UDP, server, usock_port(port)); + + if (rctx->socket.fd < 0) { + free(rctx); + return UBUS_STATUS_UNKNOWN_ERROR; + } + + rctx->context = ctx; + rctx->addr_cur = blobmsg_data(tb[RPC_L_ADDRS]); + rctx->addr_rem = blobmsg_data_len(tb[RPC_L_ADDRS]); + + avl_init(&rctx->request_ids, rrdns_cmp_id, false, NULL); + avl_init(&rctx->request_addrs, rrdns_cmp_addr, false, NULL); + + rctx->timeout.cb = rrdns_handle_timeout; + uloop_timeout_set(&rctx->timeout, timeout); + + rctx->socket.cb = rrdns_handle_response; + uloop_fd_add(&rctx->socket, ULOOP_READ); + + blob_buf_init(&rctx->blob, 0); + + while (limit--) + rrdns_next_query(rctx); + + ubus_defer_request(ctx, req, &rctx->request); + + return UBUS_STATUS_OK; +} + + +static int +rpc_rrdns_api_init(const struct rpc_daemon_ops *o, struct ubus_context *ctx) +{ + static const struct ubus_method rrdns_methods[] = { + UBUS_METHOD("lookup", rpc_rrdns_lookup, rpc_lookup_policy), + }; + + static struct ubus_object_type rrdns_type = + UBUS_OBJECT_TYPE("rpcd-rrdns", rrdns_methods); + + static struct ubus_object obj = { + .name = "network.rrdns", + .type = &rrdns_type, + .methods = rrdns_methods, + .n_methods = ARRAY_SIZE(rrdns_methods), + }; + + return ubus_add_object(ctx, &obj); +} + +struct rpc_plugin rpc_plugin = { + .init = rpc_rrdns_api_init +}; diff --git a/libs/rpcd-mod-rrdns/src/rrdns.h b/libs/rpcd-mod-rrdns/src/rrdns.h new file mode 100644 index 0000000000..3f95116f08 --- /dev/null +++ b/libs/rpcd-mod-rrdns/src/rrdns.h @@ -0,0 +1,51 @@ +/* + * rrdns - Rapid Reverse DNS lookup plugin for the UBUS RPC server + * + * Copyright (C) 2016-2017 Jo-Philipp Wich <jo@mein.io> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <libubus.h> +#include <libubox/avl.h> +#include <libubox/uloop.h> + +#define RRDNS_MAX_TIMEOUT 5000 +#define RRDNS_DEF_TIMEOUT 250 + +#define RRDNS_MAX_LIMIT 1000 +#define RRDNS_DEF_LIMIT 10 + + +struct rrdns_request { + struct avl_node by_id; + struct avl_node by_addr; + uint16_t id; + uint16_t family; + union { + struct in_addr in; + struct in6_addr in6; + } addr; +}; + +struct rrdns_context { + struct ubus_context *context; + struct ubus_request_data request; + struct uloop_timeout timeout; + struct blob_attr *addr_cur; + int addr_rem; + struct uloop_fd socket; + struct blob_buf blob; + struct avl_tree request_ids; + struct avl_tree request_addrs; +}; diff --git a/modules/luci-base/Makefile b/modules/luci-base/Makefile index 753ff259fa..cc57ce8ee1 100644 --- a/modules/luci-base/Makefile +++ b/modules/luci-base/Makefile @@ -17,6 +17,7 @@ LUCI_DEPENDS:=+lua +libuci-lua +luci-lib-nixio +luci-lib-ip +rpcd +libubus-lua + PKG_SOURCE:=LuaSrcDiet-0.12.1.tar.bz2 PKG_SOURCE_URL:=https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/luasrcdiet PKG_MD5SUM:=ed7680f2896269ae8633756e7edcf09050812f78c8f49e280e63c30d14f35aea +PKG_LICENSE:=Apache-2.0 HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/LuaSrcDiet-0.12.1 diff --git a/modules/luci-base/htdocs/luci-static/resources/cbi.js b/modules/luci-base/htdocs/luci-static/resources/cbi.js index 8e66cbc380..4be917d098 100644 --- a/modules/luci-base/htdocs/luci-static/resources/cbi.js +++ b/modules/luci-base/htdocs/luci-static/resources/cbi.js @@ -727,7 +727,7 @@ function cbi_filebrowser(id, defpath) { browser.focus(); } -function cbi_browser_init(id, defpath) +function cbi_browser_init(id, resource, defpath) { function cbi_browser_btnclick(e) { cbi_filebrowser(id, defpath); @@ -738,7 +738,7 @@ function cbi_browser_init(id, defpath) var btn = document.createElement('img'); btn.className = 'cbi-image-button'; - btn.src = cbi_strings.path.resource + '/cbi/folder.gif'; + btn.src = (resource || cbi_strings.path.resource) + '/cbi/folder.gif'; field.parentNode.insertBefore(btn, field.nextSibling); cbi_bind(btn, 'click', cbi_browser_btnclick); @@ -805,7 +805,7 @@ function cbi_dynlist_init(parent, datatype, optional, choices) parent.appendChild(b); if (datatype == 'file') { - cbi_browser_init(t.id, parent.getAttribute('data-browser-path')); + cbi_browser_init(t.id, null, parent.getAttribute('data-browser-path')); } parent.appendChild(document.createElement('br')); diff --git a/modules/luci-base/luasrc/dispatcher.lua b/modules/luci-base/luasrc/dispatcher.lua index 0bd19456f2..1b684aa79c 100644 --- a/modules/luci-base/luasrc/dispatcher.lua +++ b/modules/luci-base/luasrc/dispatcher.lua @@ -14,8 +14,6 @@ uci = require "luci.model.uci" i18n = require "luci.i18n" _M.fs = fs -authenticator = {} - -- Index table local index = nil @@ -101,24 +99,6 @@ function error500(message) return false end -function authenticator.htmlauth(validator, accs, default, template) - local user = http.formvalue("luci_username") - local pass = http.formvalue("luci_password") - - if user and validator(user, pass) then - return user - end - - require("luci.i18n") - require("luci.template") - context.path = {} - http.status(403, "Forbidden") - luci.template.render(template or "sysauth", {duser=default, fuser=user}) - - return false - -end - function httpdispatch(request, prefix) http.context.request = request @@ -188,6 +168,44 @@ function test_post_security() return true end +local function session_retrieve(sid, allowed_users) + local sdat = util.ubus("session", "get", { ubus_rpc_session = sid }) + + if type(sdat) == "table" and + type(sdat.values) == "table" and + type(sdat.values.token) == "string" and + (not allowed_users or + util.contains(allowed_users, sdat.values.username)) + then + return sid, sdat.values + end + + return nil, nil +end + +local function session_setup(user, pass, allowed_users) + if util.contains(allowed_users, user) then + local login = util.ubus("session", "login", { + username = user, + password = pass, + timeout = tonumber(luci.config.sauth.sessiontime) + }) + + if type(login) == "table" and + type(login.ubus_rpc_session) == "string" + then + util.ubus("session", "set", { + ubus_rpc_session = login.ubus_rpc_session, + values = { token = sys.uniqueid(16) } + }) + + return session_retrieve(login.ubus_rpc_session) + end + end + + return nil, nil +end + function dispatch(request) --context._disable_memtrace = require "luci.debug".trap_memtrace("l") local ctx = context @@ -332,74 +350,65 @@ function dispatch(request) ) if track.sysauth then - local authen = type(track.sysauth_authenticator) == "function" - and track.sysauth_authenticator - or authenticator[track.sysauth_authenticator] + local authen = track.sysauth_authenticator + local _, sid, sdat, default_user, allowed_users - local def = (type(track.sysauth) == "string") and track.sysauth - local accs = def and {track.sysauth} or track.sysauth - local sess = ctx.authsession - if not sess then - sess = http.getcookie("sysauth") - sess = sess and sess:match("^[a-f0-9]*$") + if type(authen) == "string" and authen ~= "htmlauth" then + error500("Unsupported authenticator %q configured" % authen) + return end - local sdat = (util.ubus("session", "get", { ubus_rpc_session = sess }) or { }).values - local user, token + if type(track.sysauth) == "table" then + default_user, allowed_users = nil, track.sysauth + else + default_user, allowed_users = track.sysauth, { track.sysauth } + end - if sdat then - user = sdat.user - token = sdat.token + if type(authen) == "function" then + _, sid = authen(sys.user.checkpasswd, allowed_users) else - local eu = http.getenv("HTTP_AUTH_USER") - local ep = http.getenv("HTTP_AUTH_PASS") - if eu and ep and sys.user.checkpasswd(eu, ep) then - authen = function() return eu end - end + sid = http.getcookie("sysauth") end - if not util.contains(accs, user) then - if authen then - local user, sess = authen(sys.user.checkpasswd, accs, def, track.sysauth_template) - local token - if not user or not util.contains(accs, user) then - return - else - if not sess then - local sdat = util.ubus("session", "create", { timeout = tonumber(luci.config.sauth.sessiontime) }) - if sdat then - token = sys.uniqueid(16) - util.ubus("session", "set", { - ubus_rpc_session = sdat.ubus_rpc_session, - values = { - user = user, - token = token, - section = sys.uniqueid(16) - } - }) - sess = sdat.ubus_rpc_session - end - end + sid, sdat = session_retrieve(sid, allowed_users) - if sess and token then - http.header("Set-Cookie", 'sysauth=%s; path=%s' %{ sess, build_url() }) + if not (sid and sdat) and authen == "htmlauth" then + local user = http.getenv("HTTP_AUTH_USER") + local pass = http.getenv("HTTP_AUTH_PASS") - ctx.authsession = sess - ctx.authtoken = token - ctx.authuser = user + if user == nil and pass == nil then + user = http.formvalue("luci_username") + pass = http.formvalue("luci_password") + end + + sid, sdat = session_setup(user, pass, allowed_users) + + if not sid then + local tmpl = require "luci.template" + + context.path = {} - http.redirect(build_url(unpack(ctx.requestpath))) - end - end - else http.status(403, "Forbidden") + tmpl.render(track.sysauth_template or "sysauth", { + duser = default_user, + fuser = user + }) + return end - else - ctx.authsession = sess - ctx.authtoken = token - ctx.authuser = user + + http.header("Set-Cookie", 'sysauth=%s; path=%s' %{ sid, build_url() }) + http.redirect(build_url(unpack(ctx.requestpath))) end + + if not sid or not sdat then + http.status(403, "Forbidden") + return + end + + ctx.authsession = sid + ctx.authtoken = sdat.token + ctx.authuser = sdat.username end if c and require_post_security(c.target) then diff --git a/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua b/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua index f49fed4a56..3f8b091cf3 100644 --- a/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua +++ b/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua @@ -63,6 +63,15 @@ if luci.model.network:has_ipv6() then ip6prefix.datatype = "ip6addr" ip6prefix:depends("ip6assign", "") + local ip6ifaceid = s:taboption("general", Value, "ip6ifaceid", translate("IPv6 suffix"), + translate("Optional. Allowed values: 'eui64', 'random', fixed value like '::1' " .. + "or '::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a " .. + "delegating server, use the suffix (like '::1') to form the IPv6 address " .. + "('a:b:c:d::1') for the interface.")) + ip6ifaceid.datatype = "ip6hostid" + ip6ifaceid.placeholder = "::1" + ip6ifaceid.rmempty = true + end diff --git a/modules/luci-base/luasrc/sys.lua b/modules/luci-base/luasrc/sys.lua index a97271732a..99f3ee2919 100644 --- a/modules/luci-base/luasrc/sys.lua +++ b/modules/luci-base/luasrc/sys.lua @@ -117,45 +117,12 @@ end net = {} --- The following fields are defined for arp entry objects: --- { "IP address", "HW address", "HW type", "Flags", "Mask", "Device" } -function net.arptable(callback) - local arp = (not callback) and {} or nil - local e, r, v - if fs.access("/proc/net/arp") then - for e in io.lines("/proc/net/arp") do - local r = { }, v - for v in e:gmatch("%S+") do - r[#r+1] = v - end - - if r[1] ~= "IP" then - local x = { - ["IP address"] = r[1], - ["HW type"] = r[2], - ["Flags"] = r[3], - ["HW address"] = r[4], - ["Mask"] = r[5], - ["Device"] = r[6] - } - - if callback then - callback(x) - else - arp = arp or { } - arp[#arp+1] = x - end - end - end - end - return arp -end - local function _nethints(what, callback) local _, k, e, mac, ip, name local cur = uci.cursor() local ifn = { } local hosts = { } + local lookup = { } local function _add(i, ...) local k = select(i, ...) @@ -224,8 +191,20 @@ local function _nethints(what, callback) end end + for _, e in pairs(hosts) do + lookup[#lookup+1] = (what > 1) and e[what] or (e[2] or e[3]) + end + + if #lookup > 0 then + lookup = luci.util.ubus("network.rrdns", "lookup", { + addrs = lookup, + timeout = 250, + limit = 1000 + }) or { } + end + for _, e in luci.util.kspairs(hosts) do - callback(e[1], e[2], e[3], e[4]) + callback(e[1], e[2], e[3], lookup[e[2]] or lookup[e[3]] or e[4]) end end @@ -234,17 +213,17 @@ end function net.mac_hints(callback) if callback then _nethints(1, function(mac, v4, v6, name) - name = name or nixio.getnameinfo(v4 or v6, nil, 100) or v4 + name = name or v4 if name and name ~= mac then - callback(mac, name or nixio.getnameinfo(v4 or v6, nil, 100) or v4) + callback(mac, name or v4) end end) else local rv = { } _nethints(1, function(mac, v4, v6, name) - name = name or nixio.getnameinfo(v4 or v6, nil, 100) or v4 + name = name or v4 if name and name ~= mac then - rv[#rv+1] = { mac, name or nixio.getnameinfo(v4 or v6, nil, 100) or v4 } + rv[#rv+1] = { mac, name or v4 } end end) return rv @@ -256,7 +235,7 @@ end function net.ipv4_hints(callback) if callback then _nethints(2, function(mac, v4, v6, name) - name = name or nixio.getnameinfo(v4, nil, 100) or mac + name = name or mac if name and name ~= v4 then callback(v4, name) end @@ -264,7 +243,7 @@ function net.ipv4_hints(callback) else local rv = { } _nethints(2, function(mac, v4, v6, name) - name = name or nixio.getnameinfo(v4, nil, 100) or mac + name = name or mac if name and name ~= v4 then rv[#rv+1] = { v4, name } end @@ -278,7 +257,7 @@ end function net.ipv6_hints(callback) if callback then _nethints(3, function(mac, v4, v6, name) - name = name or nixio.getnameinfo(v6, nil, 100) or mac + name = name or mac if name and name ~= v6 then callback(v6, name) end @@ -286,7 +265,7 @@ function net.ipv6_hints(callback) else local rv = { } _nethints(3, function(mac, v4, v6, name) - name = name or nixio.getnameinfo(v6, nil, 100) or mac + name = name or mac if name and name ~= v6 then rv[#rv+1] = { v6, name } end @@ -378,145 +357,6 @@ function net.devices() end -function net.deviceinfo() - local devs = {} - for k, v in ipairs(nixio.getifaddrs()) do - if v.family == "packet" then - local d = v.data - d[1] = d.rx_bytes - d[2] = d.rx_packets - d[3] = d.rx_errors - d[4] = d.rx_dropped - d[5] = 0 - d[6] = 0 - d[7] = 0 - d[8] = d.multicast - d[9] = d.tx_bytes - d[10] = d.tx_packets - d[11] = d.tx_errors - d[12] = d.tx_dropped - d[13] = 0 - d[14] = d.collisions - d[15] = 0 - d[16] = 0 - devs[v.name] = d - end - end - return devs -end - - --- The following fields are defined for route entry tables: --- { "dest", "gateway", "metric", "refcount", "usecount", "irtt", --- "flags", "device" } -function net.routes(callback) - local routes = { } - - for line in io.lines("/proc/net/route") do - - local dev, dst_ip, gateway, flags, refcnt, usecnt, metric, - dst_mask, mtu, win, irtt = line:match( - "([^%s]+)\t([A-F0-9]+)\t([A-F0-9]+)\t([A-F0-9]+)\t" .. - "(%d+)\t(%d+)\t(%d+)\t([A-F0-9]+)\t(%d+)\t(%d+)\t(%d+)" - ) - - if dev then - gateway = luci.ip.Hex( gateway, 32, luci.ip.FAMILY_INET4 ) - dst_mask = luci.ip.Hex( dst_mask, 32, luci.ip.FAMILY_INET4 ) - dst_ip = luci.ip.Hex( - dst_ip, dst_mask:prefix(dst_mask), luci.ip.FAMILY_INET4 - ) - - local rt = { - dest = dst_ip, - gateway = gateway, - metric = tonumber(metric), - refcount = tonumber(refcnt), - usecount = tonumber(usecnt), - mtu = tonumber(mtu), - window = tonumber(window), - irtt = tonumber(irtt), - flags = tonumber(flags, 16), - device = dev - } - - if callback then - callback(rt) - else - routes[#routes+1] = rt - end - end - end - - return routes -end - --- The following fields are defined for route entry tables: --- { "source", "dest", "nexthop", "metric", "refcount", "usecount", --- "flags", "device" } -function net.routes6(callback) - if fs.access("/proc/net/ipv6_route", "r") then - local routes = { } - - for line in io.lines("/proc/net/ipv6_route") do - - local dst_ip, dst_prefix, src_ip, src_prefix, nexthop, - metric, refcnt, usecnt, flags, dev = line:match( - "([a-f0-9]+) ([a-f0-9]+) " .. - "([a-f0-9]+) ([a-f0-9]+) " .. - "([a-f0-9]+) ([a-f0-9]+) " .. - "([a-f0-9]+) ([a-f0-9]+) " .. - "([a-f0-9]+) +([^%s]+)" - ) - - if dst_ip and dst_prefix and - src_ip and src_prefix and - nexthop and metric and - refcnt and usecnt and - flags and dev - then - src_ip = luci.ip.Hex( - src_ip, tonumber(src_prefix, 16), luci.ip.FAMILY_INET6, false - ) - - dst_ip = luci.ip.Hex( - dst_ip, tonumber(dst_prefix, 16), luci.ip.FAMILY_INET6, false - ) - - nexthop = luci.ip.Hex( nexthop, 128, luci.ip.FAMILY_INET6, false ) - - local rt = { - source = src_ip, - dest = dst_ip, - nexthop = nexthop, - metric = tonumber(metric, 16), - refcount = tonumber(refcnt, 16), - usecount = tonumber(usecnt, 16), - flags = tonumber(flags, 16), - device = dev, - - -- lua number is too small for storing the metric - -- add a metric_raw field with the original content - metric_raw = metric - } - - if callback then - callback(rt) - else - routes[#routes+1] = rt - end - end - end - - return routes - end -end - -function net.pingtest(host) - return os.execute("ping -c1 '"..host:gsub("'", '').."' >/dev/null 2>&1") -end - - process = {} function process.info(key) diff --git a/modules/luci-base/po/ca/base.po b/modules/luci-base/po/ca/base.po index def4c10261..9f4efdd1f1 100644 --- a/modules/luci-base/po/ca/base.po +++ b/modules/luci-base/po/ca/base.po @@ -419,9 +419,6 @@ msgstr "Estacions associades" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Autenticació" @@ -1449,6 +1446,9 @@ msgstr "Longitud de prefix IPv6" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "Adreça IPv6" @@ -1555,6 +1555,9 @@ msgstr "Paquets instal·lats" msgid "Interface" msgstr "Interfície" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "Configuració d'interfície" @@ -1680,9 +1683,6 @@ msgstr "Duració de validitat d'arrendament" msgid "Leasefile" msgstr "Fitxer d'arrendament" -msgid "Leasetime" -msgstr "Duració d'arrendament" - msgid "Leasetime remaining" msgstr "Duració d'arrendament restant" @@ -2184,15 +2184,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3668,10 +3672,6 @@ msgstr "qualsevol" msgid "auto" msgstr "auto" -#, fuzzy -msgid "automatic" -msgstr "estàtic" - msgid "baseT" msgstr "" @@ -3748,9 +3748,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "no" @@ -3784,12 +3781,6 @@ msgstr "encaminat" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3826,6 +3817,13 @@ msgstr "sí" msgid "« Back" msgstr "« Enrere" +#~ msgid "Leasetime" +#~ msgstr "Duració d'arrendament" + +#, fuzzy +#~ msgid "automatic" +#~ msgstr "estàtic" + #~ msgid "AR Support" #~ msgstr "Suport AR" diff --git a/modules/luci-base/po/cs/base.po b/modules/luci-base/po/cs/base.po index b76b66ceeb..9efe3b7d8e 100644 --- a/modules/luci-base/po/cs/base.po +++ b/modules/luci-base/po/cs/base.po @@ -419,9 +419,6 @@ msgstr "Připojení klienti" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Autentizace" @@ -1460,6 +1457,9 @@ msgstr "Délka IPv6 prefixu" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "IPv6 adresa" @@ -1566,6 +1566,9 @@ msgstr "Nainstalované balíčky" msgid "Interface" msgstr "Rozhraní" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "Konfigurace rozhraní" @@ -1693,9 +1696,6 @@ msgstr "Doba platnosti zápůjčky" msgid "Leasefile" msgstr "Soubor zájpůjček" -msgid "Leasetime" -msgstr "Doba trvání zápůjčky" - msgid "Leasetime remaining" msgstr "Zbývající doba trvání zápůjčky" @@ -2205,15 +2205,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3738,9 +3742,6 @@ msgstr "libovolný" msgid "auto" msgstr "auto" -msgid "automatic" -msgstr "" - msgid "baseT" msgstr "baseT" @@ -3817,9 +3818,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "ne" @@ -3853,12 +3851,6 @@ msgstr "směrované" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3895,6 +3887,9 @@ msgstr "ano" msgid "« Back" msgstr "« Zpět" +#~ msgid "Leasetime" +#~ msgstr "Doba trvání zápůjčky" + #~ msgid "AR Support" #~ msgstr "Podpora AR" diff --git a/modules/luci-base/po/de/base.po b/modules/luci-base/po/de/base.po index 5418b78411..fa26a1d72e 100644 --- a/modules/luci-base/po/de/base.po +++ b/modules/luci-base/po/de/base.po @@ -38,13 +38,13 @@ msgid "-- custom --" msgstr "-- benutzerdefiniert --" msgid "-- match by device --" -msgstr "" +msgstr "-- anhand Gerätedatei selektieren --" msgid "-- match by label --" -msgstr "" +msgstr "-- anhand Label selektieren --" msgid "-- match by uuid --" -msgstr "" +msgstr "-- UUID vergleichen --" msgid "1 Minute Load:" msgstr "Systemlast (1 Minute):" @@ -53,7 +53,7 @@ msgid "15 Minute Load:" msgstr "Systemlast (15 Minuten):" msgid "4-character hexadecimal ID" -msgstr "" +msgstr "vierstellige hexadezimale ID" msgid "464XLAT (CLAT)" msgstr "" @@ -62,25 +62,25 @@ msgid "5 Minute Load:" msgstr "Systemlast (5 Minuten):" msgid "6-octet identifier as a hex string - no colons" -msgstr "" +msgstr "sechstellige hexadezimale ID (ohne Doppelpunkte)" msgid "802.11r Fast Transition" msgstr "" msgid "802.11w Association SA Query maximum timeout" -msgstr "" +msgstr "Maximales Timeout für Quelladressprüfungen (SA Query)" msgid "802.11w Association SA Query retry timeout" -msgstr "" +msgstr "Wiederholungsintervall für Quelladressprüfungen (SA Query)" msgid "802.11w Management Frame Protection" -msgstr "" +msgstr "802.11w: Schutz von Management-Frames aktivieren" msgid "802.11w maximum timeout" -msgstr "" +msgstr "802.11w: Maximales Timeout" msgid "802.11w retry timeout" -msgstr "" +msgstr "802.11w: Wiederholungsintervall" msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>" msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>" @@ -119,7 +119,7 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway" msgstr "IPv6-Gateway" msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)" -msgstr "" +msgstr "IPv6-Suffix (hexadezimal)" msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration" msgstr "LED Konfiguration" @@ -312,7 +312,7 @@ msgstr "" "genutzt wird" msgid "Allowed IPs" -msgstr "" +msgstr "Erlaubte IP-Adressen" msgid "" "Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison" @@ -320,7 +320,7 @@ msgid "" msgstr "" msgid "Always announce default router" -msgstr "" +msgstr "Immer Defaultrouter ankündigen" msgid "Annex" msgstr "" @@ -341,7 +341,7 @@ msgid "Annex A G.992.5" msgstr "" msgid "Annex B (all)" -msgstr "" +msgstr "Annex B (alle Arten)" msgid "Annex B G.992.1" msgstr "" @@ -353,13 +353,13 @@ msgid "Annex B G.992.5" msgstr "" msgid "Annex J (all)" -msgstr "" +msgstr "Annex J (alle Arten)" msgid "Annex L G.992.3 POTS 1" msgstr "" msgid "Annex M (all)" -msgstr "" +msgstr "Annex M (alle Arten)" msgid "Annex M G.992.3" msgstr "" @@ -369,21 +369,23 @@ msgstr "" msgid "Announce as default router even if no public prefix is available." msgstr "" +"Kündigt im Netzwerk einen Defaultrouter an, auch wenn kein öffentlicher " +"Adressbereich verfügbar ist." msgid "Announced DNS domains" -msgstr "" +msgstr "Angekündigte Suchdomains" msgid "Announced DNS servers" -msgstr "" +msgstr "Angekündigte DNS Server" msgid "Anonymous Identity" -msgstr "" +msgstr "Anonyme Identität" msgid "Anonymous Mount" -msgstr "" +msgstr "automatische Mountpunkte" msgid "Anonymous Swap" -msgstr "" +msgstr "automatische Swap-Aktivierung" msgid "Antenna 1" msgstr "Antenne 1" @@ -406,6 +408,8 @@ msgstr "Änderungen werden angewandt" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" msgstr "" +"Legt die Größe der dieser Schnittstelle zugewiesenen Partitionen der " +"öffentlichen IPv6-Präfixe fest." msgid "Assign interfaces..." msgstr "Schnittstellen zuweisen..." @@ -413,21 +417,20 @@ msgstr "Schnittstellen zuweisen..." msgid "" "Assign prefix parts using this hexadecimal subprefix ID for this interface." msgstr "" +"Der Schnittstelle zugewiesene Partitionen des Adressraums werden anhand " +"dieser hexadezimalen ID gewählt." msgid "Associated Stations" msgstr "Assoziierte Clients" msgid "Auth Group" -msgstr "" - -msgid "AuthGroup" -msgstr "" +msgstr "Berechtigungsgruppe" msgid "Authentication" msgstr "Authentifizierung" msgid "Authentication Type" -msgstr "" +msgstr "Authentifizierungstyp" msgid "Authoritative" msgstr "Authoritativ" @@ -439,25 +442,25 @@ msgid "Auto Refresh" msgstr "Automatisches Neuladen" msgid "Automatic" -msgstr "" +msgstr "automatisch" msgid "Automatic Homenet (HNCP)" -msgstr "" +msgstr "automatisches Homenet-Protokoll (HNCP)" msgid "Automatically check filesystem for errors before mounting" -msgstr "" +msgstr "Dateisystem vor dem Einhängen automatisch auf Fehler prüfen" msgid "Automatically mount filesystems on hotplug" -msgstr "" +msgstr "Unkonfigurierte Dateisysteme automatisch einhängen" msgid "Automatically mount swap on hotplug" -msgstr "" +msgstr "Unkonfigurierte SWAP-Partitionen automatisch aktivieren" msgid "Automount Filesystem" -msgstr "" +msgstr "Dateisystem automatisch einhängen" msgid "Automount Swap" -msgstr "" +msgstr "SWAP automatisch aktivieren" msgid "Available" msgstr "Verfügbar" @@ -508,10 +511,10 @@ msgid "Bad address specified!" msgstr "Ungültige Adresse angegeben!" msgid "Band" -msgstr "" +msgstr "Frequenztyp" msgid "Behind NAT" -msgstr "" +msgstr "NAT" msgid "" "Below is the determined list of files to backup. It consists of changed " @@ -524,13 +527,15 @@ msgstr "" "benutzerdefinierte Dateiemuster betroffenen Dateien enthalten." msgid "Bind interface" -msgstr "" +msgstr "An Schnittstelle binden" msgid "Bind only to specific interfaces rather than wildcard address." msgstr "" +"Nur auf angegebenen Schnittstellen reagieren, anstatt auf allen " +"Schnittstellen zu antworten." msgid "Bind the tunnel to this interface (optional)." -msgstr "" +msgstr "Tunnelendpunkt an diese Schnittstelle binden (optional)" msgid "Bitrate" msgstr "Bitrate" @@ -563,12 +568,16 @@ msgid "" "Build/distribution specific feed definitions. This file will NOT be " "preserved in any sysupgrade." msgstr "" +"Konfiguriert die distributionsspezifischen Paket-Repositories. Diese " +"Konfiguration wird bei Upgrades NICHT gesichert." msgid "Buttons" msgstr "Knöpfe" msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" +"CA-Zertifikat (wird beim ersten Verbindungsaufbau automatisch gespeichert " +"wenn leer). " msgid "CPU usage (%)" msgstr "CPU-Nutzung (%)" @@ -577,7 +586,7 @@ msgid "Cancel" msgstr "Abbrechen" msgid "Category" -msgstr "" +msgstr "Kategorie" msgid "Chain" msgstr "Kette" @@ -598,10 +607,11 @@ msgid "Check" msgstr "Prüfen" msgid "Check fileystems before mount" -msgstr "" +msgstr "Dateisysteme prüfen" msgid "Check this option to delete the existing networks from this radio." msgstr "" +"Diese Option setzen um existierende Netzwerke auf dem Radio zu löschen." msgid "Checksum" msgstr "Prüfsumme" @@ -611,7 +621,11 @@ msgid "" "<em>unspecified</em> to remove the interface from the associated zone or " "fill out the <em>create</em> field to define a new zone and attach the " "interface to it." -msgstr "Diese Schnittstelle gehört bis jetzt zu keiner Firewallzone." +msgstr "" +"Ordnet dieser Schnittstelle eine Firewallzone zu. Den Wert " +"<em>unspezifiziert</em> wählen um die Schnittstelle von der Zone zu lösen " +"oder das <em>erstellen</em> Feld ausfüllen um eine neue Zone direkt " +"anzulegen und zuzuweisen." msgid "" "Choose the network(s) you want to attach to this wireless interface or fill " @@ -624,7 +638,7 @@ msgid "Cipher" msgstr "Verschlüsselungsalgorithmus" msgid "Cisco UDP encapsulation" -msgstr "" +msgstr "Cisco UDP-Kapselung" msgid "" "Click \"Generate archive\" to download a tar archive of the current " @@ -683,7 +697,7 @@ msgid "Connection Limit" msgstr "Verbindungslimit" msgid "Connection to server fails when TLS cannot be used" -msgstr "" +msgstr "TLS zwingend vorraussetzen und abbrechen wenn TLS fehlschlägt." msgid "Connections" msgstr "Verbindungen" @@ -719,15 +733,17 @@ msgid "Custom Interface" msgstr "benutzerdefinierte Schnittstelle" msgid "Custom delegated IPv6-prefix" -msgstr "" +msgstr "Delegierter IPv6-Präfix" msgid "" "Custom feed definitions, e.g. private feeds. This file can be preserved in a " "sysupgrade." msgstr "" +"Selbst konfigurierte Paket-Repositories, z.B. private oder inoffizielle " +"Quellen. Diese Konfiguration wird by Upgrades gesichert." msgid "Custom feeds" -msgstr "" +msgstr "Eigene Repositories" msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" @@ -753,7 +769,7 @@ msgid "DHCPv6 Leases" msgstr "DHCPv6-Leases" msgid "DHCPv6 client" -msgstr "" +msgstr "DHCPv6 Client" msgid "DHCPv6-Mode" msgstr "" @@ -774,13 +790,13 @@ msgid "DNSSEC" msgstr "" msgid "DNSSEC check unsigned" -msgstr "" +msgstr "DNSSEC Signaturstatus prüfen" msgid "DPD Idle Timeout" -msgstr "" +msgstr "DPD Inaktivitätstimeout" msgid "DS-Lite AFTR address" -msgstr "" +msgstr "DS-Lite AFTR-Adresse" msgid "DSL" msgstr "" @@ -789,13 +805,13 @@ msgid "DSL Status" msgstr "" msgid "DSL line mode" -msgstr "" +msgstr "DSL Leitungsmodus" msgid "DUID" msgstr "DUID" msgid "Data Rate" -msgstr "" +msgstr "Datenrate" msgid "Debug" msgstr "Debug" @@ -807,10 +823,10 @@ msgid "Default gateway" msgstr "Default Gateway" msgid "Default is stateless + stateful" -msgstr "" +msgstr "Der Standardwert ist zustandslos und zustandsorientiert" msgid "Default route" -msgstr "" +msgstr "Default Route" msgid "Default state" msgstr "Ausgangszustand" @@ -848,16 +864,16 @@ msgid "Device Configuration" msgstr "Gerätekonfiguration" msgid "Device is rebooting..." -msgstr "" +msgstr "Das Gerät startet neu..." msgid "Device unreachable" -msgstr "" +msgstr "Das Gerät ist nicht erreichbar" msgid "Diagnostics" msgstr "Diagnosen" msgid "Dial number" -msgstr "" +msgstr "Einwahlnummer" msgid "Directory" msgstr "Verzeichnis" @@ -882,7 +898,7 @@ msgid "Disabled" msgstr "Deaktiviert" msgid "Disabled (default)" -msgstr "" +msgstr "Deaktiviert (Standard)" msgid "Discard upstream RFC1918 responses" msgstr "Eingehende RFC1918-Antworten verwerfen" @@ -897,7 +913,7 @@ msgid "Distance to farthest network member in meters." msgstr "Distanz zum am weitesten entfernten Funkpartner in Metern." msgid "Distribution feeds" -msgstr "" +msgstr "Distributionsrepositories" msgid "Diversity" msgstr "Diversität" @@ -934,7 +950,7 @@ msgid "Domain whitelist" msgstr "Domain-Whitelist" msgid "Don't Fragment" -msgstr "" +msgstr "Nicht fragmentieren" msgid "" "Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without " @@ -974,7 +990,7 @@ msgstr "" "Clients mit konfigurierten statischen Leases bedient" msgid "EA-bits length" -msgstr "" +msgstr "EA-Bitlänge" msgid "EAP-Method" msgstr "EAP-Methode" @@ -986,6 +1002,8 @@ msgid "" "Edit the raw configuration data above to fix any error and hit \"Save\" to " "reload the page." msgstr "" +"Um die Syntaxfehler zu beheben, bitte die obige unformatierte Konfiguration " +"anpassen und \"Speichern\" klicken um die Seite neu zu laden." msgid "Edit this interface" msgstr "Diese Schnittstelle bearbeiten" @@ -1006,7 +1024,7 @@ msgid "Enable HE.net dynamic endpoint update" msgstr "Dynamisches HE.net IP-Adress-Update aktivieren" msgid "Enable IPv6 negotiation" -msgstr "" +msgstr "IPv6 anfordern" msgid "Enable IPv6 negotiation on the PPP link" msgstr "Aushandeln von IPv6-Adressen auf der PPP-Verbindung aktivieren" @@ -1018,7 +1036,7 @@ msgid "Enable NTP client" msgstr "Aktiviere NTP-Client" msgid "Enable Single DES" -msgstr "" +msgstr "Single-DES aktivieren" msgid "Enable TFTP server" msgstr "TFTP-Server aktivieren" @@ -1027,19 +1045,19 @@ msgid "Enable VLAN functionality" msgstr "VLAN-Funktionalität aktivieren" msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" +msgstr "WPS-via-Knopfdruck aktivieren, erfordert WPA(2)-PSK" msgid "Enable learning and aging" msgstr "Learning und Aging aktivieren" msgid "Enable mirroring of incoming packets" -msgstr "" +msgstr "Port-Mirroring für eingehende Pakete aktivieren" msgid "Enable mirroring of outgoing packets" -msgstr "" +msgstr "Port-Mirroring für ausgehende Pakete aktivieren" msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" +msgstr "Das DF-Bit (Nicht fragmentieren) auf gekapselten Paketen setzen." msgid "Enable this mount" msgstr "Diesen Mountpunkt aktivieren" @@ -1057,6 +1075,8 @@ msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" msgstr "" +"Aktiviert schnelles Roaming zwischen Access-Points des selben " +"Mobilitätsbereiches" msgid "Enables the Spanning Tree Protocol on this bridge" msgstr "Aktiviert das Spanning Tree Protokoll auf dieser Netzwerkbrücke" @@ -1068,10 +1088,10 @@ msgid "Encryption" msgstr "Verschlüsselung" msgid "Endpoint Host" -msgstr "" +msgstr "Entfernter Server" msgid "Endpoint Port" -msgstr "" +msgstr "Entfernter Port" msgid "Erasing..." msgstr "Lösche..." @@ -1080,7 +1100,7 @@ msgid "Error" msgstr "Fehler" msgid "Errored seconds (ES)" -msgstr "" +msgstr "Fehlersekunden (ES)" msgid "Ethernet Adapter" msgstr "Netzwerkschnittstelle" @@ -1089,7 +1109,7 @@ msgid "Ethernet Switch" msgstr "Netzwerk Switch" msgid "Exclude interfaces" -msgstr "" +msgstr "Schnittstellen ausschließen" msgid "Expand hosts" msgstr "Hosts vervollständigen" @@ -1105,13 +1125,13 @@ msgstr "" "(<code>2m</code>)." msgid "External" -msgstr "" +msgstr "Extern" msgid "External R0 Key Holder List" -msgstr "" +msgstr "Externe R0-Key-Holder-List" msgid "External R1 Key Holder List" -msgstr "" +msgstr "Externe R1-Key-Holder-List" msgid "External system log server" msgstr "Externer Protokollserver IP" @@ -1120,10 +1140,10 @@ msgid "External system log server port" msgstr "Externer Protokollserver Port" msgid "External system log server protocol" -msgstr "" +msgstr "Externes Protokollserver Protokoll" msgid "Extra SSH command options" -msgstr "" +msgstr "Zusätzliche SSH-Kommando-Optionen" msgid "File" msgstr "Datei" @@ -1147,6 +1167,9 @@ msgid "" "Find all currently attached filesystems and swap and replace configuration " "with defaults based on what was detected" msgstr "" +"Findet alle angeschlossenen Dateisysteme und SWAP-Partitionen und generiert " +"die Konfiguration mit passenden Standardwerten für alle gefundenen Geräte " +"neu." msgid "Find and join network" msgstr "Suchen und Verbinden von Netzwerken" @@ -1161,7 +1184,7 @@ msgid "Firewall" msgstr "Firewall" msgid "Firewall Mark" -msgstr "" +msgstr "Firewall-Markierung" msgid "Firewall Settings" msgstr "Firewall Einstellungen" @@ -1170,7 +1193,7 @@ msgid "Firewall Status" msgstr "Firewall-Status" msgid "Firmware File" -msgstr "" +msgstr "Firmware-Datei" msgid "Firmware Version" msgstr "Firmware Version" @@ -1214,16 +1237,16 @@ msgid "Force link" msgstr "Erzwinge Verbindung" msgid "Force use of NAT-T" -msgstr "" +msgstr "Benutzung von NAT-T erzwingen" msgid "Form token mismatch" -msgstr "" +msgstr "Abweichendes Formular-Token" msgid "Forward DHCP traffic" msgstr "DHCP Traffic weiterleiten" msgid "Forward Error Correction Seconds (FECS)" -msgstr "" +msgstr "Fehlerkorrektursekunden (FECS)" msgid "Forward broadcast traffic" msgstr "Broadcasts weiterleiten" @@ -1247,6 +1270,8 @@ msgid "" "Further information about WireGuard interfaces and peers at <a href=\"http://" "wireguard.io\">wireguard.io</a>." msgstr "" +"Weitere Informationen zu WireGuard-Schnittstellen und Peers unter <a href=" +"\"http://wireguard.io\">wireguard.io</a>." msgid "GHz" msgstr "GHz" @@ -1267,10 +1292,10 @@ msgid "General Setup" msgstr "Allgemeine Einstellungen" msgid "General options for opkg" -msgstr "" +msgstr "Allgemeine Optionen für Opkg." msgid "Generate Config" -msgstr "" +msgstr "Konfiguration generieren" msgid "Generate archive" msgstr "Sicherung erstellen" @@ -1284,10 +1309,10 @@ msgstr "" "nicht geändert!" msgid "Global Settings" -msgstr "" +msgstr "Globale Einstellungen" msgid "Global network options" -msgstr "" +msgstr "Globale Netzwerkeinstellungen" msgid "Go to password configuration..." msgstr "Zur Passwortkonfiguration..." @@ -1296,19 +1321,19 @@ msgid "Go to relevant configuration page" msgstr "Gehe zur entsprechenden Konfigurationsseite" msgid "Group Password" -msgstr "" +msgstr "Gruppenpasswort" msgid "Guest" -msgstr "" +msgstr "Gast" msgid "HE.net password" msgstr "HE.net Passwort" msgid "HE.net username" -msgstr "" +msgstr "HE.net Benutzername" msgid "HT mode (802.11n)" -msgstr "" +msgstr "HT-Modus (802.11n)" msgid "Handler" msgstr "Handler" @@ -1317,7 +1342,7 @@ msgid "Hang Up" msgstr "Auflegen" msgid "Header Error Code Errors (HEC)" -msgstr "" +msgstr "Anzahl Header-Error-Code-Fehler (HEC)" msgid "Heartbeat" msgstr "" @@ -1369,7 +1394,7 @@ msgid "IKE DH Group" msgstr "" msgid "IP Addresses" -msgstr "" +msgstr "IP-Adressen" msgid "IP address" msgstr "IP-Adresse" @@ -1390,7 +1415,7 @@ msgid "IPv4 and IPv6" msgstr "IPv4 und IPv6" msgid "IPv4 assignment length" -msgstr "" +msgstr "IPv4 Zuweisungslänge" msgid "IPv4 broadcast" msgstr "IPv4 Broadcast" @@ -1405,7 +1430,7 @@ msgid "IPv4 only" msgstr "nur IPv4" msgid "IPv4 prefix" -msgstr "" +msgstr "IPv4 Bereich" msgid "IPv4 prefix length" msgstr "Länge des IPv4 Präfix" @@ -1423,13 +1448,13 @@ msgid "IPv6 Firewall" msgstr "IPv6 Firewall" msgid "IPv6 Neighbours" -msgstr "" +msgstr "IPv6 Nachbarn" msgid "IPv6 Settings" -msgstr "" +msgstr "IPv6 Einstellungen" msgid "IPv6 ULA-Prefix" -msgstr "" +msgstr "IPv6 ULA-Präfix" msgid "IPv6 WAN Status" msgstr "IPv6 WAN Status" @@ -1438,13 +1463,13 @@ msgid "IPv6 address" msgstr "IPv6 Adresse" msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" +msgstr "Zum lokalen Tunnelendpunkt delegierte IPv6-Adresse (optional)" msgid "IPv6 assignment hint" -msgstr "" +msgstr "IPv6 Zuweisungshinweis" msgid "IPv6 assignment length" -msgstr "" +msgstr "IPv6 Zuweisungslänge" msgid "IPv6 gateway" msgstr "IPv6 Gateway" @@ -1459,13 +1484,16 @@ msgid "IPv6 prefix length" msgstr "Länge des IPv6 Präfix" msgid "IPv6 routed prefix" -msgstr "" +msgstr "Gerouteter IPv6-Präfix" + +msgid "IPv6 suffix" +msgstr "IPv6 Endung" msgid "IPv6-Address" msgstr "IPv6-Adresse" msgid "IPv6-PD" -msgstr "" +msgstr "IPv6 Präfixdelegation (PD)" msgid "IPv6-in-IPv4 (RFC4213)" msgstr "IPv6-in-IPv4 (RFC4213)" @@ -1480,10 +1508,10 @@ msgid "Identity" msgstr "Identität" msgid "If checked, 1DES is enaled" -msgstr "" +msgstr "Aktiviert die Benutzung von 1DES, wenn ausgewählt" msgid "If checked, encryption is disabled" -msgstr "" +msgstr "Deaktiviert die Verschlüsselung, wenn ausgewählt" msgid "" "If specified, mount the device by its UUID instead of a fixed device node" @@ -1535,6 +1563,9 @@ msgid "" "In order to prevent unauthorized access to the system, your request has been " "blocked. Click \"Continue »\" below to return to the previous page." msgstr "" +"Um unauthorisierte Zugriffe auf das System zu verhindern, wurde dieser " +"Request blockiert. Auf \"Weiter\" klicken um zur vorherigen Seite " +"zurückzukehren." msgid "Inactivity timeout" msgstr "Timeout bei Inaktivität" @@ -1556,6 +1587,8 @@ msgstr "Installieren" msgid "Install iputils-traceroute6 for IPv6 traceroute" msgstr "" +"Bitte \"iputils-traceroute6\" installieren um IPv6-Routenverfolgung nutzen " +"zu können" msgid "Install package %q" msgstr "Installiere Paket %q" @@ -1569,6 +1602,10 @@ msgstr "Installierte Pakete" msgid "Interface" msgstr "Schnittstelle" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" +"Das Gerät der Schnittstelle %q wurde automatisch von %q auf %q geändert." + msgid "Interface Configuration" msgstr "Schnittstellenkonfiguration" @@ -1582,7 +1619,7 @@ msgid "Interface is shutting down..." msgstr "Schnittstelle fährt herunter..." msgid "Interface name" -msgstr "" +msgstr "Schnittstellenname" msgid "Interface not present or not connected yet." msgstr "Schnittstelle existiert nicht oder ist nicht verbunden." @@ -1597,7 +1634,7 @@ msgid "Interfaces" msgstr "Schnittstellen" msgid "Internal" -msgstr "" +msgstr "Intern" msgid "Internal Server Error" msgstr "Interner Serverfehler" @@ -1616,7 +1653,7 @@ msgstr "" "Ungültiger Benutzername oder ungültiges Passwort! Bitte erneut versuchen. " msgid "Isolate Clients" -msgstr "" +msgstr "Clients isolieren" #, fuzzy msgid "" @@ -1636,7 +1673,7 @@ msgid "Join Network: Wireless Scan" msgstr "Netzwerk beitreten: Suche nach Netzwerken" msgid "Joining Network: %q" -msgstr "" +msgstr "Trete Netzwerk %q bei" msgid "Keep settings" msgstr "Konfiguration behalten" @@ -1681,13 +1718,13 @@ msgid "Language and Style" msgstr "Sprache und Aussehen" msgid "Latency" -msgstr "" +msgstr "Latenz" msgid "Leaf" -msgstr "" +msgstr "Zweigstelle" msgid "Lease time" -msgstr "" +msgstr "Laufzeit" msgid "Lease validity time" msgstr "Lease-Gültigkeitsdauer" @@ -1695,9 +1732,6 @@ msgstr "Lease-Gültigkeitsdauer" msgid "Leasefile" msgstr "Leasedatei" -msgid "Leasetime" -msgstr "Laufzeit" - msgid "Leasetime remaining" msgstr "Verbleibende Gültigkeit" @@ -1715,21 +1749,23 @@ msgstr "Limit" msgid "Limit DNS service to subnets interfaces on which we are serving DNS." msgstr "" +"DNS-Dienste auf direkte lokale Subnetze beschränken um Missbrauch durch " +"Dritte zu verhindern." msgid "Limit listening to these interfaces, and loopback." -msgstr "" +msgstr "Dienste auf die angegeben Schnittstellen plus Loopback beschränken." msgid "Line Attenuation (LATN)" -msgstr "" +msgstr "Dämpfung (LATN)" msgid "Line Mode" -msgstr "" +msgstr "Verbindungsmodus" msgid "Line State" -msgstr "" +msgstr "Verbindungsstatus" msgid "Line Uptime" -msgstr "" +msgstr "Verbindungsdauer" msgid "Link On" msgstr "Verbindung hergestellt" @@ -1758,7 +1794,7 @@ msgid "" msgstr "" msgid "List of SSH key files for auth" -msgstr "" +msgstr "Liste der SSH Schlüssel zur Authentifikation" msgid "List of domains to allow RFC1918 responses for" msgstr "Liste von Domains für welche RFC1918-Antworten erlaubt sind" @@ -1767,10 +1803,10 @@ msgid "List of hosts that supply bogus NX domain results" msgstr "Liste von Servern die falsche \"NX Domain\" Antworten liefern" msgid "Listen Interfaces" -msgstr "" +msgstr "Aktive Schnittstellen" msgid "Listen Port" -msgstr "" +msgstr "Aktive Ports" msgid "Listen only on the given interface or, if unspecified, on all" msgstr "" @@ -1790,7 +1826,7 @@ msgid "Loading" msgstr "Lade" msgid "Local IP address to assign" -msgstr "" +msgstr "Lokale IP-Adresse" msgid "Local IPv4 address" msgstr "Lokale IPv4 Adresse" @@ -1799,7 +1835,7 @@ msgid "Local IPv6 address" msgstr "Lokale IPv6 Adresse" msgid "Local Service Only" -msgstr "" +msgstr "Nur lokale Dienste" msgid "Local Startup" msgstr "Lokales Startskript" @@ -1838,7 +1874,7 @@ msgid "Localise queries" msgstr "Lokalisiere Anfragen" msgid "Locked to channel %s used by: %s" -msgstr "" +msgstr "Festgelegt auf Kanal %s, verwendet durch: %s" msgid "Log output level" msgstr "Protokolllevel" @@ -1856,7 +1892,7 @@ msgid "Logout" msgstr "Abmelden" msgid "Loss of Signal Seconds (LOSS)" -msgstr "" +msgstr "Signalverlustsekunden (LOSS)" msgid "Lowest leased address as offset from the network address." msgstr "Kleinste vergebene Adresse (Netzwerkadresse + x)" @@ -1891,13 +1927,13 @@ msgstr "MTU" msgid "" "Make sure to clone the root filesystem using something like the commands " "below:" -msgstr "" +msgstr "Das Root-Dateisystem muss mit folgenden Kommandsos vorbereitet werden:" msgid "Manual" -msgstr "" +msgstr "Manuell" msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" +msgstr "Maximal erreichbare Datenrate (ATTNDR)" msgid "Maximum allowed number of active DHCP leases" msgstr "Maximal zulässige Anzahl von aktiven DHCP-Leases" @@ -1918,6 +1954,9 @@ msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" msgstr "" +"Die maximale Länge des Names ist auf 15 Zeichen beschränkt, abzüglich des " +"automatischen Protokoll- oder Bridge-Prefixes wie \"br-\" oder \"pppoe-\" " +"etc." msgid "Maximum number of leased addresses." msgstr "Maximal zulässige Anzahl von vergeben DHCP-Adressen" @@ -1938,22 +1977,22 @@ msgid "Minimum hold time" msgstr "Minimalzeit zum Halten der Verbindung" msgid "Mirror monitor port" -msgstr "" +msgstr "Spiegel-Monitor-Port" msgid "Mirror source port" -msgstr "" +msgstr "Spiegel-Quell-Port" msgid "Missing protocol extension for proto %q" msgstr "Erweiterung für Protokoll %q fehlt" msgid "Mobility Domain" -msgstr "" +msgstr "Mobilitätsbereich" msgid "Mode" msgstr "Modus" msgid "Model" -msgstr "" +msgstr "Modell" msgid "Modem device" msgstr "Modemgerät" @@ -1996,7 +2035,7 @@ msgid "Mount point" msgstr "Mountpunkt" msgid "Mount swap not specifically configured" -msgstr "" +msgstr "Unkonfigurierte SWAP-Partitionen aktivieren" msgid "Mounted file systems" msgstr "Eingehängte Dateisysteme" @@ -2014,10 +2053,10 @@ msgid "NAS ID" msgstr "NAS ID" msgid "NAT-T Mode" -msgstr "" +msgstr "NAT-T Modus" msgid "NAT64 Prefix" -msgstr "" +msgstr "NAT64 Präfix" msgid "NCM" msgstr "" @@ -2032,7 +2071,7 @@ msgid "NTP server candidates" msgstr "NTP Server Kandidaten" msgid "NTP sync time-out" -msgstr "" +msgstr "NTP Synchronisierungstimeout" msgid "Name" msgstr "Name" @@ -2068,7 +2107,7 @@ msgid "No DHCP Server configured for this interface" msgstr "Kein DHCP Server auf dieser Schnittstelle eingerichtet" msgid "No NAT-T" -msgstr "" +msgstr "Kein NAT-T" msgid "No chains in this table" msgstr "Keine Ketten in dieser Tabelle" @@ -2105,16 +2144,16 @@ msgid "Noise" msgstr "Rauschen" msgid "Noise Margin (SNR)" -msgstr "" +msgstr "Signal-Rausch-Abstand (SNR)" msgid "Noise:" msgstr "Noise:" msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" +msgstr "Nicht-präemptive CRC-Fehler (CRC_P)" msgid "Non-wildcard" -msgstr "" +msgstr "An Schnittstellen binden" msgid "None" msgstr "keine" @@ -2135,7 +2174,7 @@ msgid "Note: Configuration files will be erased." msgstr "Warnung: Konfigurationsdateien werden gelöscht." msgid "Note: interface name length" -msgstr "" +msgstr "Hinweis: Länge des Namens beachten" msgid "Notice" msgstr "Notiz" @@ -2150,10 +2189,10 @@ msgid "OPKG-Configuration" msgstr "OPKG-Konfiguration" msgid "Obfuscated Group Password" -msgstr "" +msgstr "Chiffriertes Gruppenpasswort" msgid "Obfuscated Password" -msgstr "" +msgstr "Chiffriertes Passwort" msgid "Off-State Delay" msgstr "Verzögerung für Ausschalt-Zustand" @@ -2195,7 +2234,7 @@ msgid "OpenConnect (CISCO AnyConnect)" msgstr "" msgid "Operating frequency" -msgstr "" +msgstr "Betriebsfrequenz" msgid "Option changed" msgstr "Option geändert" @@ -2204,48 +2243,68 @@ msgid "Option removed" msgstr "Option entfernt" msgid "Optional" -msgstr "" +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 "" - -msgid "Optional." -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>." msgstr "" +"Optional. 32-Bit-Marke für ausgehende, verschlüsselte Pakete. Wert in " +"hexadezimal mit führendem <code>0x</code> angeben." + +msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" +"Optional. Mögliche Werte: 'eui64', 'random' oder Suffixes wie '::1' oder " +"'::1:2'. Wenn ein IPv6-Präfix (wie z.B. 'a:b:c:d::') von einem delegierendem " +"Server empfangen wird, kombiniert das System das Suffix mit dem Präfix um " +"eine IPv6-Adresse (z.B. 'a:b:c:d::1') für die Schnittstelle zu formen." msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" +"Optional. Base64-kodierter, vorhab ausgetauschter Schlüssel um eine weitere " +"Ebene an symmetrischer Verschlüsselung für erhöhte Sicherheit hinzuzufügen." msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" +msgstr "Optional. Routen für erlaubte IP-Adressen erzeugen." msgid "" "Optional. Host of peer. Names are resolved prior to bringing up the " "interface." msgstr "" +"Optional. Hostname oder Adresse des Verbindungspartners. Namen werden vor " +"dem Verbindungsaufbau aufgelöst." msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" +msgstr "Optional. Maximale MTU für Tunnelschnittstellen." msgid "Optional. Port of peer." -msgstr "" +msgstr "Optional. Port-Nummer des Verbindungspartners." msgid "" "Optional. Seconds between keep alive messages. Default is 0 (disabled). " "Recommended value if this device is behind a NAT is 25." msgstr "" +"Optional. Sekunden zwischen Keep-Alive-Nachrichten. Standardwert is 0 " +"(deaktiviert). Der empfohlene Wert für Geräte hinter einem NAT sind 25 " +"Sekunden." msgid "Optional. UDP port used for outgoing and incoming packets." msgstr "" +"Optional. Benutzte UDP-Port-Nummer für ausgehende und eingehende Pakete." msgid "Options" msgstr "Optionen" @@ -2260,7 +2319,7 @@ msgid "Outbound:" msgstr "Ausgehend:" msgid "Output Interface" -msgstr "" +msgstr "Ausgehende Schnittstelle" msgid "Override MAC address" msgstr "MAC-Adresse überschreiben" @@ -2269,13 +2328,13 @@ msgid "Override MTU" msgstr "MTU-Wert überschreiben" msgid "Override TOS" -msgstr "" +msgstr "TOS-Wert überschreiben" msgid "Override TTL" -msgstr "" +msgstr "TTL-Wert überschreiben" msgid "Override default interface name" -msgstr "" +msgstr "Standard Schnittstellennamen überschreiben" msgid "Override the gateway in DHCP responses" msgstr "Gateway-Adresse in DHCP-Antworten überschreiben" @@ -2330,10 +2389,10 @@ msgid "PPtP" msgstr "PPtP" msgid "PSID offset" -msgstr "" +msgstr "PSID-Offset" msgid "PSID-bits length" -msgstr "" +msgstr "PSID-Bitlänge" msgid "PTM/EFM (Packet Transfer Mode)" msgstr "" @@ -2360,10 +2419,10 @@ msgid "Password authentication" msgstr "Passwortanmeldung" msgid "Password of Private Key" -msgstr "Passwort des Privaten Schlüssels" +msgstr "Passwort des privaten Schlüssels" msgid "Password of inner Private Key" -msgstr "" +msgstr "Password des inneren, privaten Schlüssels" msgid "Password successfully changed!" msgstr "Passwort erfolgreich geändert!" @@ -2381,22 +2440,22 @@ msgid "Path to executable which handles the button event" msgstr "Ausführbare Datei welche das Schalter-Ereignis verarbeitet" msgid "Path to inner CA-Certificate" -msgstr "" +msgstr "Pfad zum inneren CA-Zertifikat" msgid "Path to inner Client-Certificate" -msgstr "" +msgstr "Pfad zum inneren Client-Zertifikat" msgid "Path to inner Private Key" -msgstr "" +msgstr "Pfad zum inneren, privaten Schlüssel" msgid "Peak:" msgstr "Spitze:" msgid "Peer IP address to assign" -msgstr "" +msgstr "Entfernte IP-Adresse" msgid "Peers" -msgstr "" +msgstr "Verbindungspartner" msgid "Perfect Forward Secrecy" msgstr "" @@ -2408,7 +2467,7 @@ msgid "Perform reset" msgstr "Reset durchführen" msgid "Persistent Keep Alive" -msgstr "" +msgstr "Persistentes Keep-Alive" msgid "Phy Rate:" msgstr "Phy-Rate:" @@ -2435,22 +2494,22 @@ msgid "Port status:" msgstr "Port-Status:" msgid "Power Management Mode" -msgstr "" +msgstr "Energiesparmodus" msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" +msgstr "Präemptive CRC-Fehler (CRCP_P)" msgid "Prefer LTE" -msgstr "" +msgstr "LTE bevorzugen" msgid "Prefer UMTS" -msgstr "" +msgstr "UMTS bevorzugen" msgid "Prefix Delegated" -msgstr "" +msgstr "Delegiertes Präfix" msgid "Preshared Key" -msgstr "" +msgstr "Gemeinsamer Schlüssel" msgid "" "Presume peer to be dead after given amount of LCP echo failures, use 0 to " @@ -2460,7 +2519,7 @@ msgstr "" "Fehlschlägen, nutze den Wert 0 um Fehler zu ignorieren" msgid "Prevent listening on these interfaces." -msgstr "" +msgstr "Verhindert das Binden an diese Schnittstellen" msgid "Prevents client-to-client communication" msgstr "Unterbindet Client-Client-Verkehr" @@ -2469,7 +2528,7 @@ msgid "Prism2/2.5/3 802.11b Wireless Controller" msgstr "Prism2/2.5/3 802.11b W-LAN Adapter" msgid "Private Key" -msgstr "" +msgstr "Privater Schlüssel" msgid "Proceed" msgstr "Fortfahren" @@ -2478,7 +2537,7 @@ msgid "Processes" msgstr "Prozesse" msgid "Profile" -msgstr "" +msgstr "Profil" msgid "Prot." msgstr "Prot." @@ -2505,10 +2564,12 @@ msgid "Pseudo Ad-Hoc (ahdemo)" msgstr "Pseudo Ad-Hoc (ahdemo)" msgid "Public Key" -msgstr "" +msgstr "Öffentlicher Schlüssel" msgid "Public prefix routed to this device for distribution to clients." msgstr "" +"Zu diesem Gerät geroutetes öffentliches Präfix zur Weiterverteilung an " +"Clients." msgid "QMI Cellular" msgstr "" @@ -2618,7 +2679,7 @@ msgid "Realtime Wireless" msgstr "Echtzeit-WLAN-Signal" msgid "Reassociation Deadline" -msgstr "" +msgstr "Reassoziierungsfrist" msgid "Rebind protection" msgstr "DNS-Rebind-Schutz" @@ -2639,7 +2700,7 @@ msgid "Receiver Antenna" msgstr "Empfangsantenne" msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" +msgstr "Empfohlen. IP-Adresse der WireGuard-Schnittstelle." msgid "Reconnect this interface" msgstr "Diese Schnittstelle neu verbinden" @@ -2666,7 +2727,7 @@ msgid "Remote IPv4 address" msgstr "Entfernte IPv4-Adresse" msgid "Remote IPv4 address or FQDN" -msgstr "" +msgstr "Entfernte IPv4-Adresse oder Hostname" msgid "Remove" msgstr "Entfernen" @@ -2681,42 +2742,50 @@ msgid "Replace wireless configuration" msgstr "Drahtloskonfiguration ersetzen" msgid "Request IPv6-address" -msgstr "" +msgstr "IPv6-Adresse anfordern" msgid "Request IPv6-prefix of length" -msgstr "" +msgstr "IPv6-Präfix dieser Länge anfordern" msgid "Require TLS" -msgstr "" +msgstr "TLS erfordern" msgid "Required" -msgstr "" +msgstr "Benötigt" msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" msgstr "" "Wird von bestimmten Internet-Providern benötigt, z.B. Charter mit DOCSIS 3" msgid "Required. Base64-encoded private key for this interface." -msgstr "" +msgstr "Benötigt. Base64-kodierter privater Schlüssel für diese Schnittstelle" msgid "Required. Base64-encoded public key of peer." msgstr "" +"Benötigt. Base64-kodierter öffentlicher Schlüssel für diese Schnittstelle" msgid "" "Required. IP addresses and prefixes that this peer is allowed to use inside " "the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " "routes through the tunnel." msgstr "" +"Benötigt. IP-Adressen und Präfixe die der Verbindungspartner innerhalb des " +"Tunnels nutzen darf. Entspricht üblicherweise der Tunnel-IP-Adresse des " +"Verbindungspartners und den Netzwerken, die dieser durch den Tunnel routet." msgid "" "Requires the 'full' version of wpad/hostapd and support from the wifi driver " "<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" msgstr "" +"Benötigt die \"volle\" Variante des wpad oder hostapd Paketes und " +"Unterstützung vom WLAN-Treiber." msgid "" "Requires upstream supports DNSSEC; verify unsigned domain responses really " "come from unsigned domains" msgstr "" +"Setzt DNSSEC-Unterstützung im DNS-Zielserver vorraus; überprüft ob " +"unsignierte Antworten wirklich von unsignierten Domains kommen." msgid "Reset" msgstr "Zurücksetzen" @@ -2755,19 +2824,19 @@ msgid "Root directory for files served via TFTP" msgstr "Wurzelverzeichnis für über TFTP ausgelieferte Dateien " msgid "Root preparation" -msgstr "" +msgstr "Wurzelverzeichnis erzeugen" msgid "Route Allowed IPs" -msgstr "" +msgstr "Erlaubte IP-Addressen routen" msgid "Route type" -msgstr "" +msgstr "Routen-Typ" msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" +msgstr "Geroutetes IPv6-Präfix für nachgelagerte Schnittstellen" msgid "Router Advertisement-Service" -msgstr "" +msgstr "Router-Advertisement-Dienst" msgid "Router Password" msgstr "Routerpasswort" @@ -2806,13 +2875,13 @@ msgid "SSH Access" msgstr "SSH-Zugriff" msgid "SSH server address" -msgstr "" +msgstr "SSH-Server-Adresse" msgid "SSH server port" -msgstr "" +msgstr "SSH-Server-Port" msgid "SSH username" -msgstr "" +msgstr "SSH Benutzername" msgid "SSH-Keys" msgstr "SSH-Schlüssel" @@ -2858,15 +2927,17 @@ msgid "Server Settings" msgstr "Servereinstellungen" msgid "Server password" -msgstr "" +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 "" +msgstr "Server Benutzername" msgid "Service Name" msgstr "Service-Name" @@ -2893,10 +2964,10 @@ msgid "Setup DHCP Server" msgstr "DHCP Server einrichten" msgid "Severely Errored Seconds (SES)" -msgstr "" +msgstr "schwerwiegende Fehlersekunden (SES)" msgid "Short GI" -msgstr "" +msgstr "kurzes Guardintervall" msgid "Show current backup file list" msgstr "Zeige aktuelle Liste der gesicherten Dateien" @@ -2911,7 +2982,7 @@ msgid "Signal" msgstr "Signal" msgid "Signal Attenuation (SATN)" -msgstr "" +msgstr "Signaldämpfung (SATN)" msgid "Signal:" msgstr "Signal:" @@ -2920,7 +2991,7 @@ msgid "Size" msgstr "Größe" msgid "Size (.ipk)" -msgstr "" +msgstr "Größe (.ipk)" msgid "Skip" msgstr "Überspringen" @@ -2966,7 +3037,7 @@ msgid "Source" msgstr "Quelle" msgid "Source routing" -msgstr "" +msgstr "Quell-Routing" msgid "Specifies the button state to handle" msgstr "Gibt den zu behandelnden Tastenstatus an" @@ -2992,17 +3063,21 @@ msgstr "" "werden" msgid "Specify a TOS (Type of Service)." -msgstr "" +msgstr "Setzt einen spezifischen TOS (Type of Service) Wert" msgid "" "Specify a TTL (Time to Live) for the encapsulating packet other than the " "default (64)." msgstr "" +"Setzt eine spezifische TTL (Time to Live) für gekapselte Pakete, anstatt der " +"standardmäßigen 64." msgid "" "Specify an MTU (Maximum Transmission Unit) other than the default (1280 " "bytes)." msgstr "" +"Setzt eine spezifische MTU (Maximum Transmission Unit) abweichend von den " +"standardmäßigen 1280 Bytes." msgid "Specify the secret encryption key here." msgstr "Geben Sie hier den geheimen Netzwerkschlüssel an" @@ -3078,6 +3153,8 @@ msgstr "Switch %q (%s)" msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" +"Der Switch %q hat eine unbekannte Struktur, die VLAN Settings könnten " +"unpassend sein." msgid "Switch VLAN" msgstr "" @@ -3156,10 +3233,13 @@ msgid "" "The HE.net endpoint update configuration changed, you must now use the plain " "username instead of the user ID!" msgstr "" +"Die Updateprozedur für HE.net Tunnel-IP-Adrerssen hat sich geändert, statt " +"der numerischen User-ID muss nun der normale Benutzername angegeben werden." msgid "" "The IPv4 address or the fully-qualified domain name of the remote tunnel end." msgstr "" +"Die IPv4-Adresse oder der volle Domain Name des entfernten Tunnel-Endpunktes." msgid "" "The IPv6 prefix assigned to the provider, usually ends with <code>::</code>" @@ -3176,6 +3256,8 @@ msgstr "" msgid "The configuration file could not be loaded due to the following error:" msgstr "" +"Die Konfigurationsdatei konnte aufgrund der folgenden Fehler nicht geladen " +"werden:" msgid "" "The device file of the memory or partition (<abbr title=\"for example\">e.g." @@ -3229,7 +3311,7 @@ msgid "The length of the IPv6 prefix in bits" msgstr "Länge des IPv6 Präfix in Bits" msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" +msgstr "Die lokale IPv4-Adresse über die der Tunnel aufgebaut wird (optional)." msgid "" "The network ports on this device can be combined to several <abbr title=" @@ -3253,6 +3335,7 @@ msgstr "Dem ausgewähltem Protokoll muss ein Gerät zugeordnet werden" msgid "The submitted security token is invalid or already expired!" msgstr "" +"Das mitgesendete Sicherheits-Token ist ungültig oder bereits abgelaufen!" msgid "" "The system is erasing the configuration partition now and will reboot itself " @@ -3277,6 +3360,8 @@ 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 " @@ -3319,6 +3404,8 @@ msgid "" "'server=1.2.3.4' fordomain-specific or full upstream <abbr title=\"Domain " "Name System\">DNS</abbr> servers." msgstr "" +"Diese Datei beinhaltet Zeilen in der Art 'server=/domain/1.2.3.4' oder " +"'server=1.2.3.4' für domainspezifische oder komplette Ziel-DNS-Server." msgid "" "This is a list of shell glob patterns for matching files and directories to " @@ -3334,6 +3421,9 @@ msgid "" "This is either the \"Update Key\" configured for the tunnel or the account " "password if no update key has been configured" msgstr "" +"Dies ist entweder der \"Update Key\" der für diesen Tunnel eingerichtet " +"wurde oder das normale Account-Passwort wenn kein separater Schlüssel " +"gesetzt wurde." msgid "" "This is the content of /etc/rc.local. Insert your own commands here (in " @@ -3355,11 +3445,13 @@ msgid "" msgstr "Dies ist der einzige DHCP im lokalen Netz" msgid "This is the plain username for logging into the account" -msgstr "" +msgstr "Das ist der normale Login-Name für den Account." msgid "" "This is the prefix routed to you by the tunnel broker for use by clients" msgstr "" +"Dies ist das vom Tunnel-Broker geroutete öffentliche Präfix zur Verwendung " +"durch nachgelagerte Clients." msgid "This is the system crontab in which scheduled tasks can be defined." msgstr "" @@ -3405,7 +3497,7 @@ msgstr "" "Backup-Archiv hochgeladen werden." msgid "Tone" -msgstr "" +msgstr "Ton" msgid "Total Available" msgstr "Gesamt verfügbar" @@ -3445,16 +3537,16 @@ msgid "Tunnel Interface" msgstr "Tunnelschnittstelle" msgid "Tunnel Link" -msgstr "" +msgstr "Basisschnittstelle" msgid "Tunnel broker protocol" -msgstr "" +msgstr "Tunnel-Boker-Protokoll" msgid "Tunnel setup server" -msgstr "" +msgstr "Tunnel-Setup-Server" msgid "Tunnel type" -msgstr "" +msgstr "Tunneltyp" msgid "Tx-Power" msgstr "Sendestärke" @@ -3475,7 +3567,7 @@ msgid "USB Device" msgstr "USB-Gerät" msgid "USB Ports" -msgstr "" +msgstr "USB Anschlüsse" msgid "UUID" msgstr "UUID" @@ -3484,7 +3576,7 @@ msgid "Unable to dispatch" msgstr "Kann Anfrage nicht zustellen" msgid "Unavailable Seconds (UAS)" -msgstr "" +msgstr "Nicht verfügbare Sekunden (UAS)" msgid "Unknown" msgstr "Unbekannt" @@ -3496,7 +3588,7 @@ msgid "Unmanaged" msgstr "Ignoriert" msgid "Unmount" -msgstr "" +msgstr "Aushängen" msgid "Unsaved Changes" msgstr "Ungespeicherte Änderungen" @@ -3544,16 +3636,16 @@ msgid "Use TTL on tunnel interface" msgstr "Benutze TTL auf der Tunnelschnittstelle" msgid "Use as external overlay (/overlay)" -msgstr "" +msgstr "Als externes Overlay benutzen (/overlay)" msgid "Use as root filesystem (/)" -msgstr "" +msgstr "Als Root-Dateisystem benutzen (/)" msgid "Use broadcast flag" msgstr "Benutze Broadcast-Flag" msgid "Use builtin IPv6-management" -msgstr "" +msgstr "Eingebautes IPv6-Management nutzen" msgid "Use custom DNS servers" msgstr "Benutze eigene DNS-Server" @@ -3589,12 +3681,14 @@ msgid "" "Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " "needed with normal WPA(2)-PSK." msgstr "" +"Wird als RADIUS-NAS-ID und als 802.11r R0KH-ID verwendet. Nicht benötigt für " +"WPA(2)-PSK." msgid "User certificate (PEM encoded)" -msgstr "" +msgstr "PEM-kodiertes Benutzerzertifikat" msgid "User key (PEM encoded)" -msgstr "" +msgstr "PEM-kodierter Benutzerschlüssel" msgid "Username" msgstr "Benutzername" @@ -3612,34 +3706,34 @@ msgid "VLANs on %q (%s)" msgstr "VLANs auf %q (%s)" msgid "VPN Local address" -msgstr "" +msgstr "Lokale VPN-Adresse" msgid "VPN Local port" -msgstr "" +msgstr "Lokaler VPN-Port" msgid "VPN Server" msgstr "VPN-Server" msgid "VPN Server port" -msgstr "" +msgstr "VPN-Server Port" msgid "VPN Server's certificate SHA1 hash" -msgstr "" +msgstr "SHA1-Hash des VPN-Server-Zertifikates" msgid "VPNC (CISCO 3000 (and others) VPN)" msgstr "" msgid "Vendor" -msgstr "" +msgstr "Hersteller" msgid "Vendor Class to send when requesting DHCP" msgstr "Bei DHCP-Anfragen gesendete Vendor-Klasse" msgid "Verbose" -msgstr "" +msgstr "Umfangreiche Ausgaben" msgid "Verbose logging by aiccu daemon" -msgstr "" +msgstr "Aktiviert erweiterte Protokollierung durch den AICCU-Prozess" msgid "Verify" msgstr "Verifizieren" @@ -3675,6 +3769,8 @@ msgstr "" 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..." @@ -3683,22 +3779,25 @@ msgid "Waiting for command to complete..." msgstr "Der Befehl wird ausgeführt..." msgid "Waiting for device..." -msgstr "" +msgstr "Warte auf Gerät..." msgid "Warning" msgstr "Warnung" msgid "Warning: There are unsaved changes that will get lost on reboot!" msgstr "" +"Achtung: Es gibt ungespeicherte Änderungen die bei einem Neustart verloren " +"gehen!" 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 "" +msgstr "Gibt an, ob nur Pakete von delegierten Präfixen geroutet werden sollen" msgid "Width" -msgstr "" +msgstr "Breite" msgid "WireGuard VPN" msgstr "" @@ -3740,7 +3839,7 @@ msgid "Write received DNS requests to syslog" msgstr "Empfangene DNS-Anfragen in das Systemprotokoll schreiben" msgid "Write system log to file" -msgstr "" +msgstr "Systemprotokoll in Datei schreiben" msgid "" "You can enable or disable installed init scripts here. Changes will applied " @@ -3770,9 +3869,6 @@ msgstr "beliebig" msgid "auto" msgstr "auto" -msgid "automatic" -msgstr "automatisch" - msgid "baseT" msgstr "baseT" @@ -3795,7 +3891,7 @@ msgid "disable" msgstr "deaktivieren" msgid "disabled" -msgstr "" +msgstr "deaktiviert" msgid "expired" msgstr "abgelaufen" @@ -3821,7 +3917,7 @@ msgid "hidden" msgstr "versteckt" msgid "hybrid mode" -msgstr "" +msgstr "hybrider Modus" msgid "if target is a network" msgstr "falls Ziel ein Netzwerk ist" @@ -3842,13 +3938,10 @@ msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" msgstr "Lokale DNS-Datei" msgid "minimum 1280, maximum 1480" -msgstr "" +msgstr "Minimum 1280, Maximum 1480" msgid "minutes" -msgstr "" - -msgid "navigation Navigation" -msgstr "" +msgstr "Minuten" msgid "no" msgstr "nein" @@ -3860,7 +3953,7 @@ msgid "none" msgstr "keine" msgid "not present" -msgstr "" +msgstr "nicht vorhanden" msgid "off" msgstr "aus" @@ -3872,37 +3965,31 @@ msgid "open" msgstr "offen" msgid "overlay" -msgstr "" +msgstr "Overlay" msgid "relay mode" -msgstr "" +msgstr "Relay-Modus" msgid "routed" msgstr "routed" msgid "server mode" -msgstr "" - -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" +msgstr "Server-Modus" msgid "stateful-only" -msgstr "" +msgstr "nur zustandsorientiert" msgid "stateless" -msgstr "" +msgstr "nur zustandlos" msgid "stateless + stateful" -msgstr "" +msgstr "zustandslos + zustandsorientiert" msgid "tagged" msgstr "tagged" msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" +msgstr "Zeiteinheiten (TUs / 1024 ms) [1000-65535]" msgid "unknown" msgstr "unbekannt" @@ -3925,6 +4012,18 @@ msgstr "ja" msgid "« Back" msgstr "« Zurück" +#~ msgid "Leasetime" +#~ msgstr "Laufzeit" + +#~ msgid "Optional." +#~ msgstr "Optional" + +#~ msgid "AuthGroup" +#~ msgstr "Berechtigungsgruppe" + +#~ msgid "automatic" +#~ msgstr "automatisch" + #~ msgid "AR Support" #~ msgstr "AR-Unterstützung" diff --git a/modules/luci-base/po/el/base.po b/modules/luci-base/po/el/base.po index 4a4f63017d..e3969afff0 100644 --- a/modules/luci-base/po/el/base.po +++ b/modules/luci-base/po/el/base.po @@ -426,9 +426,6 @@ msgstr "Συνδεδεμένοι Σταθμοί" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Εξουσιοδότηση" @@ -1473,6 +1470,9 @@ msgstr "" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "" @@ -1583,6 +1583,9 @@ msgstr "Εγκατεστημένα πακέτα" msgid "Interface" msgstr "Διεπαφή" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "Παραμετροποίηση Διεπαφής" @@ -1708,9 +1711,6 @@ msgstr "" msgid "Leasefile" msgstr "Αρχείο Leases" -msgid "Leasetime" -msgstr "Χρόνος Lease" - msgid "Leasetime remaining" msgstr "Υπόλοιπο χρόνου Lease" @@ -2214,15 +2214,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3689,10 +3693,6 @@ msgstr "" msgid "auto" msgstr "αυτόματα" -#, fuzzy -msgid "automatic" -msgstr "στατικό" - msgid "baseT" msgstr "" @@ -3770,9 +3770,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "όχι" @@ -3806,12 +3803,6 @@ msgstr "" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3848,6 +3839,13 @@ msgstr "ναι" msgid "« Back" msgstr "« Πίσω" +#~ msgid "Leasetime" +#~ msgstr "Χρόνος Lease" + +#, fuzzy +#~ msgid "automatic" +#~ msgstr "στατικό" + #~ msgid "AR Support" #~ msgstr "Υποστήριξη AR" diff --git a/modules/luci-base/po/en/base.po b/modules/luci-base/po/en/base.po index e2c8401509..6537370156 100644 --- a/modules/luci-base/po/en/base.po +++ b/modules/luci-base/po/en/base.po @@ -417,9 +417,6 @@ msgstr "Associated Stations" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Authentication" @@ -1447,6 +1444,9 @@ msgstr "" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "" @@ -1552,6 +1552,9 @@ msgstr "" msgid "Interface" msgstr "Interface" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "" @@ -1677,9 +1680,6 @@ msgstr "" msgid "Leasefile" msgstr "Leasefile" -msgid "Leasetime" -msgstr "Leasetime" - msgid "Leasetime remaining" msgstr "Leasetime remaining" @@ -2181,15 +2181,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3647,9 +3651,6 @@ msgstr "" msgid "auto" msgstr "auto" -msgid "automatic" -msgstr "automatic" - msgid "baseT" msgstr "" @@ -3726,9 +3727,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "" @@ -3762,12 +3760,6 @@ msgstr "" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3804,6 +3796,12 @@ msgstr "" msgid "« Back" msgstr "« Back" +#~ msgid "Leasetime" +#~ msgstr "Leasetime" + +#~ msgid "automatic" +#~ msgstr "automatic" + #~ msgid "AR Support" #~ msgstr "AR Support" diff --git a/modules/luci-base/po/es/base.po b/modules/luci-base/po/es/base.po index 9d39621de0..a3476735b5 100644 --- a/modules/luci-base/po/es/base.po +++ b/modules/luci-base/po/es/base.po @@ -423,9 +423,6 @@ msgstr "Estaciones asociadas" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Autentificación" @@ -1469,6 +1466,9 @@ msgstr "Longitud de prefijo IPv6" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "Dirección IPv6" @@ -1581,6 +1581,9 @@ msgstr "Paquetes instalados" msgid "Interface" msgstr "Interfaz" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "Configuración del interfaz" @@ -1707,9 +1710,6 @@ msgstr "Tiempo de validación de cesión" msgid "Leasefile" msgstr "Archivo de cesiones" -msgid "Leasetime" -msgstr "Tiempo de cesión" - msgid "Leasetime remaining" msgstr "Tiempo de cesión restante" @@ -2219,15 +2219,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3765,10 +3769,6 @@ msgstr "cualquiera" msgid "auto" msgstr "auto" -#, fuzzy -msgid "automatic" -msgstr "estático" - msgid "baseT" msgstr "baseT" @@ -3845,9 +3845,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "no" @@ -3881,12 +3878,6 @@ msgstr "enrutado" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3923,6 +3914,13 @@ msgstr "sí" msgid "« Back" msgstr "« Volver" +#~ msgid "Leasetime" +#~ msgstr "Tiempo de cesión" + +#, fuzzy +#~ msgid "automatic" +#~ msgstr "estático" + #~ msgid "AR Support" #~ msgstr "Soporte a AR" diff --git a/modules/luci-base/po/fr/base.po b/modules/luci-base/po/fr/base.po index 774559334c..1aab5cb9a4 100644 --- a/modules/luci-base/po/fr/base.po +++ b/modules/luci-base/po/fr/base.po @@ -429,9 +429,6 @@ msgstr "Équipements associés" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Authentification" @@ -1481,6 +1478,9 @@ msgstr "longueur du préfixe IPv6" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "Adresse IPv6" @@ -1589,6 +1589,9 @@ msgstr "Paquets installés" msgid "Interface" msgstr "Interface" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "Configuration de l'interface" @@ -1718,9 +1721,6 @@ msgstr "Durée de validité d'un bail" msgid "Leasefile" msgstr "Fichier de baux" -msgid "Leasetime" -msgstr "Durée du bail" - msgid "Leasetime remaining" msgstr "Durée de validité" @@ -2232,15 +2232,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3785,10 +3789,6 @@ msgstr "n'importe lequel" msgid "auto" msgstr "auto" -#, fuzzy -msgid "automatic" -msgstr "statique" - msgid "baseT" msgstr "baseT" @@ -3863,9 +3863,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "non" @@ -3899,12 +3896,6 @@ msgstr "routé" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3941,6 +3932,13 @@ msgstr "oui" msgid "« Back" msgstr "« Retour" +#~ msgid "Leasetime" +#~ msgstr "Durée du bail" + +#, fuzzy +#~ msgid "automatic" +#~ msgstr "statique" + #~ msgid "AR Support" #~ msgstr "Gestion du mode AR" diff --git a/modules/luci-base/po/he/base.po b/modules/luci-base/po/he/base.po index 4b8eb8161c..d8eae1f84f 100644 --- a/modules/luci-base/po/he/base.po +++ b/modules/luci-base/po/he/base.po @@ -418,9 +418,6 @@ msgstr "תחנות קשורות" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "אימות" @@ -1430,6 +1427,9 @@ msgstr "" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "" @@ -1530,6 +1530,9 @@ msgstr "" msgid "Interface" msgstr "" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "" @@ -1652,9 +1655,6 @@ msgstr "" msgid "Leasefile" msgstr "" -msgid "Leasetime" -msgstr "" - msgid "Leasetime remaining" msgstr "" @@ -2148,15 +2148,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3600,9 +3604,6 @@ msgstr "כלשהו" msgid "auto" msgstr "אוטומטי" -msgid "automatic" -msgstr "" - msgid "baseT" msgstr "" @@ -3677,9 +3678,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "לא" @@ -3713,12 +3711,6 @@ msgstr "מנותב" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" diff --git a/modules/luci-base/po/hu/base.po b/modules/luci-base/po/hu/base.po index 4d855e6c97..dfed45de59 100644 --- a/modules/luci-base/po/hu/base.po +++ b/modules/luci-base/po/hu/base.po @@ -422,9 +422,6 @@ msgstr "Kapcsolódó kliensek" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Hitelesítés" @@ -1470,6 +1467,9 @@ msgstr "IPv6 prefix hossz" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "IPv6-cím" @@ -1579,6 +1579,9 @@ msgstr "Telepített csomagok" msgid "Interface" msgstr "Interfész" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "Interfész beállítások" @@ -1707,9 +1710,6 @@ msgstr "Bérlet érvényességi ideje" msgid "Leasefile" msgstr "Bérlet fájl" -msgid "Leasetime" -msgstr "Bérlet időtartama" - msgid "Leasetime remaining" msgstr "A bérletből hátralévő idő" @@ -2222,15 +2222,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3772,9 +3776,6 @@ msgstr "bármelyik" msgid "auto" msgstr "automatikus" -msgid "automatic" -msgstr "" - msgid "baseT" msgstr "baseT" @@ -3851,9 +3852,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "nem" @@ -3887,12 +3885,6 @@ msgstr "irányított" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3929,6 +3921,9 @@ msgstr "igen" msgid "« Back" msgstr "« Vissza" +#~ msgid "Leasetime" +#~ msgstr "Bérlet időtartama" + #~ msgid "AR Support" #~ msgstr "AR Támogatás" diff --git a/modules/luci-base/po/it/base.po b/modules/luci-base/po/it/base.po index 8b6c2d3bb9..04331ab75d 100644 --- a/modules/luci-base/po/it/base.po +++ b/modules/luci-base/po/it/base.po @@ -429,9 +429,6 @@ msgstr "Dispositivi Wi-Fi connessi" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Autenticazione PEAP" @@ -1473,6 +1470,9 @@ msgstr "Lunghezza prefisso IPv6" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "Indirizzo-IPv6" @@ -1584,6 +1584,9 @@ msgstr "Pacchetti installati" msgid "Interface" msgstr "Interfaccia" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "Configurazione Interfaccia" @@ -1709,9 +1712,6 @@ msgstr "Periodo di Validità del Lease" msgid "Leasefile" msgstr "File di lease" -msgid "Leasetime" -msgstr "Tempo di lease" - msgid "Leasetime remaining" msgstr "Tempo lease residuo" @@ -2220,15 +2220,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3724,10 +3728,6 @@ msgstr "qualsiasi" msgid "auto" msgstr "auto" -#, fuzzy -msgid "automatic" -msgstr "statico" - msgid "baseT" msgstr "baseT" @@ -3804,9 +3804,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "no" @@ -3840,12 +3837,6 @@ msgstr "instradato" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3882,6 +3873,13 @@ msgstr "Sì" msgid "« Back" msgstr "« Indietro" +#~ msgid "Leasetime" +#~ msgstr "Tempo di lease" + +#, fuzzy +#~ msgid "automatic" +#~ msgstr "statico" + #~ msgid "AR Support" #~ msgstr "Supporto AR" diff --git a/modules/luci-base/po/ja/base.po b/modules/luci-base/po/ja/base.po index 3101e0549b..714b064dcb 100644 --- a/modules/luci-base/po/ja/base.po +++ b/modules/luci-base/po/ja/base.po @@ -419,9 +419,6 @@ msgstr "認証済み端末" msgid "Auth Group" msgstr "認証グループ" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "認証" @@ -1469,6 +1466,9 @@ msgstr "IPv6 プレフィクス長" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "IPv6-アドレス" @@ -1577,6 +1577,9 @@ msgstr "インストール済みパッケージ" msgid "Interface" msgstr "インターフェース" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "インターフェース設定" @@ -1702,9 +1705,6 @@ msgstr "リース有効時間" msgid "Leasefile" msgstr "リースファイル" -msgid "Leasetime" -msgstr "リース時間" - msgid "Leasetime remaining" msgstr "残りリース時間" @@ -2216,15 +2216,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "(オプション)" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3756,9 +3760,6 @@ msgstr "全て" msgid "auto" msgstr "自動" -msgid "automatic" -msgstr "自動" - msgid "baseT" msgstr "baseT" @@ -3835,9 +3836,6 @@ msgstr "最小値 1280、最大値 1480" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "いいえ" @@ -3871,12 +3869,6 @@ msgstr "routed" msgid "server mode" msgstr "サーバー モード" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "ステートフルのみ" @@ -3913,6 +3905,15 @@ msgstr "はい" msgid "« Back" msgstr "« 戻る" +#~ msgid "Leasetime" +#~ msgstr "リース時間" + +#~ msgid "Optional." +#~ msgstr "(オプション)" + +#~ msgid "automatic" +#~ msgstr "自動" + #~ msgid "AR Support" #~ msgstr "ARサポート" diff --git a/modules/luci-base/po/ko/base.po b/modules/luci-base/po/ko/base.po index 7683df180a..587b4890af 100644 --- a/modules/luci-base/po/ko/base.po +++ b/modules/luci-base/po/ko/base.po @@ -411,9 +411,6 @@ msgstr "연결된 station 들" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "" @@ -1446,6 +1443,9 @@ msgstr "" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "IPv6-주소" @@ -1546,6 +1546,9 @@ msgstr "설치된 패키지" msgid "Interface" msgstr "인터페이스" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "인터페이스 설정" @@ -1668,9 +1671,6 @@ msgstr "" msgid "Leasefile" msgstr "" -msgid "Leasetime" -msgstr "임대 시간" - msgid "Leasetime remaining" msgstr "남아있는 임대 시간" @@ -2172,15 +2172,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3656,9 +3660,6 @@ msgstr "" msgid "auto" msgstr "" -msgid "automatic" -msgstr "" - msgid "baseT" msgstr "" @@ -3735,9 +3736,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "" @@ -3771,12 +3769,6 @@ msgstr "" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3812,3 +3804,6 @@ msgstr "" msgid "« Back" msgstr "" + +#~ msgid "Leasetime" +#~ msgstr "임대 시간" diff --git a/modules/luci-base/po/ms/base.po b/modules/luci-base/po/ms/base.po index f847e1a0c5..97912183f6 100644 --- a/modules/luci-base/po/ms/base.po +++ b/modules/luci-base/po/ms/base.po @@ -406,9 +406,6 @@ msgstr "Associated Stesen" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Authentifizierung" @@ -1417,6 +1414,9 @@ msgstr "" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "" @@ -1522,6 +1522,9 @@ msgstr "" msgid "Interface" msgstr "Interface" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "" @@ -1648,9 +1651,6 @@ msgstr "" msgid "Leasefile" msgstr "Sewa fail" -msgid "Leasetime" -msgstr "Masa penyewaan" - msgid "Leasetime remaining" msgstr "Sisa masa penyewaan" @@ -2153,15 +2153,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3620,9 +3624,6 @@ msgstr "" msgid "auto" msgstr "auto" -msgid "automatic" -msgstr "automatik" - msgid "baseT" msgstr "" @@ -3697,9 +3698,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "" @@ -3733,12 +3731,6 @@ msgstr "" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3775,6 +3767,12 @@ msgstr "" msgid "« Back" msgstr "« Kembali" +#~ msgid "Leasetime" +#~ msgstr "Masa penyewaan" + +#~ msgid "automatic" +#~ msgstr "automatik" + #~ msgid "AR Support" #~ msgstr "AR-Penyokong" diff --git a/modules/luci-base/po/no/base.po b/modules/luci-base/po/no/base.po index 65fc39e39a..9e3df81f84 100644 --- a/modules/luci-base/po/no/base.po +++ b/modules/luci-base/po/no/base.po @@ -415,9 +415,6 @@ msgstr "Tilkoblede Klienter" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Godkjenning" @@ -1456,6 +1453,9 @@ msgstr "IPv6 prefikslengde" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "IPv6-Adresse" @@ -1560,6 +1560,9 @@ msgstr "Installerte pakker" msgid "Interface" msgstr "Grensesnitt" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "Grensesnitt Konfigurasjon" @@ -1685,9 +1688,6 @@ msgstr "Gyldig leietid" msgid "Leasefile" msgstr "<abbr title=\"Leasefile\">Leie-fil</abbr>" -msgid "Leasetime" -msgstr "<abbr title=\"Leasetime\">Leietid</abbr>" - msgid "Leasetime remaining" msgstr "Gjenværende leietid" @@ -2197,15 +2197,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3738,9 +3742,6 @@ msgstr "enhver" msgid "auto" msgstr "auto" -msgid "automatic" -msgstr "" - msgid "baseT" msgstr "baseT" @@ -3817,9 +3818,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "nei" @@ -3853,12 +3851,6 @@ msgstr "rutet" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3895,6 +3887,9 @@ msgstr "ja" msgid "« Back" msgstr "« Tilbake" +#~ msgid "Leasetime" +#~ msgstr "<abbr title=\"Leasetime\">Leietid</abbr>" + #~ msgid "AR Support" #~ msgstr "AR Støtte" diff --git a/modules/luci-base/po/pl/base.po b/modules/luci-base/po/pl/base.po index 2223f53078..98067c8654 100644 --- a/modules/luci-base/po/pl/base.po +++ b/modules/luci-base/po/pl/base.po @@ -429,9 +429,6 @@ msgstr "Połączone stacje" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Uwierzytelnianie" @@ -1492,6 +1489,9 @@ msgstr "Długość prefiksu IPv6" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "Adres IPv6" @@ -1602,6 +1602,9 @@ msgstr "Zainstalowane pakiety" msgid "Interface" msgstr "Interfejs" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "Konfiguracja Interfejsu" @@ -1729,9 +1732,6 @@ msgstr "Czas ważności dzierżawy" msgid "Leasefile" msgstr "Plik dzierżaw" -msgid "Leasetime" -msgstr "Czas dzierżawy" - msgid "Leasetime remaining" msgstr "Pozostały czas dzierżawy" @@ -2241,15 +2241,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3802,9 +3806,6 @@ msgstr "dowolny" msgid "auto" msgstr "auto" -msgid "automatic" -msgstr "" - msgid "baseT" msgstr "baseT" @@ -3881,9 +3882,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "nie" @@ -3918,12 +3916,6 @@ msgstr "routowane" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3960,6 +3952,9 @@ msgstr "tak" msgid "« Back" msgstr "« Wróć" +#~ msgid "Leasetime" +#~ msgstr "Czas dzierżawy" + # Wydaje mi się że brakuje litery R... #~ msgid "AR Support" #~ msgstr "Wsparcie dla ARP" diff --git a/modules/luci-base/po/pt-br/base.po b/modules/luci-base/po/pt-br/base.po index 2767ceea5d..f2ba57555f 100644 --- a/modules/luci-base/po/pt-br/base.po +++ b/modules/luci-base/po/pt-br/base.po @@ -455,9 +455,6 @@ msgstr "Estações associadas" msgid "Auth Group" msgstr "Grupo de Autenticação" -msgid "AuthGroup" -msgstr "Grupo de Autenticação" - msgid "Authentication" msgstr "Autenticação" @@ -1540,6 +1537,9 @@ msgstr "Tamanho Prefixo IPv6" msgid "IPv6 routed prefix" msgstr "Prefixo roteável IPv6" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "Endereço IPv6" @@ -1654,6 +1654,9 @@ msgstr "Pacotes instalados" msgid "Interface" msgstr "Interface" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "Configuração da Interface" @@ -1782,9 +1785,6 @@ msgstr "Tempo de validade da atribuição" msgid "Leasefile" msgstr "Arquivo de atribuições" -msgid "Leasetime" -msgstr "Tempo de atribuição do DHCP" - msgid "Leasetime remaining" msgstr "Tempo restante da atribuição" @@ -2327,15 +2327,19 @@ msgstr "" 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." -msgstr "Opcional." - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3932,9 +3936,6 @@ msgstr "qualquer" msgid "auto" msgstr "automático" -msgid "automatic" -msgstr "automático" - msgid "baseT" msgstr "baseT" @@ -4012,9 +4013,6 @@ msgstr "mínimo 1280, máximo 1480" msgid "minutes" msgstr "minutos" -msgid "navigation Navigation" -msgstr "navegação Navegação" - # Is this yes/no or no like in no one? msgid "no" msgstr "não" @@ -4049,12 +4047,6 @@ msgstr "roteado" msgid "server mode" msgstr "modo servidor" -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 "stateful-only" msgstr "somente com estado" @@ -4091,6 +4083,27 @@ msgstr "sim" msgid "« Back" msgstr "« Voltar" +#~ 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" diff --git a/modules/luci-base/po/pt/base.po b/modules/luci-base/po/pt/base.po index 2c1567397f..cb90df5435 100644 --- a/modules/luci-base/po/pt/base.po +++ b/modules/luci-base/po/pt/base.po @@ -428,9 +428,6 @@ msgstr "Estações Associadas" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Autenticação" @@ -1477,6 +1474,9 @@ msgstr "Comprimento do prefixo IPv6" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "Endereço-IPv6" @@ -1583,6 +1583,9 @@ msgstr "Instalar pacotes" msgid "Interface" msgstr "Interface" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "Configuração da Interface" @@ -1709,9 +1712,6 @@ msgstr "Tempo de validade da concessão" msgid "Leasefile" msgstr "Ficheiro de concessões" -msgid "Leasetime" -msgstr "Tempo de concessão" - msgid "Leasetime remaining" msgstr "Tempo de atribuição restante" @@ -2221,15 +2221,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3733,10 +3737,6 @@ msgstr "qualquer" msgid "auto" msgstr "automático" -#, fuzzy -msgid "automatic" -msgstr "estático" - msgid "baseT" msgstr "baseT" @@ -3814,9 +3814,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "não" @@ -3850,12 +3847,6 @@ msgstr "" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3892,6 +3883,13 @@ msgstr "sim" msgid "« Back" msgstr "« Voltar" +#~ msgid "Leasetime" +#~ msgstr "Tempo de concessão" + +#, fuzzy +#~ msgid "automatic" +#~ msgstr "estático" + #~ msgid "AR Support" #~ msgstr "Suporte AR" diff --git a/modules/luci-base/po/ro/base.po b/modules/luci-base/po/ro/base.po index 1de4157766..d51f4d05cb 100644 --- a/modules/luci-base/po/ro/base.po +++ b/modules/luci-base/po/ro/base.po @@ -414,9 +414,6 @@ msgstr "Statiile asociate" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Autentificare" @@ -1424,6 +1421,9 @@ msgstr "" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "" @@ -1524,6 +1524,9 @@ msgstr "Pachete instalate" msgid "Interface" msgstr "Interfata" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "Configurarea interfetei" @@ -1649,9 +1652,6 @@ msgstr "" msgid "Leasefile" msgstr "" -msgid "Leasetime" -msgstr "" - msgid "Leasetime remaining" msgstr "" @@ -2145,15 +2145,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3593,9 +3597,6 @@ msgstr "oricare" msgid "auto" msgstr "auto" -msgid "automatic" -msgstr "" - msgid "baseT" msgstr "" @@ -3670,9 +3671,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "nu" @@ -3706,12 +3704,6 @@ msgstr "rutat" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" diff --git a/modules/luci-base/po/ru/base.po b/modules/luci-base/po/ru/base.po index 29077054f8..d30c643fce 100644 --- a/modules/luci-base/po/ru/base.po +++ b/modules/luci-base/po/ru/base.po @@ -427,9 +427,6 @@ msgstr "Подключенные клиенты" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Аутентификация" @@ -1476,6 +1473,9 @@ msgstr "Длина префикса IPv6" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "IPv6-адрес" @@ -1586,6 +1586,9 @@ msgstr "Установленные пакеты" msgid "Interface" msgstr "Интерфейс" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "Конфигурация интерфейса" @@ -1713,9 +1716,6 @@ msgstr "Срок действия аренды" msgid "Leasefile" msgstr "Файл аренд" -msgid "Leasetime" -msgstr "Время аренды" - msgid "Leasetime remaining" msgstr "Оставшееся время аренды" @@ -2227,15 +2227,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3774,10 +3778,6 @@ msgstr "любой" msgid "auto" msgstr "авто" -#, fuzzy -msgid "automatic" -msgstr "статический" - msgid "baseT" msgstr "baseT" @@ -3855,9 +3855,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "нет" @@ -3891,12 +3888,6 @@ msgstr "маршрутизируемый" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3933,6 +3924,13 @@ msgstr "да" msgid "« Back" msgstr "« Назад" +#~ msgid "Leasetime" +#~ msgstr "Время аренды" + +#, fuzzy +#~ msgid "automatic" +#~ msgstr "статический" + #~ msgid "AR Support" #~ msgstr "Поддержка AR" diff --git a/modules/luci-base/po/sk/base.po b/modules/luci-base/po/sk/base.po index 318d6f3081..f4037ea351 100644 --- a/modules/luci-base/po/sk/base.po +++ b/modules/luci-base/po/sk/base.po @@ -400,9 +400,6 @@ msgstr "" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "" @@ -1402,6 +1399,9 @@ msgstr "" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "" @@ -1502,6 +1502,9 @@ msgstr "" msgid "Interface" msgstr "" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "" @@ -1624,9 +1627,6 @@ msgstr "" msgid "Leasefile" msgstr "" -msgid "Leasetime" -msgstr "" - msgid "Leasetime remaining" msgstr "" @@ -2120,15 +2120,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3561,9 +3565,6 @@ msgstr "" msgid "auto" msgstr "" -msgid "automatic" -msgstr "" - msgid "baseT" msgstr "" @@ -3638,9 +3639,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "" @@ -3674,12 +3672,6 @@ msgstr "" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" diff --git a/modules/luci-base/po/sv/base.po b/modules/luci-base/po/sv/base.po index 4e262efb16..6af6d610f2 100644 --- a/modules/luci-base/po/sv/base.po +++ b/modules/luci-base/po/sv/base.po @@ -406,9 +406,6 @@ msgstr "" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "" @@ -1408,6 +1405,9 @@ msgstr "" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "" @@ -1508,6 +1508,9 @@ msgstr "" msgid "Interface" msgstr "" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "" @@ -1630,9 +1633,6 @@ msgstr "" msgid "Leasefile" msgstr "" -msgid "Leasetime" -msgstr "" - msgid "Leasetime remaining" msgstr "" @@ -2126,15 +2126,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3567,9 +3571,6 @@ msgstr "" msgid "auto" msgstr "" -msgid "automatic" -msgstr "" - msgid "baseT" msgstr "" @@ -3644,9 +3645,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "" @@ -3680,12 +3678,6 @@ msgstr "" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" diff --git a/modules/luci-base/po/templates/base.pot b/modules/luci-base/po/templates/base.pot index 704c295f02..d3fc6a7324 100644 --- a/modules/luci-base/po/templates/base.pot +++ b/modules/luci-base/po/templates/base.pot @@ -393,9 +393,6 @@ msgstr "" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "" @@ -1395,6 +1392,9 @@ msgstr "" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "" @@ -1495,6 +1495,9 @@ msgstr "" msgid "Interface" msgstr "" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "" @@ -1617,9 +1620,6 @@ msgstr "" msgid "Leasefile" msgstr "" -msgid "Leasetime" -msgstr "" - msgid "Leasetime remaining" msgstr "" @@ -2113,15 +2113,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3554,9 +3558,6 @@ msgstr "" msgid "auto" msgstr "" -msgid "automatic" -msgstr "" - msgid "baseT" msgstr "" @@ -3631,9 +3632,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "" @@ -3667,12 +3665,6 @@ msgstr "" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" diff --git a/modules/luci-base/po/tr/base.po b/modules/luci-base/po/tr/base.po index 5f829e0b7e..afabfa29d4 100644 --- a/modules/luci-base/po/tr/base.po +++ b/modules/luci-base/po/tr/base.po @@ -413,9 +413,6 @@ msgstr "" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Kimlik doğrulama" @@ -1415,6 +1412,9 @@ msgstr "" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "" @@ -1515,6 +1515,9 @@ msgstr "" msgid "Interface" msgstr "" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "" @@ -1637,9 +1640,6 @@ msgstr "" msgid "Leasefile" msgstr "" -msgid "Leasetime" -msgstr "" - msgid "Leasetime remaining" msgstr "" @@ -2133,15 +2133,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3576,9 +3580,6 @@ msgstr "herhangi" msgid "auto" msgstr "otomatik" -msgid "automatic" -msgstr "" - msgid "baseT" msgstr "" @@ -3653,9 +3654,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "hayır" @@ -3689,12 +3687,6 @@ msgstr "yönlendirildi" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" diff --git a/modules/luci-base/po/uk/base.po b/modules/luci-base/po/uk/base.po index 34bfb29160..7ee06885ff 100644 --- a/modules/luci-base/po/uk/base.po +++ b/modules/luci-base/po/uk/base.po @@ -437,9 +437,6 @@ msgstr "Приєднані станції" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Автентифікація" @@ -1484,6 +1481,9 @@ msgstr "Довжина префікса IPv6" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "IPv6-адреса" @@ -1594,6 +1594,9 @@ msgstr "Інстальовані пакети" msgid "Interface" msgstr "Інтерфейс" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "Конфігурація інтерфейсу" @@ -1720,9 +1723,6 @@ msgstr "Час чинності оренди" msgid "Leasefile" msgstr "Файл оренд" -msgid "Leasetime" -msgstr "Час оренди" - msgid "Leasetime remaining" msgstr "Час оренди, що лишився" @@ -2235,15 +2235,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3789,9 +3793,6 @@ msgstr "будь-який" msgid "auto" msgstr "авто" -msgid "automatic" -msgstr "" - msgid "baseT" msgstr "baseT" @@ -3870,9 +3871,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "ні" @@ -3906,12 +3904,6 @@ msgstr "спрямовано" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3948,6 +3940,9 @@ msgstr "так" msgid "« Back" msgstr "« Назад" +#~ msgid "Leasetime" +#~ msgstr "Час оренди" + #~ msgid "AR Support" #~ msgstr "Підтримка AR" diff --git a/modules/luci-base/po/vi/base.po b/modules/luci-base/po/vi/base.po index 213e5efb2f..239e1c251d 100644 --- a/modules/luci-base/po/vi/base.po +++ b/modules/luci-base/po/vi/base.po @@ -407,9 +407,6 @@ msgstr "" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "Xác thực" @@ -1422,6 +1419,9 @@ msgstr "" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "" @@ -1527,6 +1527,9 @@ msgstr "" msgid "Interface" msgstr "Giao diện " +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "" @@ -1652,9 +1655,6 @@ msgstr "" msgid "Leasefile" msgstr "Leasefile" -msgid "Leasetime" -msgstr "Leasetime" - msgid "Leasetime remaining" msgstr "Leasetime còn lại" @@ -2156,15 +2156,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3620,10 +3624,6 @@ msgstr "" msgid "auto" msgstr "tự động" -#, fuzzy -msgid "automatic" -msgstr "thống kê" - msgid "baseT" msgstr "" @@ -3700,9 +3700,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "" @@ -3736,12 +3733,6 @@ msgstr "" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3778,6 +3769,13 @@ msgstr "" msgid "« Back" msgstr "" +#~ msgid "Leasetime" +#~ msgstr "Leasetime" + +#, fuzzy +#~ msgid "automatic" +#~ msgstr "thống kê" + #~ msgid "AR Support" #~ msgstr "Hỗ trợ AR" diff --git a/modules/luci-base/po/zh-cn/base.po b/modules/luci-base/po/zh-cn/base.po index eb84b22f17..7f4918557e 100644 --- a/modules/luci-base/po/zh-cn/base.po +++ b/modules/luci-base/po/zh-cn/base.po @@ -1,32 +1,22 @@ msgid "" msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-21 23:08+0200\n" -"PO-Revision-Date: 2017-04-09 15:04+0800\n" -"Last-Translator: Hsing-Wang Liao <kuoruan@gmail.com>\n" -"Language: zh_CN\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\n" -"Language-Team: \n" +"Last-Translator: Hsing-Wang Liao <kuoruan@gmail.com>\n" msgid "%s is untagged in multiple VLANs!" -msgstr "%s 在多个 VLAN 中未标记" +msgstr "%s 在多个 VLAN 中均未关联!" msgid "(%d minute window, %d second interval)" -msgstr "(%d 分钟信息,%d 秒刷新)" +msgstr "(%d 分钟信息,每 %d 秒刷新)" msgid "(%s available)" -msgstr "(%s 可用)" +msgstr "(%s 可用)" msgid "(empty)" -msgstr "(空)" +msgstr "(空)" msgid "(no interfaces attached)" -msgstr "(未连接接口)" +msgstr "(没有接口连接)" msgid "-- Additional Field --" msgstr "-- 更多选项 --" @@ -47,10 +37,10 @@ msgid "-- match by uuid --" msgstr "-- 根据 UUID 匹配 --" msgid "1 Minute Load:" -msgstr "1 分钟负载:" +msgstr "1 分钟负载:" msgid "15 Minute Load:" -msgstr "15 分钟负载:" +msgstr "15 分钟负载:" msgid "4-character hexadecimal ID" msgstr "4 字符的十六进制 ID" @@ -59,13 +49,13 @@ msgid "464XLAT (CLAT)" msgstr "464XLAT (CLAT)" msgid "5 Minute Load:" -msgstr "5 分钟负载:" +msgstr "5 分钟负载:" msgid "6-octet identifier as a hex string - no colons" -msgstr "6 个八位字节的标识符 (十六进制字符串) - 无冒号" +msgstr "十六进制表示的 6 字节标识符,无冒号分隔" msgid "802.11r Fast Transition" -msgstr "802.11r 快速转换" +msgstr "802.11r 快速切换" msgid "802.11w Association SA Query maximum timeout" msgstr "802.11w 关联 SA 查询最大超时" @@ -83,62 +73,67 @@ msgid "802.11w retry timeout" msgstr "802.11w 重试超时" msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>" -msgstr "<abbr title=\"基本服务集标识符\">BSSID</abbr>" +msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>" msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port" -msgstr "<abbr title=\"域名服务系统\">DNS</abbr> 查询端口" +msgstr "<abbr title=\"Domain Name System\">DNS</abbr> 查询端口" msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port" -msgstr "<abbr title=\"域名服务系统\">DNS</abbr> 服务器端口" +msgstr "<abbr title=\"Domain Name System\">DNS</abbr> 服务器端口" msgid "" "<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the " "order of the resolvfile" -msgstr "将会按照指定的顺序查询 <abbr title=\"域名服务系统\">DNS</abbr>" +msgstr "" +"按照 resolvfile 里的顺序查询 <abbr title=\"Domain Name System\">DNS</abbr> 服" +"务器" msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>" -msgstr "<abbr title=\"扩展服务集标识符\">ESSID</abbr>" +msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>" msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address" -msgstr "<abbr title=\"互联网协议第4版\">IPv4</abbr>-地址" +msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr> 地址" msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway" -msgstr "<abbr title=\"互联网协议第4版\">IPv4</abbr>-网关" +msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr> 网关" msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask" -msgstr "<abbr title=\"互联网协议第4版\">IPv4</abbr>-子网掩码" +msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr> 子网掩码" msgid "" "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network " "(CIDR)" msgstr "" -"<abbr title=\"互联网协议第6版\">IPv6</abbr>-地址或超网 (<abbr title=\"无类别" -"域间路由\">CIDR</abbr>)" +"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr> 地址或网段(CIDR)" msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway" -msgstr "<abbr title=\"互联网协议第6版\">IPv6</abbr>-网关" +msgstr "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr> 网关" msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)" -msgstr "<abbr title=\"互联网协议第6版\">IPv6</abbr>-后缀 (十六进制)" +msgstr "" +"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr> 后缀(十六进制)" msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration" -msgstr "<abbr title=\"发光二极管\">LED</abbr> 配置" +msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 配置" msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name" -msgstr "<abbr title=\"发光二极管\">LED</abbr> 名称" +msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 名称" msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address" -msgstr "<abbr title=\"介质访问控制\">MAC</abbr>-地址" +msgstr "<abbr title=\"Media Access Control\">MAC</abbr> 地址" msgid "" "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration " "Protocol\">DHCP</abbr> leases" -msgstr "最大 <abbr title=\"动态主机配置协议\">DHCP</abbr> 分配数量" +msgstr "" +"最大 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> 租约数量" msgid "" "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for " "Domain Name System\">EDNS0</abbr> packet size" -msgstr "最大 <abbr title=\"DNS扩展名机制\">EDNS0</abbr> 数据包大小" +msgstr "" +"最大 <abbr title=\"Extension Mechanisms for Domain Name System\">EDNS0</" +"abbr> 数据包大小" msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries" msgstr "最大并发查询数" @@ -150,6 +145,7 @@ msgid "" "<br/>Note: you need to manually restart the cron service if the crontab file " "was empty before editing." msgstr "" +"<br/>注意:如果 crontab 文件在编辑前为空,则需要手动重新启动 cron 服务。" msgid "A43C + J43 + A43" msgstr "A43C + J43 + A43" @@ -173,16 +169,16 @@ msgid "ARP retry threshold" msgstr "ARP 重试阈值" msgid "ATM (Asynchronous Transfer Mode)" -msgstr "ATM (异步传输模式)" +msgstr "ATM(异步传输模式)" msgid "ATM Bridges" msgstr "ATM 桥接" msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM 虚拟通道标识 (VCI)" +msgstr "ATM 虚拟通道标识(VCI)" msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM 虚拟路径标识 (VPI)" +msgstr "ATM 虚拟路径标识(VPI)" msgid "" "ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " @@ -217,10 +213,10 @@ msgid "Activate this network" msgstr "激活此网络" msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes" -msgstr "活动的 <abbr title=\"互联网协议第4版\">IPv4</abbr>-链路" +msgstr "活动的 <abbr title=\"Internet Protocol Version 4\">IPv4</abbr> 路由" msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes" -msgstr "活动的 <abbr title=\"互联网协议第6版\">IPv6</abbr>-链路" +msgstr "活动的 <abbr title=\"Internet Protocol Version 6\">IPv6</abbr> 路由" msgid "Active Connections" msgstr "活动连接" @@ -262,7 +258,7 @@ msgid "Advanced Settings" msgstr "高级设置" msgid "Aggregate Transmit Power(ACTATP)" -msgstr "总发射功率 (ACTATP)" +msgstr "总发射功率(ACTATP)" msgid "Alert" msgstr "警戒" @@ -276,7 +272,7 @@ msgid "Allocate IP sequentially" msgstr "顺序分配 IP" msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication" -msgstr "允许 <abbr title=\"安全外壳协议\">SSH</abbr> 密码验证" +msgstr "允许 <abbr title=\"Secure Shell\">SSH</abbr> 密码验证" msgid "Allow all except listed" msgstr "仅允许列表外" @@ -291,14 +287,14 @@ msgid "Allow remote hosts to connect to local SSH forwarded ports" msgstr "允许远程主机连接到本地 SSH 转发端口" msgid "Allow root logins with password" -msgstr "允许 Root 用户凭密码登录" +msgstr "允许 root 用户凭密码登录" msgid "Allow the <em>root</em> user to login with password" msgstr "允许 <em>root</em> 用户凭密码登录" msgid "" "Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "允许 127.0.0.0/8 回环范围内的上行响应,例如: RBL 服务" +msgstr "允许 127.0.0.0/8 回环范围内的上行响应,例如:RBL 服务" msgid "Allowed IPs" msgstr "允许的 IP" @@ -311,13 +307,13 @@ msgstr "" "faq=comparison\">隧道对比</a>" msgid "Always announce default router" -msgstr "总是广播默认路由" +msgstr "总是通告默认路由" msgid "Annex" msgstr "Annex" msgid "Annex A + L + M (all)" -msgstr "Annex A + L + M (全部)" +msgstr "Annex A + L + M(全部)" msgid "Annex A G.992.1" msgstr "Annex A G.992.1" @@ -332,7 +328,7 @@ msgid "Annex A G.992.5" msgstr "Annex A G.992.5" msgid "Annex B (all)" -msgstr "Annex B (全部)" +msgstr "Annex B(全部)" msgid "Annex B G.992.1" msgstr "Annex B G.992.1" @@ -344,13 +340,13 @@ msgid "Annex B G.992.5" msgstr "Annex B G.992.5" msgid "Annex J (all)" -msgstr "Annex J (全部)" +msgstr "Annex J(全部)" msgid "Annex L G.992.3 POTS 1" msgstr "Annex L G.992.3 POTS 1" msgid "Annex M (all)" -msgstr "Annex M (全部)" +msgstr "Annex M(全部)" msgid "Annex M G.992.3" msgstr "Annex M G.992.3" @@ -359,13 +355,13 @@ msgid "Annex M G.992.5" msgstr "Annex M G.992.5" msgid "Announce as default router even if no public prefix is available." -msgstr "即使没有可用的公共前缀也广播默认路由。" +msgstr "即使没有可用的公网前缀,也仍通告自己为默认路由。" msgid "Announced DNS domains" -msgstr "广播的 DNS 域名" +msgstr "通告的 DNS 域名" msgid "Announced DNS servers" -msgstr "广播的 DNS 服务器" +msgstr "通告的 DNS 服务器" msgid "Anonymous Identity" msgstr "匿名身份" @@ -396,14 +392,14 @@ msgstr "正在应用更改" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "给每个公共 IPv6 前缀分配指定长度的固定部分" +msgstr "将每个公共 IPv6 前缀的给定长度部分分配给此接口" msgid "Assign interfaces..." msgstr "分配接口..." msgid "" "Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "指定此接口使用的十六进制子 ID 前缀部分。" +msgstr "将此十六进制子 ID 前缀分配给此接口" msgid "Associated Stations" msgstr "已连接站点" @@ -411,9 +407,6 @@ msgstr "已连接站点" msgid "Auth Group" msgstr "认证组" -msgid "AuthGroup" -msgstr "认证组" - msgid "Authentication" msgstr "认证" @@ -433,16 +426,16 @@ msgid "Automatic" msgstr "自动" msgid "Automatic Homenet (HNCP)" -msgstr "自动家庭网络 (HNCP)" +msgstr "自动家庭网络(HNCP)" msgid "Automatically check filesystem for errors before mounting" msgstr "在挂载前自动检查文件系统错误" msgid "Automatically mount filesystems on hotplug" -msgstr "通过 Hotplug 自动挂载磁盘" +msgstr "通过 hotplug 自动挂载磁盘" msgid "Automatically mount swap on hotplug" -msgstr "通过 Hotplug 自动挂载 Swap 分区" +msgstr "通过 hotplug 自动挂载 swap 分区" msgid "Automount Filesystem" msgstr "自动挂载磁盘" @@ -457,7 +450,7 @@ msgid "Available packages" msgstr "可用软件包" msgid "Average:" -msgstr "平均:" +msgstr "平均:" msgid "B43 + B43C" msgstr "B43 + B43C" @@ -519,7 +512,7 @@ msgid "Bind only to specific interfaces rather than wildcard address." msgstr "仅绑定到特定接口,而不是全部地址。" msgid "Bind the tunnel to this interface (optional)." -msgstr "将隧道绑定到此接口 (可选)。" +msgstr "将隧道绑定到此接口(可选)。" msgid "Bitrate" msgstr "传输速率" @@ -540,10 +533,10 @@ msgid "Bring up on boot" msgstr "开机自动运行" msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s 无线网卡" +msgstr "Broadcom 802.11%s 无线控制器" msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 无线网卡" +msgstr "Broadcom BCM%04x 802.11 无线控制器" msgid "Buffered" msgstr "已缓冲" @@ -557,10 +550,10 @@ msgid "Buttons" msgstr "按键" msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "CA 证书,如果留空的话证书将在第一次连接时被保存。" +msgstr "CA 证书,如果留空,则证书将在第一次连接后被保存。" msgid "CPU usage (%)" -msgstr "CPU 使用率 (%)" +msgstr "CPU 使用率(%)" msgid "Cancel" msgstr "取消" @@ -600,12 +593,14 @@ msgid "" "<em>unspecified</em> to remove the interface from the associated zone or " "fill out the <em>create</em> field to define a new zone and attach the " "interface to it." -msgstr "此接口的防火墙区域。填写<em>创建</em>栏可新建防火墙区域。" +msgstr "" +"为此接口分配所属的防火墙区域,选择“不指定”可将该接口移出已关联的区域,或者填" +"写“创建”栏来创建一个新的区域,并将当前接口与之建立关联。" msgid "" "Choose the network(s) you want to attach to this wireless interface or fill " "out the <em>create</em> field to define a new network." -msgstr "选择指派到此无线接口的网络。填写<em>创建</em>栏可新建网络。" +msgstr "选择指派到此无线接口的网络,或者填写“创建”栏来新建网络。" msgid "Cipher" msgstr "算法" @@ -619,7 +614,7 @@ msgid "" "\"Perform reset\" (only possible with squashfs images)." msgstr "" "点击“生成备份”下载当前配置文件的 tar 存档。要将固件恢复到初始状态,请单击“执" -"行重置” (仅 Squashfs 固件有效)。" +"行重置”(仅 squashfs 格式的固件有效)。" msgid "Client" msgstr "客户端 Client" @@ -630,7 +625,7 @@ msgstr "请求 DHCP 时发送的客户 ID" msgid "" "Close inactive connection after the given amount of seconds, use 0 to " "persist connection" -msgstr "定时关闭非活动链接 (秒),0 为持续连接" +msgstr "在给定时间(秒)后关闭非活动链接,0 为保持连接" msgid "Close list..." msgstr "关闭列表..." @@ -639,10 +634,10 @@ msgid "Collecting data..." msgstr "正在收集数据..." msgid "Command" -msgstr "进程命令" +msgstr "命令" msgid "Common Configuration" -msgstr "一般设置" +msgstr "一般配置" msgid "Configuration" msgstr "配置" @@ -669,7 +664,7 @@ msgid "Connection to server fails when TLS cannot be used" msgstr "当 TLS 不可用时,与服务器连接失败" msgid "Connections" -msgstr "链接" +msgstr "连接" msgid "Country" msgstr "国家" @@ -707,16 +702,16 @@ msgstr "自定义分配的 IPv6 前缀" msgid "" "Custom feed definitions, e.g. private feeds. This file can be preserved in a " "sysupgrade." -msgstr "" -"自定义的软件源地址 (例如私有的软件源)。此处设定的源地址在系统升级时将被保留" +msgstr "自定义软件源地址,例如:私有的软件源。此文件在系统升级时将被保留。" msgid "Custom feeds" -msgstr "自定义的软件源" +msgstr "自定义软件源" msgid "" "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode" "\">LED</abbr>s if possible." -msgstr "自定义 <abbr title=\"发光二极管\">LED</abbr> 的活动状态。" +msgstr "" +"自定义设备 <abbr title=\"Light Emitting Diode\">LED</abbr> 行为(如果可能)。" msgid "DHCP Leases" msgstr "DHCP 分配" @@ -731,7 +726,7 @@ msgid "DHCP client" msgstr "DHCP 客户端" msgid "DHCP-Options" -msgstr "DHCP-选项" +msgstr "DHCP 选项" msgid "DHCPv6 Leases" msgstr "DHCPv6 分配" @@ -758,7 +753,7 @@ msgid "DNSSEC" msgstr "DNSSEC" msgid "DNSSEC check unsigned" -msgstr "DNSSEC 未签名检查" +msgstr "DNSSEC 检查未签名" msgid "DPD Idle Timeout" msgstr "DPD 空闲超时" @@ -791,7 +786,7 @@ msgid "Default gateway" msgstr "默认网关" msgid "Default is stateless + stateful" -msgstr "默认是无状态 + 有状态" +msgstr "默认是无状态的 + 有状态的" msgid "Default route" msgstr "默认路由" @@ -852,7 +847,9 @@ msgstr "禁用" msgid "" "Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for " "this interface." -msgstr "禁用本接口的 <abbr title=\"动态主机配置协议\">DHCP</abbr>。" +msgstr "" +"不在此接口提供 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" +"abbr> 服务。" msgid "Disable DNS setup" msgstr "停用 DNS 设定" @@ -864,7 +861,7 @@ msgid "Disabled" msgstr "禁用" msgid "Disabled (default)" -msgstr "禁用 (默认)" +msgstr "禁用(默认)" msgid "Discard upstream RFC1918 responses" msgstr "丢弃 RFC1918 上行响应数据" @@ -876,7 +873,7 @@ msgid "Distance Optimization" msgstr "距离优化" msgid "Distance to farthest network member in meters." -msgstr "最远网络用户的距离 (米)。" +msgstr "最远网络用户的距离(米)。" msgid "Distribution feeds" msgstr "发行版软件源" @@ -890,18 +887,18 @@ msgid "" "Forwarder for <abbr title=\"Network Address Translation\">NAT</abbr> " "firewalls" msgstr "" -"Dnsmasq 为 <abbr title=\"网络地址转换\">NAT</abbr> 防火墙提供了一个集成的 " -"<abbr title=\"动态主机配置协议\">DHCP</abbr> 服务器和 <abbr title=\"域名系统" -"\">DNS</abbr> 转发器" +"Dnsmasq 为 <abbr title=\"Network Address Translation\">NAT</abbr> 防火墙提供" +"了一个集成的 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> " +"服务器和 <abbr title=\"Domain Name System\">DNS</abbr> 转发器" msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "不缓存无用的回应, 比如: 不存在的域。" +msgstr "不缓存无用的回应, 比如:不存在的域名" msgid "Do not forward requests that cannot be answered by public name servers" msgstr "不转发公共域名服务器无法回应的请求" msgid "Do not forward reverse lookups for local networks" -msgstr "不转发反向查询本地网络的 Lookups 命令" +msgstr "不转发本地网络的反向查询" msgid "Domain required" msgstr "忽略空域名解析" @@ -910,12 +907,13 @@ msgid "Domain whitelist" msgstr "域名白名单" msgid "Don't Fragment" -msgstr "禁止碎片" +msgstr "禁止分片" msgid "" "Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without " "<abbr title=\"Domain Name System\">DNS</abbr>-Name" -msgstr "不转发没有 <abbr title=\"域名系统\">DNS</abbr> 名称的解析请求" +msgstr "" +"不转发没有 <abbr title=\"Domain Name System\">DNS</abbr> 名称的解析请求" msgid "Download and install package" msgstr "下载并安装软件包" @@ -930,14 +928,14 @@ msgid "" "Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access " "and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server" msgstr "" -"Dropbear 提供了集成的 <abbr title=\"安全复制\">SCP</abbr> 服务器和基于 <abbr " -"title=\"安全外壳协议\">SSH</abbr> 的 Shell 访问" +"Dropbear 提供 <abbr title=\"Secure Shell\">SSH</abbr> 访问和 <abbr title=" +"\"Secure Copy\">SCP</abbr> 服务" msgid "Dual-Stack Lite (RFC6333)" msgstr "Dual-Stack Lite (RFC6333)" msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>" -msgstr "动态 <abbr title=\"动态主机配置协议\">DHCP</abbr>" +msgstr "动态 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>" msgid "Dynamic tunnel" msgstr "动态隧道" @@ -946,7 +944,7 @@ msgid "" "Dynamically allocate DHCP addresses for clients. If disabled, only clients " "having static leases will be served." msgstr "" -"动态分配 DHCP 地址。如果禁用,则只能为静态租用表中的客户端提供网络服务。" +"为所有客户端提供 DHCP 服务。如果禁用,将只对具有静态租约的客户提供服务。" msgid "EA-bits length" msgstr "EA-bits 长度" @@ -960,7 +958,7 @@ msgstr "修改" msgid "" "Edit the raw configuration data above to fix any error and hit \"Save\" to " "reload the page." -msgstr "编辑上方的原始配置以修复错误并按下“保存”按钮以重新载入此页面。" +msgstr "编辑上方的原始配置数据来修复错误,点击“保存”按钮以重新载入此页面。" msgid "Edit this interface" msgstr "修改此接口" @@ -975,7 +973,7 @@ msgid "Enable" msgstr "启用" msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>" -msgstr "开启 <abbr title=\"生成树协议\">STP</abbr>" +msgstr "开启 <abbr title=\"Spanning Tree Protocol\">STP</abbr>" msgid "Enable HE.net dynamic endpoint update" msgstr "启用 HE.net 动态终端更新" @@ -1002,7 +1000,7 @@ msgid "Enable VLAN functionality" msgstr "启用 VLAN" msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "启用 WPS 按键配置,要求使用 WPA(2)-PSK" +msgstr "启用 WPS 一键加密按钮,需要 WPA(2)-PSK" msgid "Enable learning and aging" msgstr "启用智能交换学习" @@ -1014,7 +1012,7 @@ msgid "Enable mirroring of outgoing packets" msgstr "启用流出数据包镜像" msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "启用封装数据包的 DF (禁止碎片) 标志。" +msgstr "启用后报文的 DF(禁止分片)标志。" msgid "Enable this mount" msgstr "启用挂载点" @@ -1034,7 +1032,7 @@ msgid "" msgstr "启用属于同一移动域的接入点之间的快速漫游" msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "在此桥接上启用生成协议树" +msgstr "在此桥接上启用生成树协议" msgid "Encapsulation mode" msgstr "封装模式" @@ -1055,7 +1053,7 @@ msgid "Error" msgstr "错误" msgid "Errored seconds (ES)" -msgstr "错误秒数 (ES)" +msgstr "错误秒数(ES)" msgid "Ethernet Adapter" msgstr "以太网适配器" @@ -1074,25 +1072,25 @@ msgstr "到期时间" msgid "" "Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)." -msgstr "租用地址的到期时间,最短 2 分钟 (<code>2m</code>)。" +msgstr "租用地址的到期时间,最短 2 分钟(<code>2m</code>)。" msgid "External" msgstr "外部" msgid "External R0 Key Holder List" -msgstr "外部 R0KH (R0 Key Holder) 列表" +msgstr "外部 <abbr title=\"R0 Key Holder\">R0KH</abbr> 列表" msgid "External R1 Key Holder List" -msgstr "外部 R1KH (R1 Key Holder) 列表" +msgstr "外部 <abbr title=\"R1 Key Holder\">R1KH</abbr> 列表" msgid "External system log server" -msgstr "外部日志服务器" +msgstr "外部系统日志服务器地址" msgid "External system log server port" -msgstr "外部日志服务器端口" +msgstr "外部系统日志服务器端口" msgid "External system log server protocol" -msgstr "外部日志服务器协议" +msgstr "外部系统日志服务器协议" msgid "Extra SSH command options" msgstr "额外的 SSH 命令选项" @@ -1118,9 +1116,7 @@ msgstr "过滤无用包" msgid "" "Find all currently attached filesystems and swap and replace configuration " "with defaults based on what was detected" -msgstr "" -"查找所有当前系统上的分区和 Swap 并使用基于所找到的分区生成的配置文件替换默认" -"配置" +msgstr "查找当前系统上的所有分区和 swap 设备,并根据查找结果生成并替换现有配置" msgid "Find and join network" msgstr "搜索并加入网络" @@ -1171,7 +1167,7 @@ msgid "Force" msgstr "强制" msgid "Force CCMP (AES)" -msgstr "强制 CCMP (AES)" +msgstr "强制 CCMP(AES)" msgid "Force DHCP on this network even if another server is detected." msgstr "即使检测到另一台服务器,也要强制使用此网络上的 DHCP。" @@ -1180,7 +1176,7 @@ msgid "Force TKIP" msgstr "强制 TKIP" msgid "Force TKIP and CCMP (AES)" -msgstr "强制 TKIP 和 CCMP (AES)" +msgstr "强制 TKIP 和 CCMP(AES)" msgid "Force link" msgstr "强制链路" @@ -1195,7 +1191,7 @@ msgid "Forward DHCP traffic" msgstr "转发 DHCP 数据包" msgid "Forward Error Correction Seconds (FECS)" -msgstr "前向纠错秒数 (FECS)" +msgstr "前向纠错秒数(FECS)" msgid "Forward broadcast traffic" msgstr "转发广播数据包" @@ -1219,7 +1215,7 @@ msgid "" "Further information about WireGuard interfaces and peers at <a href=\"http://" "wireguard.io\">wireguard.io</a>." msgstr "" -"有关 WireGuard 接口和 Peer 的更多信息: <a href=\"http://wireguard.io" +"有关 WireGuard 接口和 Peer 的更多信息:<a href=\"http://wireguard.io" "\">wireguard.io</a>。" msgid "GHz" @@ -1250,7 +1246,7 @@ msgid "Generate archive" msgstr "生成备份" msgid "Generic 802.11%s Wireless Controller" -msgstr "通用 802.11%s 无线网卡" +msgstr "通用 802.11%s 无线控制器" msgid "Given password confirmation did not match, password not changed!" msgstr "由于密码验证不匹配,密码没有更改!" @@ -1280,7 +1276,7 @@ msgid "HE.net username" msgstr "HE.net 用户名" msgid "HT mode (802.11n)" -msgstr "HT 模式 (802.11n)" +msgstr "HT 模式(802.11n)" msgid "Handler" msgstr "处理程序" @@ -1289,7 +1285,7 @@ msgid "Hang Up" msgstr "挂起" msgid "Header Error Code Errors (HEC)" -msgstr "请求头的错误代码错误 (HEC)" +msgstr "请求头错误代码错误(HEC)" msgid "Heartbeat" msgstr "心跳" @@ -1302,13 +1298,13 @@ msgstr "配置路由器的部分基础信息。" msgid "" "Here you can paste public SSH-Keys (one per line) for SSH public-key " "authentication." -msgstr "请在这里粘贴公共 SSH 密钥用于 SSH 公钥认证 (每行一个)。" +msgstr "请在此处粘贴 SSH 公钥,每行一个,用于 SSH 公钥认证。" msgid "Hermes 802.11b Wireless Controller" -msgstr "Hermes 802.11b 无线网卡" +msgstr "Hermes 802.11b 无线控制器" msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>" -msgstr "隐藏 <abbr title=\"扩展服务集标识符\">ESSID</abbr>" +msgstr "隐藏 <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>" msgid "Host" msgstr "主机" @@ -1320,7 +1316,7 @@ msgid "Host expiry timeout" msgstr "主机到期超时" msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network" -msgstr "主机 IP 或网络" +msgstr "主机 <abbr title=\"Internet Protocol Address\">IP</abbr> 或网络" msgid "Hostname" msgstr "主机名" @@ -1380,7 +1376,7 @@ msgid "IPv4 prefix length" msgstr "IPv4 地址前缀长度" msgid "IPv4-Address" -msgstr "IPv4-地址" +msgstr "IPv4 地址" msgid "IPv4-in-IPv4 (RFC2003)" msgstr "IPv4-in-IPv4 (RFC2003)" @@ -1407,7 +1403,7 @@ msgid "IPv6 address" msgstr "IPv6 地址" msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "绑定到本地隧道终点的 IPv6 地址 (可选)" +msgstr "绑定到隧道本端的 IPv6 地址(可选)" msgid "IPv6 assignment hint" msgstr "IPv6 分配提示" @@ -1430,8 +1426,11 @@ msgstr "IPv6 地址前缀长度" msgid "IPv6 routed prefix" msgstr "IPv6 路由前缀" +msgid "IPv6 suffix" +msgstr "IPv6 后缀" + msgid "IPv6-Address" -msgstr "IPv6-地址" +msgstr "IPv6 地址" msgid "IPv6-PD" msgstr "IPv6-PD" @@ -1456,12 +1455,12 @@ msgstr "选中以禁用加密" msgid "" "If specified, mount the device by its UUID instead of a fixed device node" -msgstr "用 UUID 来挂载设备" +msgstr "如果指定,则通过 UUID 而不是固定的设备文件来挂载设备" msgid "" "If specified, mount the device by the partition label instead of a fixed " "device node" -msgstr "用卷标来挂载设备" +msgstr "如果指定,则通过分区卷标而不是固定的设备文件来挂载设备" msgid "If unchecked, no default route is configured" msgstr "留空则不配置默认路由" @@ -1475,7 +1474,11 @@ msgid "" "\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very " "slow process as the swap-device cannot be accessed with the high datarates " "of the <abbr title=\"Random Access Memory\">RAM</abbr>." -msgstr "如果物理内存不足,闲置数据可自动移到交换区暂存,以提高可用内存。" +msgstr "" +"如果物理内存不足,闲置数据可自动移到 swap 区暂存,以增加可用的 <abbr title=" +"\"Random Access Memory\">RAM</abbr>。请注意:swap 区的数据处理会非常慢,因为 " +"swap设备无法像 <abbr title=\"Random Access Memory\">RAM</abbr> 这样的高速率访" +"问。" msgid "Ignore <code>/etc/hosts</code>" msgstr "忽略 <code>/etc/hosts</code>" @@ -1496,14 +1499,14 @@ msgid "" "In order to prevent unauthorized access to the system, your request has been " "blocked. Click \"Continue »\" below to return to the previous page." msgstr "" -"为了防止对系统的未授权访问,您的请求已被阻止。点击下面的 “继续 »” 来返回上一" +"为了防止未经授权访问系统,您的请求已被阻止。点击下面的 “继续 »” 来返回上一" "页。" msgid "Inactivity timeout" msgstr "活动超时" msgid "Inbound:" -msgstr "入站:" +msgstr "入站:" msgid "Info" msgstr "信息" @@ -1532,6 +1535,9 @@ msgstr "已安装软件包" msgid "Interface" msgstr "接口" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "接口设备 %q 从 %q 自动迁移到了 %q。" + msgid "Interface Configuration" msgstr "接口配置" @@ -1572,13 +1578,13 @@ msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." msgstr "无效的 VLAN ID!只有 %d 和 %d 之间的 ID 有效。" msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "无效的 VLAN ID!只允许唯一的 ID。" +msgstr "无效的 VLAN ID!只允许唯一的 ID" msgid "Invalid username and/or password! Please try again." msgstr "无效的用户名和/或密码!请重试。" msgid "Isolate Clients" -msgstr "" +msgstr "隔离客户端" msgid "" "It appears that you are trying to flash an image that does not fit into the " @@ -1592,10 +1598,10 @@ msgid "Join Network" msgstr "加入网络" msgid "Join Network: Wireless Scan" -msgstr "加入网络: 搜索无线" +msgstr "加入网络:搜索无线" msgid "Joining Network: %q" -msgstr "加入网络: %q" +msgstr "加入网络:%q" msgid "Keep settings" msgstr "保留配置" @@ -1654,9 +1660,6 @@ msgstr "有效租期" msgid "Leasefile" msgstr "租约文件" -msgid "Leasetime" -msgstr "租用时间" - msgid "Leasetime remaining" msgstr "剩余租期" @@ -1667,19 +1670,19 @@ msgid "Leave empty to use the current WAN address" msgstr "留空则使用当前 WAN 地址" msgid "Legend:" -msgstr "图例:" +msgstr "图例:" msgid "Limit" msgstr "客户数" msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "将DNS服务限制到我们提供DNS的子网接口。" +msgstr "仅在网卡所属的子网中提供 DNS 服务。" msgid "Limit listening to these interfaces, and loopback." msgstr "仅监听这些接口和环回接口。" msgid "Line Attenuation (LATN)" -msgstr "线路衰减 (LATN)" +msgstr "线路衰减(LATN)" msgid "Line Mode" msgstr "线路模式" @@ -1697,8 +1700,7 @@ msgid "" "List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward " "requests to" msgstr "" -"将指定域名的解析请求转发到指定的 <abbr title=\"域名系统\">DNS</abbr> 服务器 " -"(按照示例填写)" +"将请求转发到的 <abbr title=\"Domain Name System\">DNS</abbr> 服务器列表" msgid "" "List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-" @@ -1707,9 +1709,9 @@ msgid "" "from the R0KH that the STA used during the Initial Mobility Domain " "Association." msgstr "" -"同一移动域中的 R0KH 列表。<br />格式: MAC 地址,NAS标识符,128位密钥 (十六进制" -"字符串)。<br />在从初始移动域关联期间使用的 R0KH 中请求 PMK-R1 密钥时,该列表" -"用于将 R0KH-ID (NAS标识符)映射到目标 MAC 地址。" +"同一移动域中的 R0KH 列表。<br />格式:MAC 地址,NAS 标识符,128 位密钥(十六" +"进制字符串)。<br />在从初始移动域关联期间使用的 R0KH 中请求 PMK-R1 密钥时," +"该列表用于将 R0KH-ID(NAS 标识符)映射到目标 MAC 地址。" msgid "" "List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID " @@ -1718,10 +1720,10 @@ msgid "" "R0KH. This is also the list of authorized R1KHs in the MD that can request " "PMK-R1 keys." msgstr "" -"同一移动域中的 R1KH 列表。<br />格式: MAC地址,R1KH-ID (包含冒号的6个八位字" -"节),128位密钥 (十六进制字符串)。<br />当从 R0KH 发送 PMK-R1 键时,此列表用于" -"将 R1KH-ID 映射到目标 MAC 地址。这也是可以请求 PMK-R1 键的 MD 中授权的 R1KH " -"的列表。" +"同一移动域中的 R1KH 列表。<br />格式:MAC 地址,R1KH-ID(包含冒号的 6 个八位" +"字节),128 位密钥(十六进制字符串)。<br />当从 R0KH 发送 PMK-R1 键时,此列" +"表用于将 R1KH-ID 映射到目标 MAC 地址。这也是可以请求 PMK-R1 键的 MD 中授权的 " +"R1KH 的列表。" msgid "List of SSH key files for auth" msgstr "用于认证的 SSH 密钥文件列表" @@ -1812,22 +1814,22 @@ msgid "Logout" msgstr "退出" msgid "Loss of Signal Seconds (LOSS)" -msgstr "信号丢失秒数 (LOSS)" +msgstr "信号丢失秒数(LOSS)" msgid "Lowest leased address as offset from the network address." msgstr "网络地址的起始分配基址。" msgid "MAC-Address" -msgstr "MAC-地址" +msgstr "MAC 地址" msgid "MAC-Address Filter" -msgstr "MAC-地址过滤" +msgstr "MAC 地址过滤" msgid "MAC-Filter" -msgstr "MAC-过滤" +msgstr "MAC 过滤" msgid "MAC-List" -msgstr "MAC-列表" +msgstr "MAC 列表" msgid "MAP / LW4over6" msgstr "MAP / LW4over6" @@ -1847,13 +1849,13 @@ msgstr "MTU" msgid "" "Make sure to clone the root filesystem using something like the commands " "below:" -msgstr "请确认你已经复制过整个根文件系统,例如使用以下命令:" +msgstr "确保使用以下命令来复制根文件系统:" msgid "Manual" msgstr "手动" msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "最大可达数据速率 (ATTNDR)" +msgstr "最大可达数据速率(ATTNDR)" msgid "Maximum allowed number of active DHCP leases" msgstr "允许的最大 DHCP 租用数" @@ -1865,7 +1867,7 @@ msgid "Maximum allowed size of EDNS.0 UDP packets" msgstr "允许的最大 EDNS.0 UDP 数据包大小" msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "调制解调器就绪的最大等待时间 (秒)" +msgstr "调制解调器就绪的最大等待时间(秒)" msgid "Maximum hold time" msgstr "最大持续时间" @@ -1874,7 +1876,8 @@ msgid "" "Maximum length of the name is 15 characters including the automatic protocol/" "bridge prefix (br-, 6in4-, pppoe- etc.)" msgstr "" -"名称的最大长度为 15 个字符,包括自动协议/网桥前缀 (br-, 6in4-, pppoe- 等等)" +"名称的最大长度为 15 个字符,包含根据协议类型,网桥自动添加上的名字前缀(br-、" +"6in4-、pppoe- 等)" msgid "Maximum number of leased addresses." msgstr "最大地址分配数量。" @@ -1886,7 +1889,7 @@ msgid "Memory" msgstr "内存" msgid "Memory usage (%)" -msgstr "内存使用率 (%)" +msgstr "内存使用率(%)" msgid "Metric" msgstr "跃点数" @@ -1951,7 +1954,7 @@ msgid "Mount point" msgstr "挂载点" msgid "Mount swap not specifically configured" -msgstr "自动挂载未专门配置的 Swap 分区" +msgstr "自动挂载未专门配置的 swap 分区" msgid "Mounted file systems" msgstr "已挂载的文件系统" @@ -1975,10 +1978,10 @@ msgid "NAT64 Prefix" msgstr "NAT64 前缀" msgid "NCM" -msgstr "" +msgstr "NCM" msgid "NDP-Proxy" -msgstr "NDP-代理" +msgstr "NDP 代理" msgid "NT Domain" msgstr "NT 域" @@ -2059,13 +2062,13 @@ msgid "Noise" msgstr "噪声" msgid "Noise Margin (SNR)" -msgstr "噪声容限 (SNR)" +msgstr "噪声容限(SNR)" msgid "Noise:" -msgstr "噪声:" +msgstr "噪声:" msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "非抢占 CRC 错误 (CRC_P)" +msgstr "非抢占 CRC 错误(CRC_P)" msgid "Non-wildcard" msgstr "非全部地址" @@ -2086,10 +2089,10 @@ msgid "Not connected" msgstr "未连接" msgid "Note: Configuration files will be erased." -msgstr "注意: 配置文件将被删除。" +msgstr "注意:配置文件将被删除。" msgid "Note: interface name length" -msgstr "注意: 接口名称长度" +msgstr "注意:接口名称长度" msgid "Notice" msgstr "注意" @@ -2101,7 +2104,7 @@ msgid "OK" msgstr "确认" msgid "OPKG-Configuration" -msgstr "OPKG-配置" +msgstr "OPKG 配置" msgid "Obfuscated Group Password" msgstr "混淆组密码" @@ -2121,8 +2124,9 @@ msgid "" "<samp>eth0.1</samp>)." msgstr "" "在此页面,你可以配置网络接口。你可以勾选“桥接接口”,并输入由空格分隔的多个网" -"络接口的名称来桥接多个接口。还可以使用 <abbr title=\"虚拟局域网\">VLAN</" -"abbr> 符号 <samp>INTERFACE.VLANNR</samp> (例如: <samp>eth0.1</samp>)。" +"络接口的名称来桥接多个接口。接口名称中可以使用 <abbr title=\"Virtual Local " +"Area Network\">VLAN</abbr> 记号 <samp>INTERFACE.VLANNR</samp>(例如:" +"<samp>eth0.1</samp>)。" msgid "On-State Delay" msgstr "通电时间" @@ -2143,7 +2147,7 @@ msgid "Open list..." msgstr "打开列表..." msgid "OpenConnect (CISCO AnyConnect)" -msgstr "开放连接 (CISCO AnyConnect)" +msgstr "OpenConnect (CISCO AnyConnect)" msgid "Operating frequency" msgstr "工作频率" @@ -2158,13 +2162,10 @@ msgid "Optional" msgstr "可选" msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "可选,设置这个选项会覆盖默认设定的服务器 (tic.sixxs.net)" +msgstr "可选,设置这个选项会覆盖默认服务器(tic.sixxs.net)" msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "可选,如果你的 SIXXS 账号拥有一个以上的隧道请设置此项." - -msgid "Optional." -msgstr "可选。" +msgstr "可选,如果你的 SIXXS 账号拥有一个以上的隧道请设置此项" msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " @@ -2173,6 +2174,16 @@ msgstr "" "可选,传出加密数据包的 32 位标记。请输入十六进制值,以 <code>0x</code> 开头。" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" +"可选,允许的值:'eui64'、'random' 和其他固定值(例如:'::1' 或 '::1:2')。当" +"从授权服务器获取到 IPv6 前缀(如 'a:b:c:d::'),使用后缀(如 '::1')合成 " +"IPv6 地址('a:b:c:d::1')分配给此接口。" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "可选,Base64 编码的预共享密钥。" @@ -2189,14 +2200,14 @@ msgid "Optional. Maximum Transmission Unit of tunnel interface." msgstr "可选,隧道接口的最大传输单元。" msgid "Optional. Port of peer." -msgstr "可选,Peer的端口。" +msgstr "可选,Peer 的端口。" msgid "" "Optional. Seconds between keep alive messages. Default is 0 (disabled). " "Recommended value if this device is behind a NAT is 25." msgstr "" -"可选,Keep-Alive 消息之间的秒数,默认为 0 (禁用)。如果此设备位于 NAT 之后,建" -"议使用的值为 25。" +"可选,Keep-Alive 消息之间的秒数,默认为 0(禁用)。如果此设备位于 NAT 之后," +"建议使用的值为 25。" msgid "Optional. UDP port used for outgoing and incoming packets." msgstr "可选,用于传出和传入数据包的 UDP 端口。" @@ -2205,13 +2216,13 @@ msgid "Options" msgstr "选项" msgid "Other:" -msgstr "其余:" +msgstr "其余:" msgid "Out" msgstr "出口" msgid "Outbound:" -msgstr "出站:" +msgstr "出站:" msgid "Output Interface" msgstr "网络出口" @@ -2288,7 +2299,7 @@ msgid "PSID-bits length" msgstr "PSID-bits 长度" msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "PTM/EFM (分组传输模式)" +msgstr "PTM/EFM(分组传输模式)" msgid "Package libiwinfo required!" msgstr "需要 libiwinfo 软件包!" @@ -2320,6 +2331,9 @@ msgstr "内部私钥的密码" msgid "Password successfully changed!" msgstr "密码修改成功!" +msgid "Password2" +msgstr "密码 2" + msgid "Path to CA-Certificate" msgstr "CA 证书路径" @@ -2333,7 +2347,7 @@ msgid "Path to executable which handles the button event" msgstr "处理按键动作的可执行文件路径" msgid "Path to inner CA-Certificate" -msgstr "内部CA证书的路径" +msgstr "内部 CA 证书的路径" msgid "Path to inner Client-Certificate" msgstr "内部客户端证书的路径" @@ -2342,7 +2356,7 @@ msgid "Path to inner Private Key" msgstr "内部私钥的路径" msgid "Peak:" -msgstr "峰值:" +msgstr "峰值:" msgid "Peer IP address to assign" msgstr "要分配的 Peer IP 地址" @@ -2363,7 +2377,7 @@ msgid "Persistent Keep Alive" msgstr "持续 Keep-Alive" msgid "Phy Rate:" -msgstr "物理速率:" +msgstr "物理速率:" msgid "Physical Settings" msgstr "物理设置" @@ -2384,13 +2398,13 @@ msgid "Port" msgstr "端口" msgid "Port status:" -msgstr "端口状态:" +msgstr "端口状态:" msgid "Power Management Mode" msgstr "电源管理模式" msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "抢占式 CRC 错误 (CRCP_P)" +msgstr "抢占式 CRC 错误(CRCP_P)" msgid "Prefer LTE" msgstr "首选 LTE" @@ -2416,7 +2430,7 @@ msgid "Prevents client-to-client communication" msgstr "禁止客户端间通信" msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "Prism2/2.5/3 802.11b 无线网卡" +msgstr "Prism2/2.5/3 802.11b 无线控制器" msgid "Private Key" msgstr "私钥" @@ -2446,13 +2460,13 @@ msgid "Protocol support is not installed" msgstr "未安装协议支持" msgid "Provide NTP server" -msgstr "NTP服务器" +msgstr "作为 NTP 服务器提供服务" msgid "Provide new network" msgstr "添加新网络" msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "伪装 Ad-Hoc (ahdemo)" +msgstr "伪装 Ad-Hoc(ahdemo)" msgid "Public Key" msgstr "公钥" @@ -2485,7 +2499,7 @@ msgid "RX Rate" msgstr "接收速率" msgid "RaLink 802.11%s Wireless Controller" -msgstr "RaLink 802.11%s 无线网卡" +msgstr "RaLink 802.11%s 无线控制器" msgid "Radius-Accounting-Port" msgstr "Radius 计费端口" @@ -2509,8 +2523,8 @@ msgid "" "Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host " "Configuration Protocol\">DHCP</abbr>-Server" msgstr "" -"根据 <code>/etc/ethers</code> 来配置 <abbr title=\"动态主机配置协议\">DHCP</" -"abbr>-服务器" +"根据 <code>/etc/ethers</code> 来配置 <abbr title=\"Dynamic Host " +"Configuration Protocol\">DHCP</abbr> 服务器" msgid "" "Really delete this interface? The deletion cannot be undone!\\nYou might " @@ -2636,7 +2650,7 @@ msgid "Required" msgstr "必须" msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "某些 ISP 需要,例如: 同轴线网络 DOCSIS 3" +msgstr "某些 ISP 需要,例如:同轴线网络 DOCSIS 3" msgid "Required. Base64-encoded private key for this interface." msgstr "必须,此接口的 Base64 编码私钥。" @@ -2656,13 +2670,13 @@ msgid "" "Requires the 'full' version of wpad/hostapd and support from the wifi driver " "<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" msgstr "" -"需要 wpad/hostapd 的完整版本和 WiFi 驱动程序的支持<br />(截至 2017 年 2 月: " -"ath9k 和 ath10k,或者 LEDE 的 mwlwifi 和 mt76)" +"需要完整版本的 wpad/hostapd,并且 WiFi 驱动支持<br />(截止 2017.02,已知支持" +"此特性的驱动有 ath9k、ath10k,以及 LEDE 中的 mwlwifi 和 mt76)" msgid "" "Requires upstream supports DNSSEC; verify unsigned domain responses really " "come from unsigned domains" -msgstr "需要上级支持 DNSSEC,验证未签名的域响应确实是来自未签名的域。" +msgstr "需要上级支持 DNSSEC,验证未签名的响应确实是来自未签名的域名" msgid "Reset" msgstr "复位" @@ -2713,7 +2727,7 @@ msgid "Routed IPv6 prefix for downstream interfaces" msgstr "下行接口的路由 IPv6 前缀" msgid "Router Advertisement-Service" -msgstr "路由器广告服务" +msgstr "路由通告服务" msgid "Router Password" msgstr "主机密码" @@ -2738,7 +2752,7 @@ 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" +msgstr "SIXXS 仅支持 TIC,对于使用 IP 协议 41(RFC4213)的静态隧道,使用 6in4" msgid "SIXXS-handle[/Tunnel-ID]" msgstr "SIXXS-handle[/Tunnel-ID]" @@ -2759,7 +2773,7 @@ msgid "SSH username" msgstr "SSH 用户名" msgid "SSH-Keys" -msgstr "SSH-密钥" +msgstr "SSH 密钥" msgid "SSID" msgstr "SSID" @@ -2774,7 +2788,7 @@ msgid "Save & Apply" msgstr "保存&应用" msgid "Scan" -msgstr "搜索" +msgstr "扫描" msgid "Scheduled Tasks" msgstr "计划任务" @@ -2791,7 +2805,7 @@ msgstr "详参 \"mount\" 联机帮助" msgid "" "Send LCP echo requests at the given interval in seconds, only effective in " "conjunction with failure threshold" -msgstr "定时发送 LCP 响应 (秒),仅在结合了故障阈值时有效" +msgstr "定时发送 LCP 响应(秒),仅在结合了故障阈值时有效" msgid "Separate Clients" msgstr "隔离客户端" @@ -2805,7 +2819,7 @@ msgstr "服务器密码" msgid "" "Server password, enter the specific password of the tunnel when the username " "contains the tunnel ID" -msgstr "服务器密码,如果用户名包含隧道 ID 则在此填写独立的密码" +msgstr "服务器密码,如果用户名包含隧道 ID 则在此填写隧道自己的密码" msgid "Server username" msgstr "服务器用户名" @@ -2823,8 +2837,8 @@ msgid "" "Set interface properties regardless of the link carrier (If set, carrier " "sense events do not invoke hotplug handlers)." msgstr "" -"无论链路载荷如何都设置接口属性 (如果设置,载荷侦听事件不调用 Hotplug 处理程" -"序)。" +"不管接口的链路状态如何,总是用应用设置(如果勾选,链路状态变更将不再触发 " +"hotplug 事件处理)。" msgid "Set up Time Synchronization" msgstr "设置时间同步" @@ -2833,13 +2847,13 @@ msgid "Setup DHCP Server" msgstr "配置 DHCP 服务器" msgid "Severely Errored Seconds (SES)" -msgstr "严重误码秒 (SES)" +msgstr "严重误码秒(SES)" msgid "Short GI" msgstr "Short GI" msgid "Show current backup file list" -msgstr "显示当前文件备份列表" +msgstr "显示当前备份文件列表" msgid "Shutdown this interface" msgstr "关闭此接口" @@ -2851,16 +2865,16 @@ msgid "Signal" msgstr "信号" msgid "Signal Attenuation (SATN)" -msgstr "信号衰减 (SATN)" +msgstr "信号衰减(SATN)" msgid "Signal:" -msgstr "信号:" +msgstr "信号:" msgid "Size" msgstr "大小" msgid "Size (.ipk)" -msgstr "大小 (.ipk)" +msgstr "大小(.ipk)" msgid "Skip" msgstr "跳过" @@ -2894,7 +2908,7 @@ msgid "" "flashed manually. Please refer to the wiki for device specific install " "instructions." msgstr "" -"抱歉,您的设备暂不支持 Sysupgrade 升级,需手动更新固件。请参考 Wiki 中关于此" +"抱歉,您的设备暂不支持 sysupgrade 升级,需手动更新固件。请参考 Wiki 中关于此" "设备的固件更新说明。" msgid "Sort" @@ -2913,35 +2927,34 @@ msgid "Specifies the directory the device is attached to" msgstr "指定设备的挂载目录" msgid "Specifies the listening port of this <em>Dropbear</em> instance" -msgstr "指定 <em>Dropbear</em> 的监听端口" +msgstr "指定此 <em>Dropbear</em> 实例的监听端口" msgid "" "Specifies the maximum amount of failed ARP requests until hosts are presumed " "to be dead" -msgstr "指定假设主机已丢失的最大失败 ARP 请求数" +msgstr "判定主机已下线的最少 ARP 请求失败数" msgid "" "Specifies the maximum amount of seconds after which hosts are presumed to be " "dead" -msgstr "指定假设主机已丢失的最大时间 (秒)" +msgstr "判断主机已下线的超时时间(秒)" msgid "Specify a TOS (Type of Service)." -msgstr "指定 TOS (服务类型)。" +msgstr "指定 TOS(服务类型)。" msgid "" "Specify a TTL (Time to Live) for the encapsulating packet other than the " "default (64)." -msgstr "为封装数据包设置 TTL (生存时间),缺省值: 64" +msgstr "为封装数据包设置 TTL(生存时间),缺省值:64" msgid "" "Specify an MTU (Maximum Transmission Unit) other than the default (1280 " "bytes)." -msgstr "设置 MTU (最大传输单位),缺省值: 1280 bytes" +msgstr "设置 MTU(最大传输单位),缺省值:1280 bytes" msgid "Specify the secret encryption key here." msgstr "在此指定密钥。" -# 关联了 启动项 和 接口>LAN>DHCP服务器>网址分配基址 msgid "Start" msgstr "开始" @@ -2993,10 +3006,10 @@ msgid "Suppress logging of the routine operation of these protocols" msgstr "不记录这些协议的常规操作日志。" msgid "Swap" -msgstr "交换区" +msgstr "Swap" msgid "Swap Entry" -msgstr "交换项目" +msgstr "Swap 节点" msgid "Switch" msgstr "交换机" @@ -3005,17 +3018,17 @@ msgid "Switch %q" msgstr "交换机 %q" msgid "Switch %q (%s)" -msgstr "交换机 %q (%s)" +msgstr "交换机 %q(%s)" msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "交换机 %q 具有未知的拓扑结构 - VLAN 设置可能不正确。" +msgstr "交换机 %q 具有未知的拓扑结构,VLAN 设置可能不正确。" msgid "Switch VLAN" msgstr "交换机 VLAN" msgid "Switch protocol" -msgstr "交换机协议" +msgstr "切换协议" msgid "Sync with browser" msgstr "同步浏览器时间" @@ -3036,13 +3049,13 @@ msgid "System log buffer size" msgstr "系统日志缓冲区大小" msgid "TCP:" -msgstr "TCP:" +msgstr "TCP:" msgid "TFTP Settings" -msgstr "TFTP设置" +msgstr "TFTP 设置" msgid "TFTP server root" -msgstr "TFTP服务器根目录" +msgstr "TFTP 服务器根目录" msgid "TX" msgstr "发送" @@ -3069,14 +3082,14 @@ msgid "" "multi-SSID capable). Per network settings like encryption or operation mode " "are grouped in the <em>Interface Configuration</em>." msgstr "" -"<em>设备配置</em>区域可配置无线的硬件参数,比如信道、发射功率或发射天线 (如果" -"此无线模块硬件支持多 SSID,则全部SSID共用此设备配置)。<em>接口配置</em>区域则" -"可配置此网络的工作模式和加密等。" +"“设备配置”区域可配置无线的硬件参数,比如:信道、发射功率或发射天线,如果此无" +"线硬件支持多 SSID,则全部 SSID 共用此设备配置。“接口配置”区域则可配置接口各自" +"参数,如工作模式、加密方式等。" msgid "" "The <em>libiwinfo-lua</em> package is not installed. You must install this " "component for working wireless configuration!" -msgstr "软件包 <em>libiwinfo-lua</em> 未安装。必需安装此组件以配置无线!" +msgstr "软件包 <em>libiwinfo-lua</em> 未安装,必须安装此组件以配置无线!" msgid "" "The HE.net endpoint update configuration changed, you must now use the plain " @@ -3095,24 +3108,24 @@ msgid "" "The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</" "code> and <code>_</code>" msgstr "" -"合法字符: <code>A-Z</code>, <code>a-z</code>, <code>0-9</code> 和 <code>_</" +"合法字符:<code>A-Z</code>, <code>a-z</code>, <code>0-9</code> 和 <code>_</" "code>" msgid "The configuration file could not be loaded due to the following error:" -msgstr "由于以下错误,配置文件无法被加载:" +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>)" +msgstr "存储器或分区的设备文件,(例如:<code>/dev/sda1</code>)" msgid "" "The filesystem that was used to format the memory (<abbr title=\"for example" "\">e.g.</abbr> <samp><abbr title=\"Third Extended Filesystem\">ext3</abbr></" "samp>)" msgstr "" -"用于格式化存储器的文件系统,(例如: <samp><abbr title=\"第三代扩展文件系统" -"\">ext3</abbr></samp>)" +"用于格式化存储器的文件系统,(例如:<samp><abbr title=\"Third Extended " +"Filesystem\">ext3</abbr></samp>)" msgid "" "The flash image was uploaded. Below is the checksum and file size listed, " @@ -3142,13 +3155,13 @@ msgstr "本机的硬件不支持多 SSID,如果继续,现有配置将被替 msgid "" "The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " "addresses." -msgstr "IPv4 前缀长度 (bit),其余的用在 IPv6 地址。" +msgstr "IPv4 前缀长度(bit),其余的用在 IPv6 地址。" msgid "The length of the IPv6 prefix in bits" -msgstr "IPv6 前缀长度 (bit)" +msgstr "IPv6 前缀长度(bit)" msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "所创建隧道的本地 IPv4 地址 (可选)。" +msgstr "所创建隧道的本地 IPv4 地址(可选)。" msgid "" "The network ports on this device can be combined to several <abbr title=" @@ -3158,9 +3171,10 @@ msgid "" "segments. Often there is by default one Uplink port for a connection to the " "next greater network like the internet and other ports for a local network." msgstr "" -"本设备可以划分为多个 <abbr title=\"虚拟局域网\">VLAN</abbr>,并支持电脑间的直" -"接通讯。<abbr title=\"虚拟局域网\">VLAN</abbr> 也常用于分割不同网段。默认通常" -"是一条上行端口连接 ISP,其余端口为本地子网。" +"本设备可以划分为多个 <abbr title=\"Virtual Local Area Network\">VLAN</abbr>," +"并支持电脑间的直接通讯。<abbr title=\"Virtual Local Area Network\">VLAN</" +"abbr> 也常用于分割不同网段。默认通常是一条上行端口连接 ISP,其余端口为本地子" +"网。" msgid "The selected protocol needs a device assigned" msgstr "所选的协议需要分配设备" @@ -3212,7 +3226,7 @@ msgstr "尚未分配设备,请在“物理设置”选项卡中选择网络设 msgid "" "There is no password set on this router. Please configure a root password to " "protect the web interface and enable SSH." -msgstr "尚未设置密码。请为 Root 用户设置密码以保护主机并开启 SSH。" +msgstr "尚未设置密码。请为 root 用户设置密码以保护主机并启用 SSH。" msgid "This IPv4 address of the relay" msgstr "中继的 IPv4 地址" @@ -3223,7 +3237,7 @@ msgid "" "Name System\">DNS</abbr> servers." msgstr "" "此文件包含类似于 'server=/domain/1.2.3.4' 或 'server=1.2.3.4' 的行,用于解析" -"特定域名或指定上游 <abbr title=\"域名服务系统\">DNS</abbr> 服务器。" +"特定域名或指定上游 <abbr title=\"Domain Name System\">DNS</abbr> 服务器。" msgid "" "This is a list of shell glob patterns for matching files and directories to " @@ -3236,7 +3250,7 @@ msgstr "" msgid "" "This is either the \"Update Key\" configured for the tunnel or the account " "password if no update key has been configured" -msgstr "如果更新密钥没有设置的话,隧道的“更新密钥”或者账户密码必须填写。" +msgstr "如果更新密钥没有设置的话,隧道的“更新密钥”或者账户密码必须填写。" msgid "" "This is the content of /etc/rc.local. Insert your own commands here (in " @@ -3251,7 +3265,9 @@ msgstr "隧道代理分配的本地终端地址,通常以 <code>:2</code> 结 msgid "" "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" "abbr> in the local network" -msgstr "这是内网中唯一的 <abbr title=\"动态主机配置协议\">DHCP</abbr> 服务器" +msgstr "" +"这是本地网络中唯一的 <abbr title=\"Dynamic Host Configuration Protocol" +"\">DHCP</abbr> 服务器" msgid "This is the plain username for logging into the account" msgstr "登录账户时填写的用户名" @@ -3261,7 +3277,7 @@ msgid "" msgstr "这是隧道代理分配给你的路由前缀,供客户端使用" msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "自定义系统 Crontab 中的计划任务。" +msgstr "自定义系统 crontab 中的计划任务。" msgid "" "This is usually the address of the nearest PoP operated by the tunnel broker" @@ -3323,7 +3339,7 @@ msgid "Transmitter Antenna" msgstr "传送天线" msgid "Trigger" -msgstr "触发" +msgstr "触发器" msgid "Trigger Mode" msgstr "触发模式" @@ -3353,10 +3369,10 @@ msgid "Type" msgstr "类型" msgid "UDP:" -msgstr "UDP:" +msgstr "UDP:" msgid "UMTS only" -msgstr "仅 UMTS (WCDMA)" +msgstr "仅 UMTS(WCDMA)" msgid "UMTS/GPRS/EV-DO" msgstr "UMTS/GPRS/EV-DO" @@ -3374,7 +3390,7 @@ msgid "Unable to dispatch" msgstr "无法调度" msgid "Unavailable Seconds (UAS)" -msgstr "不可用秒数 (UAS)" +msgstr "不可用秒数(UAS)" msgid "Unknown" msgstr "未知" @@ -3401,7 +3417,9 @@ msgid "" "Upload a sysupgrade-compatible image here to replace the running firmware. " "Check \"Keep settings\" to retain the current configuration (requires a " "compatible firmware image)." -msgstr "上传兼容的 Sysupgrade 固件以刷新当前系统。" +msgstr "" +"上传一个 sysupgrade 格式的固件映像文件以替换当前运行的固件。勾选“保留配置”以" +"使更新后的系统仍然使用当前的系统配置(新的固件需要和当前固件兼容)。" msgid "Upload archive..." msgstr "上传备份..." @@ -3419,7 +3437,7 @@ msgid "Use DHCP gateway" msgstr "使用 DHCP 网关" msgid "Use DNS servers advertised by peer" -msgstr "使用端局通告的DNS服务器" +msgstr "使用对端通告的 DNS 服务器" msgid "Use ISO/IEC 3166 alpha2 country codes." msgstr "参考 ISO/IEC 3166 alpha2 国家代码。" @@ -3431,10 +3449,10 @@ msgid "Use TTL on tunnel interface" msgstr "隧道接口的 TTL" msgid "Use as external overlay (/overlay)" -msgstr "作为外部 Overlay 使用 (/overlay)" +msgstr "作为外部 overlay 使用(/overlay)" msgid "Use as root filesystem (/)" -msgstr "作为根文件系统使用 (/)" +msgstr "作为根文件系统使用(/)" msgid "Use broadcast flag" msgstr "使用广播标签" @@ -3461,8 +3479,9 @@ msgid "" "requesting host. The optional <em>Lease time</em> can be used to set non-" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" -"使用<em>添加</em>来增加新的租约条目。使用<em>MAC-地址</em>鉴别主机,<em>IPv4-" -"地址</em>分配地址,<em>主机名</em>分配标识。" +"使用“添加”按钮来增加新的租约条目。“IPv4 地址”和“主机名”字段的值将被固定分配" +"给“MAC 地址”字段标识的主机,“租期”是一个可选字段,可为每个主机单独设定 DHCP " +"租期的时长,例如:12h、3d、inifinite,分别表示 12 小时、3 天、永久。" msgid "Used" msgstr "已用" @@ -3474,14 +3493,14 @@ msgid "" "Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " "needed with normal WPA(2)-PSK." msgstr "" -"用于两种不同的用途: RADIUS NAS ID 和 802.11r R0KH-ID。普通 WPA(2)-PSK 不需" +"用于两种不同的用途:RADIUS NAS ID 和 802.11r R0KH-ID,普通 WPA(2)-PSK 不需" "要。" msgid "User certificate (PEM encoded)" -msgstr "客户证书 (PEM加密的)" +msgstr "用户证书(PEM)" msgid "User key (PEM encoded)" -msgstr "客户 Key (PEM加密的)" +msgstr "用户密钥(PEM)" msgid "Username" msgstr "用户名" @@ -3496,7 +3515,7 @@ msgid "VLANs on %q" msgstr "%q 上的 VLAN" msgid "VLANs on %q (%s)" -msgstr "%q (%s) 上的 VLAN" +msgstr "%q(%s)上的 VLAN" msgid "VPN Local address" msgstr "VPN 本地地址" @@ -3514,13 +3533,13 @@ msgid "VPN Server's certificate SHA1 hash" msgstr "VPN 服务器证书的 SHA1 哈希值" msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "VPNC (CISCO 3000 和其他 VPN)" +msgstr "VPNC(CISCO 3000 和其他 VPN)" msgid "Vendor" msgstr "Vendor" msgid "Vendor Class to send when requesting DHCP" -msgstr "请求 DHCP 时发送的 Vendor Class" +msgstr "请求 DHCP 时发送的 Vendor Class 选项" msgid "Verbose" msgstr "详细" @@ -3538,7 +3557,7 @@ msgid "WDS" msgstr "WDS" msgid "WEP Open System" -msgstr "WEP 开放认证" +msgstr "WEP 开放式系统" msgid "WEP Shared Key" msgstr "WEP 共享密钥" @@ -3547,7 +3566,7 @@ msgid "WEP passphrase" msgstr "WEP 密钥" msgid "WMM Mode" -msgstr "WMM 多媒体加速" +msgstr "WMM 模式" msgid "WPA passphrase" msgstr "WPA 密钥" @@ -3556,18 +3575,18 @@ msgid "" "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " "and ad-hoc mode) to be installed." msgstr "" -"WPA 加密需要安装 wpa_supplicant (客户端模式) 或安装 hostapd (接入点 AP、点对" -"点 Ad-Hoc 模式)。" +"WPA 加密需要安装 wpa_supplicant(客户端模式)或安装 hostapd(接入点 AP、点对" +"点 Ad-Hoc 模式)。" msgid "" "Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "在 NTP 同步之前等待时间,设置为 0 表示同步之前不等待 (可选)" +msgstr "NTP 同步前的等待时间,设置为 0 表示不等待(可选)" msgid "Waiting for changes to be applied..." msgstr "正在应用更改..." msgid "Waiting for command to complete..." -msgstr "正在执行命令..." +msgstr "等待命令执行完成..." msgid "Waiting for device..." msgstr "等待设备..." @@ -3576,10 +3595,10 @@ msgid "Warning" msgstr "警告" msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "警告: 有一些未保存的配置将在重启后丢失!" +msgstr "警告:一些未保存的配置将在重启后丢失!" msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "是否通过隧道创建 IPv6 缺省路由" +msgstr "是否添加一条通向隧道的 IPv6 默认路由" msgid "Whether to route only packets from delegated prefixes" msgstr "是否仅路由来自分发前缀的数据包" @@ -3606,10 +3625,10 @@ msgid "Wireless Security" msgstr "无线安全" msgid "Wireless is disabled or not associated" -msgstr "未开启或未关联无线" +msgstr "无线未开启或未关联" msgid "Wireless is restarting..." -msgstr "重启无线中..." +msgstr "无线重启中..." msgid "Wireless network is disabled" msgstr "无线已禁用" @@ -3634,20 +3653,20 @@ msgid "" "after a device reboot.<br /><strong>Warning: If you disable essential init " "scripts like \"network\", your device might become inaccessible!</strong>" msgstr "" -"启用或禁用已安装的启动脚本。更改在设备重启后生效。<br /><strong>警告: 如果禁" -"用了必要的启动脚本,比如 \"network\",可能会导致设备无法访问!</strong>" +"在此启用或禁用已安装的启动脚本,更改在设备重启后生效。<br /><strong>警告:如" +"果禁用了必要的启动脚本,比如 \"network\",可能会导致无法访问设备!</strong>" msgid "" "You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "LUCI 的正常运行需要开启浏览器的 JavaScript 支持。" +msgstr "必须开启浏览器的 JavaScript 支持,否则 LuCI 无法正常工作。" msgid "" "Your Internet Explorer is too old to display this page correctly. Please " "upgrade it to at least version 7 or use another browser like Firefox, Opera " "or Safari." msgstr "" -"你的 Internet Explorer 已经老到无法正常显示这个页面了!请更新到 IE7 及以上或" -"者使用诸如 Firefox Opera Safari 之类的浏览器。" +"你的 IE 浏览器太老了,无法正常显示这个页面!请更新到 IE7 及以上或使用其他浏览" +"器,例如:Chrome、Firefox、Opera、Safari。" msgid "any" msgstr "任意" @@ -3655,9 +3674,6 @@ msgstr "任意" msgid "auto" msgstr "自动" -msgid "automatic" -msgstr "自动" - msgid "baseT" msgstr "baseT" @@ -3665,7 +3681,7 @@ msgid "bridged" msgstr "桥接的" msgid "create:" -msgstr "创建:" +msgstr "创建:" msgid "creates a bridge over specified interface(s)" msgstr "为指定接口创建桥接" @@ -3688,7 +3704,9 @@ msgstr "过期时间" msgid "" "file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" "abbr>-leases will be stored" -msgstr "存放 <abbr title=\"动态主机配置协议\">DHCP</abbr> 租约的文件" +msgstr "" +"用于存放已分配的 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" +"abbr> 租约的文件" msgid "forward" msgstr "转发" @@ -3724,7 +3742,7 @@ msgid "kbit/s" msgstr "kbit/s" msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file" -msgstr "本地 <abbr title=\"域名服务系统\">DNS</abbr> 解析文件" +msgstr "本地 <abbr title=\"Domain Name Syste\">DNS</abbr> 解析文件" msgid "minimum 1280, maximum 1480" msgstr "最小值 1280,最大值 1480" @@ -3732,9 +3750,6 @@ msgstr "最小值 1280,最大值 1480" msgid "minutes" msgstr "分钟" -msgid "navigation Navigation" -msgstr "导航" - msgid "no" msgstr "否" @@ -3768,12 +3783,6 @@ msgstr "已路由" msgid "server mode" msgstr "服务器模式" -msgid "skiplink1 Skip to navigation" -msgstr "skiplink1 跳转到导航" - -msgid "skiplink2 Skip to content" -msgstr "skiplink2 跳到内容" - msgid "stateful-only" msgstr "有状态的" @@ -3781,13 +3790,13 @@ msgid "stateless" msgstr "无状态的" msgid "stateless + stateful" -msgstr "有状态和无状态的" +msgstr "无状态的 + 有状态的" msgid "tagged" -msgstr "关联" +msgstr "已关联" msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "时间单位 (TUs / 1.024ms) [1000-65535]" +msgstr "时间单位(TUs / 1.024ms)[1000-65535]" msgid "unknown" msgstr "未知" @@ -3799,10 +3808,10 @@ msgid "unspecified" msgstr "未指定" msgid "unspecified -or- create:" -msgstr "未指定或创建:" +msgstr "不指定或新建:" msgid "untagged" -msgstr "不关联" +msgstr "未关联" msgid "yes" msgstr "是" @@ -3810,11 +3819,32 @@ msgstr "是" msgid "« Back" 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支持" +#~ msgstr "AR 支持" #~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Qualcomm/Atheros 802.11%s 无线网卡" +#~ msgstr "Qualcomm/Atheros 802.11%s 无线控制器" #~ msgid "Background Scan" #~ msgstr "后台搜索" @@ -3823,7 +3853,7 @@ msgstr "« 后退" #~ msgstr "压缩" #~ msgid "Disable HW-Beacon timer" -#~ msgstr "停用HW-Beacon计时器" +#~ msgstr "停用 HW-Beacon 计时器" #~ msgid "Do not send probe responses" #~ msgstr "不回送探测响应" @@ -3847,19 +3877,19 @@ msgstr "« 后退" #~ msgstr "无线网络国家区域" #~ msgid "Separate WDS" -#~ msgstr "隔离WDS" +#~ msgstr "隔离 WDS" #~ msgid "Static WDS" -#~ msgstr "静态WDS" +#~ msgstr "静态 WDS" #~ msgid "Turbo Mode" -#~ msgstr "Turbo模式" +#~ msgstr "Turbo 模式" #~ msgid "XR Support" -#~ msgstr "XR支持" +#~ msgstr "XR 支持" #~ msgid "Required. Public key of peer." -#~ msgstr "必须,Peer的公钥。" +#~ msgstr "必须,Peer 的公钥。" #~ msgid "An additional network will be created if you leave this checked." #~ msgstr "如果选中此复选框,则会创建一个附加网络。" @@ -3877,7 +3907,7 @@ msgstr "« 后退" #~ msgstr "端口 %d" #~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "端口 %d 在多个VLAN中均未关联!" +#~ msgstr "端口 %d 在多个 VLAN 中均未关联!" #~ msgid "VLAN Interface" -#~ msgstr "VLAN接口" +#~ msgstr "VLAN 接口" diff --git a/modules/luci-base/po/zh-tw/base.po b/modules/luci-base/po/zh-tw/base.po index e1d97dc336..7521324f1c 100644 --- a/modules/luci-base/po/zh-tw/base.po +++ b/modules/luci-base/po/zh-tw/base.po @@ -410,9 +410,6 @@ msgstr "已連接站點" msgid "Auth Group" msgstr "" -msgid "AuthGroup" -msgstr "" - msgid "Authentication" msgstr "認證" @@ -1433,6 +1430,9 @@ msgstr "IPv6字首長度" msgid "IPv6 routed prefix" msgstr "" +msgid "IPv6 suffix" +msgstr "" + msgid "IPv6-Address" msgstr "IPv6-位址" @@ -1537,6 +1537,9 @@ msgstr "安裝軟體包" msgid "Interface" msgstr "介面" +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + msgid "Interface Configuration" msgstr "介面設定" @@ -1660,9 +1663,6 @@ msgstr "租賃有效時間" msgid "Leasefile" msgstr "租賃檔案" -msgid "Leasetime" -msgstr "租賃時間" - msgid "Leasetime remaining" msgstr "租賃保留時間" @@ -2161,15 +2161,19 @@ msgstr "" msgid "Optional, use when the SIXXS account has more than one tunnel" msgstr "" -msgid "Optional." -msgstr "" - msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with <code>0x</code>." msgstr "" msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" @@ -3006,7 +3010,7 @@ msgid "Switch VLAN" msgstr "" msgid "Switch protocol" -msgstr "交換器協定" +msgstr "切換協定" msgid "Sync with browser" msgstr "同步瀏覽器" @@ -3657,9 +3661,6 @@ msgstr "任意" msgid "auto" msgstr "自動" -msgid "automatic" -msgstr "" - msgid "baseT" msgstr "baseT" @@ -3736,9 +3737,6 @@ msgstr "" msgid "minutes" msgstr "" -msgid "navigation Navigation" -msgstr "" - msgid "no" msgstr "無" @@ -3772,12 +3770,6 @@ msgstr "路由" msgid "server mode" msgstr "" -msgid "skiplink1 Skip to navigation" -msgstr "" - -msgid "skiplink2 Skip to content" -msgstr "" - msgid "stateful-only" msgstr "" @@ -3814,6 +3806,9 @@ msgstr "是的" msgid "« Back" msgstr "« 倒退" +#~ msgid "Leasetime" +#~ msgstr "租賃時間" + #~ msgid "AR Support" #~ msgstr "AR支援" diff --git a/modules/luci-base/root/etc/config/ucitrack b/modules/luci-base/root/etc/config/ucitrack index c3741ba780..d083922955 100644 --- a/modules/luci-base/root/etc/config/ucitrack +++ b/modules/luci-base/root/etc/config/ucitrack @@ -37,6 +37,7 @@ config qos config system option init led list affects luci_statistics + list affects dhcp config luci_splash option init luci_splash diff --git a/modules/luci-mod-admin-full/Makefile b/modules/luci-mod-admin-full/Makefile index 5fed2797ec..36ddf13f16 100644 --- a/modules/luci-mod-admin-full/Makefile +++ b/modules/luci-mod-admin-full/Makefile @@ -10,6 +10,7 @@ LUCI_TITLE:=LuCI Administration - full-featured for full control LUCI_DEPENDS:=+luci-base PKG_BUILD_DEPENDS:=iwinfo +PKG_LICENSE:=Apache-2.0 include ../../luci.mk diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua index ad575e0d26..22e1b7e173 100644 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua +++ b/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua @@ -139,14 +139,12 @@ function action_connections() end function action_nameinfo(...) - local i - local rv = { } - for i = 1, select('#', ...) do - local addr = select(i, ...) - local fqdn = nixio.getnameinfo(addr) - rv[addr] = fqdn or (addr:match(":") and "[%s]" % addr or addr) - end + local util = require "luci.util" luci.http.prepare_content("application/json") - luci.http.write_json(rv) + luci.http.write_json(util.ubus("network.rrdns", "lookup", { + addrs = { ... }, + timeout = 5000, + limit = 1000 + }) or { }) end diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua index f418ecb40f..c7d330e68d 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua @@ -276,6 +276,16 @@ name = s:option(Value, "name", translate("Hostname")) name.datatype = "hostname" name.rmempty = true +function name.write(self, section, value) + Value.write(self, section, value) + m:set(section, "dns", "1") +end + +function name.remove(self, section) + Value.remove(self, section) + m:del(section, "dns") +end + mac = s:option(Value, "mac", translate("<abbr title=\"Media Access Control\">MAC</abbr>-Address")) mac.datatype = "list(macaddr)" mac.rmempty = true diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua index 0318522281..4fc71cefab 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua @@ -445,7 +445,7 @@ if has_dnsmasq and net:proto() == "static" then limit.datatype = "uinteger" limit.default = "150" - local ltime = s:taboption("general", Value, "leasetime", translate("Leasetime"), + local ltime = s:taboption("general", Value, "leasetime", translate("Lease time"), translate("Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>).")) ltime.rmempty = true ltime.default = "12h" diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua index 902767c903..89a73a5ca8 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua @@ -12,6 +12,35 @@ nw.init(m.uci) local topologies = nw:get_switch_topologies() or {} +local update_interfaces = function(old_ifname, new_ifname) + local info = { } + + m.uci:foreach("network", "interface", function(section) + local old_ifnames = m.uci:get("network", section[".name"], "ifname") + local new_ifnames = { } + local cur_ifname + local changed = false + for cur_ifname in luci.util.imatch(old_ifnames) do + if cur_ifname == old_ifname then + new_ifnames[#new_ifnames+1] = new_ifname + changed = true + else + new_ifnames[#new_ifnames+1] = cur_ifname + end + end + if changed then + m.uci:set("network", section[".name"], "ifname", table.concat(new_ifnames, " ")) + + info[#info+1] = translatef("Interface %q device auto-migrated from %q to %q.", + section[".name"], old_ifname, new_ifname) + end + end) + + if #info > 0 then + m.message = (m.message and m.message .. "\n" or "") .. table.concat(info, "\n") + end +end + m.uci:foreach("network", "switch", function(x) local sid = x['.name'] @@ -259,17 +288,32 @@ m.uci:foreach("network", "switch", -- When writing the "vid" or "vlan" option, serialize the port states -- as well and write them as "ports" option to uci. - vid.write = function(self, section, value) + vid.write = function(self, section, new_vid) local o local p = { } - for _, o in ipairs(port_opts) do - local v = o:formvalue(section) - if v == "t" then - p[#p+1] = o.option .. v - elseif v == "u" then + local new_tag = o:formvalue(section) + if new_tag == "t" then + p[#p+1] = o.option .. new_tag + elseif new_tag == "u" then p[#p+1] = o.option end + + if o.info and o.info.device then + local old_tag = o:cfgvalue(section) + local old_vid = self:cfgvalue(section) + if old_tag ~= new_tag or old_vid ~= new_vid then + local old_ifname = (old_tag == "u") and o.info.device + or "%s.%s" %{ o.info.device, old_vid } + + local new_ifname = (new_tag == "u") and o.info.device + or "%s.%s" %{ o.info.device, new_vid } + + if old_ifname ~= new_ifname then + update_interfaces(old_ifname, new_ifname) + end + end + end end if enable_vlan4k then @@ -277,7 +321,7 @@ m.uci:foreach("network", "switch", end m:set(section, "ports", table.concat(p, " ")) - return Value.write(self, section, value) + return Value.write(self, section, new_vid) end -- Fallback to "vlan" option if "vid" option is supported but unset. @@ -301,6 +345,7 @@ m.uci:foreach("network", "switch", po.cfgvalue = portvalue po.validate = portvalidate po.write = function() end + po.info = pt port_opts[#port_opts+1] = po end diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua index 3a08d81d0a..e1e21bcb58 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua @@ -600,9 +600,9 @@ if hwtype == "mac80211" or hwtype == "prism2" then local has_sta_eap = (os.execute("wpa_supplicant -veap >/dev/null 2>/dev/null") == 0) if hostapd and supplicant then - encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}) - encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}) - encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}) + encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}) + encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}) + encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}) if has_ap_eap and has_sta_eap then encr:value("wpa", "WPA-EAP", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}) encr:value("wpa2", "WPA2-EAP", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}) @@ -620,9 +620,9 @@ if hwtype == "mac80211" or hwtype == "prism2" then "and ad-hoc mode) to be installed." ) elseif not hostapd and supplicant then - encr:value("psk", "WPA-PSK", {mode="sta"}, {mode="sta-wds"}) - encr:value("psk2", "WPA2-PSK", {mode="sta"}, {mode="sta-wds"}) - encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="sta"}, {mode="sta-wds"}) + encr:value("psk", "WPA-PSK", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"}) + encr:value("psk2", "WPA2-PSK", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"}) + encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"}) if has_sta_eap then encr:value("wpa", "WPA-EAP", {mode="sta"}, {mode="sta-wds"}) encr:value("wpa2", "WPA2-EAP", {mode="sta"}, {mode="sta-wds"}) diff --git a/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua b/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua index c895430a3b..7bc4df859b 100644 --- a/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua +++ b/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua @@ -5,15 +5,40 @@ local wa = require "luci.tools.webadmin" local sys = require "luci.sys" local fs = require "nixio.fs" +local nx = require "nixio" local has_pptp = fs.access("/usr/sbin/pptp") local has_pppoe = fs.glob("/usr/lib/pppd/*/rp-pppoe.so")() local network = luci.model.uci.cursor_state():get_all("network") -local netstat = sys.net.deviceinfo() +local netstat = {} local ifaces = {} +local k, v +for k, v in ipairs(nx.getifaddrs()) do + if v.family == "packet" then + local d = v.data + d[1] = d.rx_bytes + d[2] = d.rx_packets + d[3] = d.rx_errors + d[4] = d.rx_dropped + d[5] = 0 + d[6] = 0 + d[7] = 0 + d[8] = d.multicast + d[9] = d.tx_bytes + d[10] = d.tx_packets + d[11] = d.tx_errors + d[12] = d.tx_dropped + d[13] = 0 + d[14] = d.collisions + d[15] = 0 + d[16] = 0 + netstat[v.name] = d + end +end + for k, v in pairs(network) do if v[".type"] == "interface" and k ~= "loopback" then table.insert(ifaces, v) diff --git a/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua b/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua index 84669dce84..e2291e5ca6 100644 --- a/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua +++ b/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua @@ -70,7 +70,7 @@ function index() page.target = cbi("freifunk/basics") page.title = _("Basic Settings") page.order = 5 - + page = node("admin", "freifunk", "basics", "profile") page.target = cbi("freifunk/profile") page.title = _("Profile") @@ -102,7 +102,7 @@ function zeroes() local zeroes = string.rep(string.char(0), 8192) local cnt = 0 local lim = 1024 * 1024 * 1024 - + http.prepare_content("application/x-many-zeroes") while cnt < lim do @@ -188,7 +188,6 @@ function jsonstatus() root.network = {} root.wireless = {devices = {}, interfaces = {}, status = {}} local wifs = root.wireless.interfaces - local netdata = luci.sys.net.deviceinfo() or {} for _, vif in ipairs(ffwifs) do root.network[vif] = cursor:get_all("network", vif) diff --git a/modules/luci-mod-rpc/Makefile b/modules/luci-mod-rpc/Makefile index e64c86c628..bc1f6d2756 100644 --- a/modules/luci-mod-rpc/Makefile +++ b/modules/luci-mod-rpc/Makefile @@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI RPC - JSON-RPC API LUCI_DEPENDS:=+luci-lib-json +PKG_LICENSE:=Apache-2.0 + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/protocols/luci-proto-ipv6/Makefile b/protocols/luci-proto-ipv6/Makefile index e749bc9e83..761ee2f9f5 100644 --- a/protocols/luci-proto-ipv6/Makefile +++ b/protocols/luci-proto-ipv6/Makefile @@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Support for DHCPv6/6in4/6to4/6rd/DS-Lite/aiccu LUCI_DEPENDS:= +PKG_LICENSE:=Apache-2.0 + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua b/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua index c843161c6f..76caedcb37 100644 --- a/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua +++ b/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua @@ -14,7 +14,7 @@ o.default = "try" o = section:taboption("general", Value, "reqprefix", translate("Request IPv6-prefix of length")) -o:value("auto", translate("automatic")) +o:value("auto", translate("Automatic")) o:value("no", translate("disabled")) o:value("48") o:value("52") diff --git a/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua b/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua index ad3f2edf0b..5adfccae48 100644 --- a/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua +++ b/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua @@ -19,8 +19,6 @@ port = section:taboption("general", Value, "port", translate("VPN Server port")) port.placeholder = "443" port.datatype = "port" -ifname = section:taboption("general", Value, "interface", translate("Output Interface")) -ifname.template = "cbi/network_netlist" defaultroute = section:taboption("advanced", Flag, "defaultroute", translate("Use default gateway"), @@ -38,11 +36,13 @@ metric:depends("defaultroute", defaultroute.enabled) section:taboption("general", Value, "serverhash", translate("VPN Server's certificate SHA1 hash")) -section:taboption("general", Value, "authgroup", translate("AuthGroup")) +section:taboption("general", Value, "authgroup", translate("Auth Group")) username = section:taboption("general", Value, "username", translate("Username")) password = section:taboption("general", Value, "password", translate("Password")) password.password = true +password2 = section:taboption("general", Value, "password2", translate("Password2")) +password2.password = true cert = section:taboption("advanced", Value, "usercert", translate("User certificate (PEM encoded)")) @@ -84,3 +84,7 @@ function ca.write(self, section, value) value = value:gsub("\r\n?", "\n") nixio.fs.writefile(oc_ca_file, value) end + +mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU")) +mtu.placeholder = "1406" +mtu.datatype = "max(9200)" diff --git a/protocols/luci-proto-ppp/Makefile b/protocols/luci-proto-ppp/Makefile index 70db744ea6..dd1859ef54 100644 --- a/protocols/luci-proto-ppp/Makefile +++ b/protocols/luci-proto-ppp/Makefile @@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Support for PPP/PPPoE/PPPoA/PPtP LUCI_DEPENDS:= +PKG_LICENSE:=Apache-2.0 + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua b/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua index 11ef10b5a7..fa0db3412e 100644 --- a/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua +++ b/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua @@ -52,7 +52,7 @@ metric = section:taboption( Value, "metric", translate("Metric"), - translate("Optional.") + translate("Optional") ) metric.datatype = "uinteger" metric.placeholder = "0" @@ -70,21 +70,6 @@ mtu.datatype = "range(1280,1420)" mtu.placeholder = "1420" mtu.optional = true - -preshared_key = section:taboption( - "advanced", - Value, - "preshared_key", - translate("Preshared Key"), - translate("Optional. Base64-encoded preshared key. " .. - "Adds in an additional layer of symmetric-key " .. - "cryptography for post-quantum resistance.") -) -preshared_key.password = true -preshared_key.datatype = "and(base64,rangelength(44,44))" -preshared_key.optional = true - - fwmark = section:taboption( "advanced", Value, @@ -121,6 +106,19 @@ public_key.datatype = "and(base64,rangelength(44,44))" public_key.optional = false +preshared_key = peers:option( + Value, + "preshared_key", + translate("Preshared Key"), + translate("Optional. Base64-encoded preshared key. " .. + "Adds in an additional layer of symmetric-key " .. + "cryptography for post-quantum resistance.") +) +preshared_key.password = true +preshared_key.datatype = "and(base64,rangelength(44,44))" +preshared_key.optional = true + + allowed_ips = peers:option( DynamicList, "allowed_ips", diff --git a/themes/luci-theme-bootstrap/Makefile b/themes/luci-theme-bootstrap/Makefile index c4e684ed18..1bb205ee05 100644 --- a/themes/luci-theme-bootstrap/Makefile +++ b/themes/luci-theme-bootstrap/Makefile @@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Bootstrap Theme (default) LUCI_DEPENDS:= +PKG_LICENSE:=Apache-2.0 + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm b/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm index b4534090fb..342a9d4088 100644 --- a/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm +++ b/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm @@ -105,8 +105,8 @@ <%- end -%> <p class="skiplink"> -<span id="skiplink1"><a href="#navigation"><%:skiplink1 Skip to navigation%></a></span> -<span id="skiplink2"><a href="#content"><%:skiplink2 Skip to content%></a></span> +<span id="skiplink1"><a href="#navigation"><%:Skip to navigation%></a></span> +<span id="skiplink2"><a href="#content"><%:Skip to content%></a></span> </p> <div id="header"> @@ -163,7 +163,7 @@ %> <div id="menubar"> -<h2 class="navigation"><a id="navigation" name="navigation"><%:navigation Navigation%></a></h2> +<h2 class="navigation"><a id="navigation" name="navigation"><%:Navigation%></a></h2> <ul id="mainmenu" class="dropdowns"> <% local childs = disp.node_childs(cattree) |