Merge pull request #1031 from feckert/add_dhcp_to_system_ucitrack
authorHannu Nyman <hannu.nyman@iki.fi>
Tue, 16 May 2017 16:28:57 +0000 (19:28 +0300)
committerGitHub <noreply@github.com>
Tue, 16 May 2017 16:28:57 +0000 (19:28 +0300)
luci-base: add dhcp to system ucitrack

285 files changed:
applications/luci-app-adblock/Makefile
applications/luci-app-adblock/luasrc/controller/adblock.lua
applications/luci-app-adblock/luasrc/model/cbi/adblock.lua [deleted file]
applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua [new file with mode: 0644]
applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua [new file with mode: 0644]
applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua [new file with mode: 0644]
applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua [new file with mode: 0644]
applications/luci-app-adblock/luasrc/view/adblock/config_css.htm [new file with mode: 0644]
applications/luci-app-adblock/luasrc/view/adblock/logread.htm [new file with mode: 0644]
applications/luci-app-adblock/luasrc/view/adblock/query.htm [new file with mode: 0644]
applications/luci-app-adblock/luasrc/view/adblock/runtime.htm [new file with mode: 0644]
applications/luci-app-adblock/po/ja/adblock.po
applications/luci-app-adblock/po/pt-br/adblock.po [new file with mode: 0644]
applications/luci-app-adblock/po/sv/adblock.po
applications/luci-app-adblock/po/templates/adblock.pot
applications/luci-app-adblock/po/zh-cn/adblock.po
applications/luci-app-ahcp/po/pt-br/ahcp.po
applications/luci-app-aria2/po/pt-br/aria2.po [new file with mode: 0644]
applications/luci-app-bcp38/Makefile [new file with mode: 0644]
applications/luci-app-bcp38/luasrc/controller/bcp38.lua [new file with mode: 0644]
applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua [new file with mode: 0644]
applications/luci-app-bcp38/root/etc/uci-defaults/60_luci-bcp38 [new file with mode: 0755]
applications/luci-app-clamav/Makefile [new file with mode: 0644]
applications/luci-app-clamav/luasrc/controller/clamav.lua [new file with mode: 0644]
applications/luci-app-clamav/luasrc/model/cbi/clamav.lua [new file with mode: 0644]
applications/luci-app-clamav/po/ja/clamav.po [new file with mode: 0644]
applications/luci-app-clamav/po/templates/clamav.pot [new file with mode: 0644]
applications/luci-app-clamav/po/zh-cn/clamav.po [new file with mode: 0644]
applications/luci-app-commands/po/pt-br/commands.po
applications/luci-app-cshark/Makefile [new file with mode: 0644]
applications/luci-app-cshark/luasrc/controller/cshark.lua [new file with mode: 0644]
applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua [new file with mode: 0644]
applications/luci-app-cshark/luasrc/view/cshark.htm [new file with mode: 0644]
applications/luci-app-ddns/Makefile
applications/luci-app-ddns/luasrc/controller/ddns.lua
applications/luci-app-ddns/po/pt-br/ddns.po
applications/luci-app-dynapoint/Makefile
applications/luci-app-dynapoint/po/pt-br/dynapoint.po [new file with mode: 0644]
applications/luci-app-e2guardian/Makefile [new file with mode: 0644]
applications/luci-app-e2guardian/luasrc/controller/e2guardian.lua [new file with mode: 0644]
applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua [new file with mode: 0644]
applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua
applications/luci-app-firewall/po/pt-br/firewall.po
applications/luci-app-fwknopd/Makefile
applications/luci-app-fwknopd/po/pt-br/fwknopd.po [new file with mode: 0644]
applications/luci-app-hd-idle/luasrc/controller/hd_idle.lua
applications/luci-app-hd-idle/luasrc/model/cbi/hd_idle.lua
applications/luci-app-hd-idle/po/ca/hd_idle.po
applications/luci-app-hd-idle/po/cs/hd_idle.po
applications/luci-app-hd-idle/po/de/hd_idle.po
applications/luci-app-hd-idle/po/el/hd_idle.po
applications/luci-app-hd-idle/po/en/hd_idle.po
applications/luci-app-hd-idle/po/es/hd_idle.po
applications/luci-app-hd-idle/po/fr/hd_idle.po
applications/luci-app-hd-idle/po/he/hd_idle.po
applications/luci-app-hd-idle/po/hu/hd_idle.po
applications/luci-app-hd-idle/po/it/hd_idle.po
applications/luci-app-hd-idle/po/ja/hd_idle.po
applications/luci-app-hd-idle/po/ms/hd_idle.po
applications/luci-app-hd-idle/po/no/hd_idle.po
applications/luci-app-hd-idle/po/pl/hd_idle.po
applications/luci-app-hd-idle/po/pt-br/hd_idle.po
applications/luci-app-hd-idle/po/pt/hd_idle.po
applications/luci-app-hd-idle/po/ro/hd_idle.po
applications/luci-app-hd-idle/po/ru/hd_idle.po
applications/luci-app-hd-idle/po/sk/hd_idle.po
applications/luci-app-hd-idle/po/sv/hd_idle.po
applications/luci-app-hd-idle/po/templates/hd_idle.pot
applications/luci-app-hd-idle/po/tr/hd_idle.po
applications/luci-app-hd-idle/po/uk/hd_idle.po
applications/luci-app-hd-idle/po/vi/hd_idle.po
applications/luci-app-hd-idle/po/zh-cn/hd_idle.po
applications/luci-app-hd-idle/po/zh-tw/hd_idle.po
applications/luci-app-lxc/Makefile [new file with mode: 0644]
applications/luci-app-lxc/htdocs/luci-static/resources/cbi/green.gif [new file with mode: 0644]
applications/luci-app-lxc/htdocs/luci-static/resources/cbi/purple.gif [new file with mode: 0644]
applications/luci-app-lxc/htdocs/luci-static/resources/cbi/red.gif [new file with mode: 0644]
applications/luci-app-lxc/luasrc/controller/lxc.lua [new file with mode: 0644]
applications/luci-app-lxc/luasrc/model/cbi/lxc.lua [new file with mode: 0644]
applications/luci-app-lxc/luasrc/view/lxc.htm [new file with mode: 0644]
applications/luci-app-lxc/root/etc/config/lxc [new file with mode: 0644]
applications/luci-app-meshwizard/luasrc/model/cbi/freifunk/meshwizard.lua
applications/luci-app-meshwizard/po/pt-br/meshwizard.po
applications/luci-app-mjpg-streamer/po/pt-br/mjpg-streamer.po [new file with mode: 0644]
applications/luci-app-mwan3/Makefile [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/controller/mwan3.lua [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/view/admin_status/index/mwan.htm [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm [new file with mode: 0644]
applications/luci-app-mwan3/po/ja/mwan3.po [new file with mode: 0644]
applications/luci-app-mwan3/po/templates/mwan3.pot [new file with mode: 0644]
applications/luci-app-mwan3/po/zh-cn/mwan3.po [new file with mode: 0644]
applications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak [new file with mode: 0755]
applications/luci-app-mwan3/root/etc/uci-defaults/60_luci-mwan3 [new file with mode: 0755]
applications/luci-app-olsr/po/pt-br/olsr.po
applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua
applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua
applications/luci-app-openvpn/po/pt-br/openvpn.po
applications/luci-app-openvpn/po/zh-cn/openvpn.po
applications/luci-app-privoxy/po/pt-br/privoxy.po [new file with mode: 0644]
applications/luci-app-radicale/po/pt-br/radicale.po [new file with mode: 0644]
applications/luci-app-samba/luasrc/model/cbi/samba.lua
applications/luci-app-samba/po/ca/samba.po
applications/luci-app-samba/po/cs/samba.po
applications/luci-app-samba/po/de/samba.po
applications/luci-app-samba/po/el/samba.po
applications/luci-app-samba/po/en/samba.po
applications/luci-app-samba/po/es/samba.po
applications/luci-app-samba/po/fr/samba.po
applications/luci-app-samba/po/he/samba.po
applications/luci-app-samba/po/hu/samba.po
applications/luci-app-samba/po/it/samba.po
applications/luci-app-samba/po/ja/samba.po
applications/luci-app-samba/po/ms/samba.po
applications/luci-app-samba/po/no/samba.po
applications/luci-app-samba/po/pl/samba.po
applications/luci-app-samba/po/pt-br/samba.po
applications/luci-app-samba/po/pt/samba.po
applications/luci-app-samba/po/ro/samba.po
applications/luci-app-samba/po/ru/samba.po
applications/luci-app-samba/po/sk/samba.po
applications/luci-app-samba/po/sv/samba.po
applications/luci-app-samba/po/templates/samba.pot
applications/luci-app-samba/po/tr/samba.po
applications/luci-app-samba/po/uk/samba.po
applications/luci-app-samba/po/vi/samba.po
applications/luci-app-samba/po/zh-cn/samba.po
applications/luci-app-samba/po/zh-tw/samba.po
applications/luci-app-shadowsocks-libev/po/pt-br/shadowsocks-libev.po [new file with mode: 0644]
applications/luci-app-shairplay/po/pt-br/shairplay.po [new file with mode: 0644]
applications/luci-app-simple-adblock/Makefile [new file with mode: 0644]
applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua [new file with mode: 0644]
applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua [new file with mode: 0644]
applications/luci-app-simple-adblock/po/ja/simple-adblock.po [new file with mode: 0644]
applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po [new file with mode: 0644]
applications/luci-app-simple-adblock/po/pt/simple-adblock.po [new file with mode: 0644]
applications/luci-app-simple-adblock/po/templates/simple-adblock.pot [new file with mode: 0644]
applications/luci-app-simple-adblock/root/etc/uci-defaults/40_luci-simple-adblock [new file with mode: 0644]
applications/luci-app-squid/Makefile [new file with mode: 0644]
applications/luci-app-squid/luasrc/controller/squid.lua [new file with mode: 0644]
applications/luci-app-squid/luasrc/model/cbi/squid.lua [new file with mode: 0644]
applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua [new file with mode: 0644]
applications/luci-app-statistics/luasrc/statistics/datatree.lua
applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/contextswitch.lua [new file with mode: 0644]
applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua
applications/luci-app-statistics/po/ca/statistics.po
applications/luci-app-statistics/po/cs/statistics.po
applications/luci-app-statistics/po/de/statistics.po
applications/luci-app-statistics/po/el/statistics.po
applications/luci-app-statistics/po/en/statistics.po
applications/luci-app-statistics/po/es/statistics.po
applications/luci-app-statistics/po/fr/statistics.po
applications/luci-app-statistics/po/he/statistics.po
applications/luci-app-statistics/po/hu/statistics.po
applications/luci-app-statistics/po/it/statistics.po
applications/luci-app-statistics/po/ja/statistics.po
applications/luci-app-statistics/po/ms/statistics.po
applications/luci-app-statistics/po/no/statistics.po
applications/luci-app-statistics/po/pl/statistics.po
applications/luci-app-statistics/po/pt-br/statistics.po
applications/luci-app-statistics/po/pt/statistics.po
applications/luci-app-statistics/po/ro/statistics.po
applications/luci-app-statistics/po/ru/statistics.po
applications/luci-app-statistics/po/sk/statistics.po
applications/luci-app-statistics/po/sv/statistics.po
applications/luci-app-statistics/po/templates/statistics.pot
applications/luci-app-statistics/po/tr/statistics.po
applications/luci-app-statistics/po/uk/statistics.po
applications/luci-app-statistics/po/vi/statistics.po
applications/luci-app-statistics/po/zh-cn/rrdtool.po
applications/luci-app-statistics/po/zh-cn/statistics.po
applications/luci-app-statistics/po/zh-tw/statistics.po
applications/luci-app-statistics/root/etc/config/luci_statistics
applications/luci-app-statistics/root/usr/bin/stat-genconfig
applications/luci-app-travelmate/Makefile
applications/luci-app-travelmate/luasrc/controller/travelmate.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua [deleted file]
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua [new file with mode: 0644]
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua [new file with mode: 0644]
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua [new file with mode: 0644]
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua [new file with mode: 0644]
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua [new file with mode: 0644]
applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm [new file with mode: 0644]
applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm [new file with mode: 0644]
applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm [new file with mode: 0644]
applications/luci-app-travelmate/po/ja/travelmate.po
applications/luci-app-travelmate/po/pt-br/travelmate.po [new file with mode: 0644]
applications/luci-app-travelmate/po/templates/travelmate.pot
applications/luci-app-uhttpd/Makefile
applications/luci-app-uhttpd/po/pt-br/uhttpd.po [new file with mode: 0644]
applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua
applications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp
applications/luci-app-vpnbypass/Makefile
applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua
applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po [new file with mode: 0644]
applications/luci-app-vpnbypass/po/templates/vpnbypass.pot
applications/luci-app-watchcat/po/pt-br/watchcat.po
applications/luci-app-wifischedule/po/pt-br/wifischedule.po [new file with mode: 0644]
applications/luci-app-wireguard/Makefile [new file with mode: 0644]
applications/luci-app-wireguard/luasrc/controller/wireguard.lua [new file with mode: 0644]
applications/luci-app-wireguard/luasrc/view/wireguard.htm [new file with mode: 0644]
applications/luci-app-wireguard/po/ja/wireguard.po [new file with mode: 0644]
applications/luci-app-wireguard/po/pt-br/wireguard.po [new file with mode: 0644]
applications/luci-app-wireguard/po/templates/wireguard.pot [new file with mode: 0644]
applications/luci-app-wireguard/po/zh-cn/wireguard.po [new file with mode: 0644]
applications/luci-app-wol/po/pt-br/wol.po
build/zoneinfo2lua.pl
contrib/package/community-profiles/files/etc/config/profile_potsdam
contrib/package/freifunk-common/Makefile
contrib/package/freifunk-common/files/etc/config/freifunk
contrib/package/meshwizard/Makefile
contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/rename-wifi.sh
contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi.sh
contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/supports_vap.sh
luci.mk
modules/luci-base/luasrc/cbi/datatypes.lua
modules/luci-base/luasrc/dispatcher.lua
modules/luci-base/luasrc/model/network.lua
modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua
modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua
modules/luci-base/po/ca/base.po
modules/luci-base/po/cs/base.po
modules/luci-base/po/de/base.po
modules/luci-base/po/el/base.po
modules/luci-base/po/en/base.po
modules/luci-base/po/es/base.po
modules/luci-base/po/fr/base.po
modules/luci-base/po/he/base.po
modules/luci-base/po/hu/base.po
modules/luci-base/po/it/base.po
modules/luci-base/po/ja/base.po
modules/luci-base/po/ko/base.po
modules/luci-base/po/ms/base.po
modules/luci-base/po/no/base.po
modules/luci-base/po/pl/base.po
modules/luci-base/po/pt-br/base.po
modules/luci-base/po/pt/base.po
modules/luci-base/po/ro/base.po
modules/luci-base/po/ru/base.po
modules/luci-base/po/sk/base.po
modules/luci-base/po/sv/base.po
modules/luci-base/po/templates/base.pot
modules/luci-base/po/tr/base.po
modules/luci-base/po/uk/base.po
modules/luci-base/po/vi/base.po
modules/luci-base/po/zh-cn/base.po
modules/luci-base/po/zh-tw/base.po
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua
modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm
modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua
protocols/luci-proto-ncm/Makefile [new file with mode: 0644]
protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua [new file with mode: 0644]
protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua [new file with mode: 0644]
protocols/luci-proto-vpnc/Makefile
protocols/luci-proto-wireguard/Makefile
protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua
themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm
themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm
themes/luci-theme-material/luasrc/view/themes/material/header.htm [changed mode: 0755->0644]
themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm

index 8efe2d6..ae1eba2 100644 (file)
@@ -1,14 +1,12 @@
-# Copyright (C) 2016 Openwrt.org
-#
-# This is free software, licensed under the Apache License, Version 2.0 .
-#
+# Copyright 2017 Dirk Brenken (dev@brenken.org)
+# This is free software, licensed under the Apache License, Version 2.0
 
 include $(TOPDIR)/rules.mk
 
 LUCI_TITLE:=LuCI support for Adblock
-LUCI_DEPENDS:=+adblock
+LUCI_DEPENDS:=+adblock +luci-lib-jsonc
 LUCI_PKGARCH:=all
 
 include ../../luci.mk
 
-# call BuildPackage - OpenWrt buildroot signature
+# call BuildPackage - OpenWrt buildroot signature
\ No newline at end of file
index d8b4718..03b9fc2 100644 (file)
@@ -1,12 +1,52 @@
--- Copyright 2016 Openwrt.org
--- Licensed to the public under the Apache License 2.0.
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
 
 module("luci.controller.adblock", package.seeall)
 
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local template = require("luci.template")
+local i18n = require("luci.i18n")
+
 function index()
        if not nixio.fs.access("/etc/config/adblock") then
                return
        end
+       entry({"admin", "services", "adblock"}, firstchild(), _("Adblock"), 30).dependent = false
+       entry({"admin", "services", "adblock", "tab_from_cbi"}, cbi("adblock/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true
+       entry({"admin", "services", "adblock", "logfile"}, call("logread"), _("View Logfile"), 20).leaf = true
+       entry({"admin", "services", "adblock", "advanced"}, firstchild(), _("Advanced"), 100)
+       entry({"admin", "services", "adblock", "advanced", "blacklist"}, cbi("adblock/blacklist_tab"), _("Edit Blacklist"), 110).leaf = true
+       entry({"admin", "services", "adblock", "advanced", "whitelist"}, cbi("adblock/whitelist_tab"), _("Edit Whitelist"), 120).leaf = true
+       entry({"admin", "services", "adblock", "advanced", "configuration"}, cbi("adblock/configuration_tab"), _("Edit Configuration"), 130).leaf = true
+       entry({"admin", "services", "adblock", "advanced", "query"}, call("query"), _("Query domains"), 140).leaf = true
+       entry({"admin", "services", "adblock", "advanced", "result"}, call("queryData"), nil, 150).leaf = true
+end
+
+function logread()
+       local logfile = util.trim(util.exec("logread -e 'adblock'"))
+       template.render("adblock/logread", {title = i18n.translate("Adblock Logfile"), content = logfile})
+end
 
-       entry({"admin", "services", "adblock"}, cbi("adblock"), _("Adblock"), 40)
+function query()
+       template.render("adblock/query", {title = i18n.translate("Adblock Domain Query")})
+end
+
+function queryData(domain)
+       if domain and domain:match("^[a-zA-Z0-9%-%._]+$") then
+               luci.http.prepare_content("text/plain")
+               local cmd = "/etc/init.d/adblock query %q 2>&1"
+               local util = io.popen(cmd % domain)
+               if util then
+                       while true do
+                               local line = util:read("*l")
+                               if not line then
+                                       break
+                               end
+                               luci.http.write(line)
+                               luci.http.write("\n")
+                       end
+                       util:close()
+               end
+       end
 end
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock.lua
deleted file mode 100644 (file)
index 0a4a4cd..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
--- Copyright 2016 Hannu Nyman
--- Licensed to the public under the Apache License 2.0.
-
-m = Map("adblock", translate("Adblock"),
-       translate("Configuration of the adblock package to block ad/abuse domains by using DNS."))
-
--- General options
-
-s = m:section(NamedSection, "global", "adblock", translate("Global options"))
-
-o1 = s:option(Flag, "adb_enabled", translate("Enable adblock"))
-o1.rmempty = false
-o1.default = 0
-
-o3 = s:option(Value, "adb_whitelist", translate("Whitelist file"),
-     translate("File with whitelisted hosts/domains that are allowed despite being on a blocklist."))
-o3.rmempty = false
-o3.datatype = "file"
-
--- Blocklist options
-
-bl = m:section(TypedSection, "source", translate("Blocklist sources"),
-       translate("Available blocklist sources (")
-       .. [[<a href="https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md" target="_blank">]]
-       .. translate("see list details")
-       .. [[</a>]]
-       .. translate("). Note that list URLs and Shallalist category selections are not configurable via Luci."))
-bl.template = "cbi/tblsection"
-
-name = bl:option(Flag, "enabled", translate("Enabled"))
-name.rmempty  = false
-
-des = bl:option(DummyValue, "adb_src_desc", translate("Description"))
-
--- Additional options
-
-s2 = m:section(NamedSection, "global", "adblock", translate("Backup options"))
-
-o4 = s2:option(Flag, "adb_backup", translate("Enable blocklist backup"))
-o4.rmempty = false
-o4.default = 0
-
-o5 = s2:option(Value, "adb_backupdir", translate("Backup directory"))
-o5.rmempty = false
-o5.datatype = "directory"
-
--- Extra options
-
-e = m:section(NamedSection, "global", "adblock", translate("Extra options"),
-       translate("Options for further tweaking in case the defaults are not suitable for you."))
-
-a = e:option(Flag, "adb_debug", translate("Enable verbose debug logging"))
-a.default = a.disabled
-a.rmempty = false
-
-a = e:option(Value, "adb_iface", translate("Restrict reload trigger to certain interface(s)"),
-       translate("Space separated list of wan interfaces that trigger reload action. " ..
-               "To disable reload trigger set it to 'false'. Default: empty"))
-a.datatype = "network"
-a.rmempty = true
-
-return m
-
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua
new file mode 100644 (file)
index 0000000..59cd1e8
--- /dev/null
@@ -0,0 +1,51 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local uci = require("uci")
+local adbinput = uci.get("adblock", "blacklist", "adb_src" or "/etc/adblock/adblock.blacklist")
+
+if not nixio.fs.access(adbinput) then
+       m = SimpleForm("error", nil,
+               translate("Input file not found, please check your configuration."))
+       m.reset = false
+       m.submit = false
+       return m
+end
+
+if nixio.fs.stat(adbinput).size > 524288 then
+       m = SimpleForm("error", nil,
+               translate("The file size is too large for online editing in LuCI (&gt; 512 KB). ")
+               .. translate("Please edit this file directly in a terminal session."))
+       m.reset = false
+       m.submit = false
+       return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("adblock/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+       translatef("This form allows you to modify the content of the adblock blacklist (%s).<br />", adbinput)
+       .. translate("Please add only one domain per line. Comments introduced with '#' are allowed - ip addresses, wildcards and regex are not."))
+
+f = s:option(TextValue, "data")
+f.datatype = "string"
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+       return nixio.fs.readfile(adbinput) or ""
+end
+
+function f.write(self, section, data)
+       return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+       return true
+end
+
+return m
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua
new file mode 100644 (file)
index 0000000..1607f14
--- /dev/null
@@ -0,0 +1,38 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local adbinput = "/etc/config/adblock"
+
+if not nixio.fs.access(adbinput) then
+       m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+       m.reset = false
+       m.submit = false
+       return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("adblock/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+       translate("This form allows you to modify the content of the main adblock configuration file (/etc/config/adblock)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+       return nixio.fs.readfile(adbinput) or ""
+end
+
+function f.write(self, section, data)
+       return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+       return true
+end
+
+return m
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
new file mode 100644 (file)
index 0000000..f71fb7b
--- /dev/null
@@ -0,0 +1,168 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local uci = require("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 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")
+
+m = Map("adblock", translate("Adblock"),
+       translate("Configuration of the adblock package to block ad/abuse domains by using DNS. ")
+       .. translatef("For further information "
+       .. "<a href=\"%s\" target=\"_blank\">"
+       .. "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")
+       luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
+end
+
+-- Main adblock options
+
+s = m:section(NamedSection, "global", "adblock")
+
+o1 = s:option(Flag, "adb_enabled", translate("Enable adblock"))
+o1.default = o1.enabled
+o1.rmempty = false
+
+btn = s:option(Button, "", translate("Suspend / Resume adblock"))
+if dnsFile1 ~= "" or dnsFile2 ~= "" then
+       btn.inputtitle = translate("Resume adblock")
+       btn.inputstyle = "apply"
+       btn.disabled = false
+       function btn.write()
+               luci.sys.call("/etc/init.d/adblock resume >/dev/null 2>&1")
+               luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
+       end
+else
+       btn.inputtitle = translate("Suspend adblock")
+       btn.inputstyle = "reset"
+       btn.disabled = false
+       function btn.write()
+               luci.sys.call("/etc/init.d/adblock suspend >/dev/null 2>&1")
+               luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
+       end
+end
+
+o2 = s:option(Value, "adb_iface", translate("Restrict interface trigger to certain interface(s)"),
+       translate("Space separated list of interfaces that trigger adblock processing. "..
+       "To disable event driven (re-)starts remove all entries."))
+o2.rmempty = true
+
+o3 = s:option(Value, "adb_triggerdelay", translate("Trigger delay"),
+       translate("Additional trigger delay in seconds before adblock processing begins."))
+o3.default = 2
+o3.datatype = "range(1,90)"
+o3.rmempty = false
+
+o4 = s:option(Flag, "adb_debug", translate("Enable verbose debug logging"))
+o4.default = o4.disabled
+o4.rmempty = false
+
+-- Runtime information
+
+ds = s:option(DummyValue, "_dummy", translate("Runtime information"))
+ds.template = "cbi/nullsection"
+
+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
+       dv1.value = translate("no domains blocked")
+elseif dnsFile1 ~= "" or dnsFile2 ~= "" 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
+       dv2.value = translate("n/a")
+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
+       dv3.value = translate("n/a")
+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
+       dv4.value = translate("n/a")
+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
+       dv5.value = translate("n/a")
+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
+       dv6.value = translate("n/a")
+end
+
+-- Blocklist table
+
+bl = m:section(TypedSection, "source", translate("Blocklist sources"),
+       translate("Available blocklist sources. ")
+       .. translate("Note that list URLs and Shallalist category selections are configurable in the 'Advanced' section."))
+bl.template = "cbi/tblsection"
+
+name = bl:option(Flag, "enabled", translate("Enabled"))
+name.rmempty = false
+
+ssl = bl:option(DummyValue, "adb_src", translate("SSL req."))
+function ssl.cfgvalue(self, section)
+       local source = self.map:get(section, "adb_src")
+       if source and source:match("https://") then
+               return translate("Yes")
+       else
+               return translate("No")
+       end
+end
+
+des = bl:option(DummyValue, "adb_src_desc", translate("Description"))
+
+-- Extra options
+
+e = m:section(NamedSection, "global", "adblock", translate("Extra options"),
+       translate("Options for further tweaking in case the defaults are not suitable for you."))
+
+e1 = e:option(Flag, "adb_forcedns", translate("Force local DNS"),
+       translate("Redirect all DNS queries to the local resolver."))
+e1.default = e1.disabled
+e1.rmempty = false
+
+e2 = e:option(Flag, "adb_forcesrt", translate("Force Overall Sort"),
+       translate("Enable memory intense overall sort / duplicate removal on low memory devices (&lt; 64 MB RAM)"))
+e2.default = e2.disabled
+e2.rmempty = false
+
+e3 = e:option(Flag, "adb_backup", translate("Enable blocklist backup"))
+e3.default = e3.disabled
+e3.rmempty = false
+
+e4 = e:option(Value, "adb_backupdir", translate("Backup directory"))
+e4.datatype = "directory"
+e4.rmempty = false
+
+return m
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua
new file mode 100644 (file)
index 0000000..10a5938
--- /dev/null
@@ -0,0 +1,50 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local uci = require("uci")
+local adbinput = uci.get("adblock", "global", "adb_whitelist") or "/etc/adblock/adblock.whitelist"
+
+if not nixio.fs.access(adbinput) then
+       m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+       m.reset = false
+       m.submit = false
+       return m
+end
+
+if nixio.fs.stat(adbinput).size > 524288 then
+       m = SimpleForm("error", nil,
+       translate("The file size is too large for online editing in LuCI (&gt; 512 KB). ")
+       .. translate("Please edit this file directly in a terminal session."))
+       m.reset = false
+       m.submit = false
+       return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("adblock/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+       translatef("This form allows you to modify the content of the adblock whitelist (%s).<br />", adbinput)
+       .. translate("Please add only one domain per line. Comments introduced with '#' are allowed - ip addresses, wildcards and regex are not."))
+
+f = s:option(TextValue, "data")
+f.datatype = "string"
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+       return nixio.fs.readfile(adbinput) or ""
+end
+
+function f.write(self, section, data)
+       return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+       return true
+end
+
+return m
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/config_css.htm b/applications/luci-app-adblock/luasrc/view/adblock/config_css.htm
new file mode 100644 (file)
index 0000000..53493a1
--- /dev/null
@@ -0,0 +1,10 @@
+<style type="text/css">
+       textarea
+       {
+               border: 1px solid #cccccc;
+               padding: 5px;
+               font-size: 12px;
+               font-family: monospace;
+               resize: none;
+       }
+</style>
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/logread.htm b/applications/luci-app-adblock/luasrc/view/adblock/logread.htm
new file mode 100644 (file)
index 0000000..5e25a54
--- /dev/null
@@ -0,0 +1,14 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+<div class="cbi-map">
+       <fieldset class="cbi-section">
+               <div class="cbi-section-descr"><%:This form shows the syslog output, pre-filtered for adblock related messages only.%></div>
+               <textarea id="logread_id" style="width: 100%; height: 450px; border: 1px solid #cccccc; padding: 5px; font-size: 12px; font-family: monospace; resize: none;" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+2%>"><%=content:pcdata()%></textarea>
+       </fieldset>
+</div>
+<%+footer%>
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/query.htm b/applications/luci-app-adblock/luasrc/view/adblock/query.htm
new file mode 100644 (file)
index 0000000..ce706e4
--- /dev/null
@@ -0,0 +1,65 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">
+//<![CDATA[
+       var stxhr = new XHR();
+
+       function update_status(data)
+       {
+               var domain = data.value;
+               var input = document.getElementById('query_input');
+               var output = document.getElementById('query_output');
+
+               if (input && output)
+               {
+                       output.innerHTML =
+                               '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> ' +
+                               '<%:Waiting for command to complete...%>'
+                       ;
+                       input.parentNode.style.display = 'block';
+                       input.style.display = 'inline';
+                       stxhr.post('<%=luci.dispatcher.build_url('admin/services/adblock/advanced/result/')%>' + domain, { token: '<%=token%>' },
+                               function(x)
+                               {
+                                       if (x.responseText)
+                                       {
+                                               input.style.display = 'none';
+                                               output.innerHTML = String.format('<pre>%h</pre>', x.responseText);
+                                       }
+                                       else
+                                       {
+                                               input.style.display = 'none';
+                                               output.innerHTML = '<span class="error"><%:Invalid domain specified!%></span>';
+                                       }
+                               }
+                       );
+               }
+       }
+//]]>
+</script>
+
+<form method="post" action="<%=REQUEST_URI%>">
+       <div class="cbi-map">
+               <fieldset class="cbi-section">
+                       <div class="cbi-section-descr"><%:This form allows you to query active block lists for certain domains, e.g. for whitelisting.%></div>
+                       <div style="width:33%; float:left;">
+                               <input style="margin: 5px 0" type="text" value="www.lede-project.org" name="input" />
+                               <input type="button" value="<%:Query%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.input)" />
+                       </div>
+                       <br style="clear:both" />
+                       <br />
+               </fieldset>
+       </div>
+       <fieldset class="cbi-section" style="display:none">
+               <legend id="query_input"><%:Collecting data...%></legend>
+               <span id="query_output"></span>
+       </fieldset>
+</form>
+
+<%+footer%>
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm b/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm
new file mode 100644 (file)
index 0000000..ee3a455
--- /dev/null
@@ -0,0 +1,10 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+cbi/valueheader%>
+
+<input name="runtime" id="runtime" type="text" class="cbi-input-text" style="border: none; box-shadow: none; background-color: #ffffff; color: #0069d6;" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
+
+<%+cbi/valuefooter%>
index a3c982f..ac470fe 100644 (file)
@@ -8,45 +8,79 @@ msgstr ""
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.0.1\n"
 "Language: ja\n"
 
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
-msgstr ""
-")。これらのリストのURLおよびshallaリストのカテゴリー選択は、Luciによって設定"
-"できないことに注意します。"
-
 msgid "Adblock"
 msgstr "Adblock"
 
-msgid "Available blocklist sources ("
-msgstr "利用可能なブロックリスト提供元です("
+msgid "Adblock Domain Query"
+msgstr "Adblock ドメイン検索"
+
+msgid "Adblock Logfile"
+msgstr "Adblock ログファイル"
+
+msgid "Adblock version"
+msgstr "Adblock バージョン"
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr "Adblock の処理が開始されるまでの、追加の遅延時間(秒)です。"
+
+msgid "Advanced"
+msgstr "詳細設定"
+
+msgid "Available blocklist sources."
+msgstr "利用可能なブロックリスト提供元です。"
 
 msgid "Backup directory"
-msgstr "バックアップ ディレクトリ"
+msgstr "バックアップ ディレクトリ"
 
-msgid "Backup options"
-msgstr "ã\83\90ã\83\83ã\82¯ã\82¢ã\83\83ã\83\97 ã\82ªã\83\97ã\82·ã\83§ã\83³"
+msgid "Blocked domains (overall)"
+msgstr "ã\83\96ã\83­ã\83\83ã\82¯æ¸\88ã\81¿ã\83\89ã\83¡ã\82¤ã\83³ï¼\88å\85¨ä½\93ï¼\89"
 
 msgid "Blocklist sources"
 msgstr "ブロックリスト提供元"
 
+msgid "Collecting data..."
+msgstr "データ収集中です..."
+
 msgid ""
 "Configuration of the adblock package to block ad/abuse domains by using DNS."
 msgstr ""
-"広告/不正ドメインをDNSを利用してブロックする、adblock パッケージの設定です。"
+"DNS の利用によって広告/不正ドメインをブロックする、Adblock パッケージの設定で"
+"す。"
+
+msgid "DNS backend"
+msgstr "DNS バックエンド"
 
 msgid "Description"
 msgstr "説明"
 
+msgid "Download Utility (SSL Library)"
+msgstr "ダウンロード ユーティリティ(SSL ライブラリ)"
+
+msgid "Edit Blacklist"
+msgstr "ブラックリストの編集"
+
+msgid "Edit Configuration"
+msgstr "設定の編集"
+
+msgid "Edit Whitelist"
+msgstr "ホワイトリストの編集"
+
 msgid "Enable adblock"
-msgstr "adblockの有効化"
+msgstr "Adblock の有効化"
 
 msgid "Enable blocklist backup"
 msgstr "ブロックリスト バックアップの有効化"
 
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB RAM)"
+msgstr ""
+"メモリー容量の少ないデバイス(RAM 64MB 未満)において、一時ファイル内の全体的"
+"なソート及び重複の除去を有効にします。"
+
 msgid "Enable verbose debug logging"
 msgstr "詳細なデバッグ ログの有効化"
 
@@ -57,34 +91,240 @@ msgid "Extra options"
 msgstr "拡張設定"
 
 msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+"SSLで保護されているブロックリストの取得には、適切なSSL ライブラリが必要です。"
+"例: 'libustream-ssl' または wget 'ビルトイン'"
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
 msgstr ""
-"ファイルのホワイトリスト ホスト/ドメインは、ブロックリストに登録されていても"
-"許可されます。"
+"詳細な情報は<a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a>を確"
+"認してください。"
+
+msgid "Force Overall Sort"
+msgstr "全体ソートの強制"
+
+msgid "Force local DNS"
+msgstr "ローカル DNS の強制"
+
+msgid "Input file not found, please check your configuration."
+msgstr "入力ファイルが見つかりません。設定を確認してください。"
+
+msgid "Invalid domain specified!"
+msgstr "無効なドメインが指定されています!"
 
-msgid "Global options"
-msgstr "一般設定"
+msgid "Last rundate"
+msgstr "最終実行日時"
+
+msgid "Loading"
+msgstr "読込中"
+
+msgid "No"
+msgstr "いいえ"
+
+msgid ""
+"Note that list URLs and Shallalist category selections are configurable in "
+"the 'Advanced' section."
+msgstr ""
+"リストの URL 及び \"Shalla\" リストのカテゴリー設定は、'詳細設定' セクション"
+"で設定することができます。"
 
 msgid ""
 "Options for further tweaking in case the defaults are not suitable for you."
 msgstr "デフォルト設定が適切でない場合、追加で設定するためのオプションです。"
 
-msgid "Restrict reload trigger to certain interface(s)"
-msgstr "リロードトリガを特定のインターフェースに限定する"
+msgid "Overview"
+msgstr "概要"
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+"1行に1つのドメインを追加してください。'#' から始まるコメントを記述できます"
+"が、IP アドレスやワイルドカード、正規表現を設定値として使用することはできませ"
+"ん。"
+
+msgid "Please edit this file directly in a terminal session."
+msgstr "ターミナル セッションで直接このファイルを編集してください。"
+
+msgid "Query"
+msgstr "検索"
+
+msgid "Query domains"
+msgstr "ドメインの検索"
+
+msgid "Redirect all DNS queries to the local resolver."
+msgstr "全ての DNS クエリをローカル リゾルバにリダイレクトします。"
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr "インターフェース トリガーを特定のインターフェースに限定する"
+
+msgid "Resume adblock"
+msgstr "Adblock の再開"
+
+msgid "Runtime information"
+msgstr "実行情報"
+
+msgid "SSL req."
+msgstr "SSL 必須"
+
+msgid ""
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+"Adblock の処理のトリガーとなる、スペースで区切られたインターフェースのリスト"
+"です。処理を発生させるイベントを無効にするには、全てのエントリーを削除して空"
+"欄にします。"
+
+msgid "Status"
+msgstr "ステータス"
+
+msgid "Suspend / Resume adblock"
+msgstr "Adblock の一時停止/再開"
+
+msgid "Suspend adblock"
+msgstr "Adblock の一時停止"
+
+msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgstr ""
+"ファイル サイズが大きすぎるため、 LuCI 上でオンライン編集できません(&gt; "
+"512 KB)。"
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+"このフォームでは、Adblock ブラックリスト (%s) の内容を変更することができま"
+"す。<br />"
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
+msgstr ""
+"このフォームでは、Adblock ホワイトリスト (%s) の内容を変更することができま"
+"す。<br />"
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+"このフォームでは、メインのAdblock 設定ファイル (/etc/config/adblock) の内容を"
+"変更することができます。"
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+"このフォームでは、現在有効なリスト内で特定のドメインを検索することができま"
+"す。例: ホワイトリスト内"
 
 msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
 msgstr ""
-"リロード実行のトリガとなる、スペースで区切られたWANインターフェースのリストで"
-"す。リロードトリガを無効にするには、 false を設定します。デフォルト:(空)"
+"このフォームには、システムログ内の Adblock に関連するメッセージのみが表示され"
+"ます。"
+
+msgid "Trigger delay"
+msgstr "トリガー遅延"
+
+msgid "View Logfile"
+msgstr "ログファイルを見る"
+
+msgid "Waiting for command to complete..."
+msgstr "コマンドの完了をお待ちください..."
+
+msgid "Yes"
+msgstr "はい"
+
+msgid "active"
+msgstr "動作中"
+
+msgid "n/a"
+msgstr "利用不可"
+
+msgid "no domains blocked"
+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 "Whitelist file"
+#~ msgstr "ホワイトリスト ファイル"
 
-msgid "see list details"
-msgstr "リストの詳細を見る"
+#~ msgid "see list details"
+#~ msgstr "リストの詳細を見る"
 
 #~ msgid "Count"
 #~ msgstr "カウント"
diff --git a/applications/luci-app-adblock/po/pt-br/adblock.po b/applications/luci-app-adblock/po/pt-br/adblock.po
new file mode 100644 (file)
index 0000000..72f6910
--- /dev/null
@@ -0,0 +1,270 @@
+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 "Adblock"
+msgstr "Adblock"
+
+msgid "Adblock Domain Query"
+msgstr ""
+
+msgid "Adblock Logfile"
+msgstr ""
+
+msgid "Adblock version"
+msgstr ""
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Available blocklist sources."
+msgstr ""
+
+msgid "Backup directory"
+msgstr "Diretório da cópia de segurança"
+
+msgid "Blocked domains (overall)"
+msgstr ""
+
+msgid "Blocklist sources"
+msgstr "Fontes de listas de bloqueio"
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid ""
+"Configuration of the adblock package to block ad/abuse domains by using DNS."
+msgstr ""
+"Configuração do pacote adblock para bloquear, usando o DNS, domínios que "
+"distribuem propagandas abusivas."
+
+msgid "DNS backend"
+msgstr ""
+
+msgid "Description"
+msgstr "Descrição"
+
+msgid "Download Utility (SSL Library)"
+msgstr ""
+
+msgid "Edit Blacklist"
+msgstr ""
+
+msgid "Edit Configuration"
+msgstr ""
+
+msgid "Edit Whitelist"
+msgstr ""
+
+msgid "Enable adblock"
+msgstr "Habilitar adblock"
+
+msgid "Enable blocklist backup"
+msgstr "Habilitar cópia de segurança da lista de bloqueio"
+
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB RAM)"
+msgstr ""
+
+msgid "Enable verbose debug logging"
+msgstr "Habilite registros detalhados para depuração"
+
+msgid "Enabled"
+msgstr "Habilitado"
+
+msgid "Extra options"
+msgstr "Opções adicionais"
+
+msgid ""
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+
+msgid "Force Overall Sort"
+msgstr ""
+
+msgid "Force local DNS"
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Invalid domain specified!"
+msgstr ""
+
+msgid "Last rundate"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid ""
+"Note that list URLs and Shallalist category selections are configurable in "
+"the 'Advanced' section."
+msgstr ""
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+"Opções para aprimoramentos adicionais caso as opções padrão não sejam "
+"suficientes para você."
+
+msgid "Overview"
+msgstr ""
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+msgid "Query"
+msgstr ""
+
+msgid "Query domains"
+msgstr ""
+
+msgid "Redirect all DNS queries to the local resolver."
+msgstr ""
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Resume adblock"
+msgstr ""
+
+msgid "Runtime information"
+msgstr ""
+
+msgid "SSL req."
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Suspend / Resume adblock"
+msgstr ""
+
+msgid "Suspend adblock"
+msgstr ""
+
+msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "active"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "no domains blocked"
+msgstr ""
+
+msgid "suspended"
+msgstr ""
+
+#~ msgid "Backup options"
+#~ msgstr "Opções da cópia de segurança"
+
+#~ msgid ""
+#~ "). Note that list URLs and Shallalist category selections are not "
+#~ "configurable via Luci."
+#~ msgstr ""
+#~ "). Note que a lista de URL e as seleções de categoria da Shallalist não "
+#~ "são configuráveis pelo Luci."
+
+#~ msgid "Available blocklist sources ("
+#~ msgstr "Fontes de listas de bloqueio disponíveis ("
+
+#~ msgid ""
+#~ "File with whitelisted hosts/domains that are allowed despite being on a "
+#~ "blocklist."
+#~ msgstr ""
+#~ "Arquivo com a lista branca dos equipamentos/domínios que serão "
+#~ "autorizados mesmo estando na lista de bloqueio."
+
+#~ msgid "Global options"
+#~ msgstr "Opções Globais"
+
+#~ msgid "Restrict reload trigger to certain interface(s)"
+#~ msgstr "Restringir o gatilho de recarga para somente alguma(s) interface(s)"
+
+#~ msgid ""
+#~ "Space separated list of wan interfaces that trigger reload action. To "
+#~ "disable reload trigger set it to 'false'. Default: empty"
+#~ msgstr ""
+#~ "Lista das interfaces WAN, separadas por espaço, que podem disparar uma "
+#~ "ação de recarga. Para desabilitar este gatilho, defina-o como 'false'. "
+#~ "Padrão: em branco"
+
+#~ msgid "Whitelist file"
+#~ msgstr "Arquivo da lista branca"
+
+#~ msgid "see list details"
+#~ msgstr "veja os detalhes da lista"
index 22a30e9..7f27122 100644 (file)
@@ -1,41 +1,74 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8\n"
 
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
+msgid "Adblock"
+msgstr "Adblock"
+
+msgid "Adblock Domain Query"
 msgstr ""
 
-msgid "Adblock"
-msgstr "Blockering av annonser"
+msgid "Adblock Logfile"
+msgstr "Adblock's loggfil"
+
+msgid "Adblock version"
+msgstr "Version för Adblock"
 
-msgid "Available blocklist sources ("
-msgstr "Tillgängliga källor för blockeringslistor ("
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr "Avancerat"
+
+msgid "Available blocklist sources."
+msgstr "Tillgängliga källor för blockeringslistor"
 
 msgid "Backup directory"
 msgstr "Säkerhetskopiera mapp"
 
-msgid "Backup options"
-msgstr "Alternativ för säkerhetskopiering"
+msgid "Blocked domains (overall)"
+msgstr "Blockerade domäner (övergripande)"
 
 msgid "Blocklist sources"
 msgstr "Källor för blockeringslistor"
 
+msgid "Collecting data..."
+msgstr "Samlar in data..."
+
 msgid ""
 "Configuration of the adblock package to block ad/abuse domains by using DNS."
 msgstr ""
-"Konfiguration av paket adblock för att blockera annons/otillåtna domäner "
-"genom att användning DNS."
+"Konfiguration av paketet adblock för att blockera annons/otillåtna domäner "
+"genom att använda DNS."
+
+msgid "DNS backend"
+msgstr "Bakände för DNS"
 
 msgid "Description"
 msgstr "Beskrivning"
 
+msgid "Download Utility (SSL Library)"
+msgstr "Nerladdningsprogram (SSL-bibliotek)"
+
+msgid "Edit Blacklist"
+msgstr "Redigera svartlista"
+
+msgid "Edit Configuration"
+msgstr "Redigerar konfigurationen"
+
+msgid "Edit Whitelist"
+msgstr "Redigera vitlista"
+
 msgid "Enable adblock"
-msgstr "Aktivera abblock"
+msgstr "Aktivera adblock"
 
 msgid "Enable blocklist backup"
 msgstr "Aktivera säkerhetskopiering av blockeringslistan"
 
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB RAM)"
+msgstr ""
+
 msgid "Enable verbose debug logging"
 msgstr ""
 
@@ -46,30 +79,164 @@ msgid "Extra options"
 msgstr "Extra alternativ"
 
 msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
 msgstr ""
 
-msgid "Global options"
-msgstr "Globala alternativ"
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+
+msgid "Force Overall Sort"
+msgstr ""
+
+msgid "Force local DNS"
+msgstr "Tvinga lokal DNS"
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+"Inmatningsfilen hittades inte, var vänlig och kontrollera din konfiguration."
+
+msgid "Invalid domain specified!"
+msgstr "Ogiltig domän angiven!"
+
+msgid "Last rundate"
+msgstr ""
+
+msgid "Loading"
+msgstr "Laddar"
+
+msgid "No"
+msgstr "Nej"
+
+msgid ""
+"Note that list URLs and Shallalist category selections are configurable in "
+"the 'Advanced' section."
+msgstr ""
 
 msgid ""
 "Options for further tweaking in case the defaults are not suitable for you."
 msgstr ""
 
-msgid "Restrict reload trigger to certain interface(s)"
+msgid "Overview"
+msgstr "Översikt"
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+msgid "Query"
+msgstr ""
+
+msgid "Query domains"
+msgstr ""
+
+msgid "Redirect all DNS queries to the local resolver."
+msgstr ""
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Resume adblock"
+msgstr "Återuppta adblock"
+
+msgid "Runtime information"
+msgstr "Information om kör-tid"
+
+msgid "SSL req."
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Status"
+msgstr "Status"
+
+msgid "Suspend / Resume adblock"
+msgstr "Upphäv / Återuppta adblock"
+
+msgid "Suspend adblock"
+msgstr "Upphäv adblock"
+
+msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
 msgstr ""
 
 msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
 msgstr ""
 
-msgid "Whitelist file"
-msgstr "Vitlista fil"
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "View Logfile"
+msgstr "Visa loggfil"
+
+msgid "Waiting for command to complete..."
+msgstr "Väntar på att kommandot ska slutföras..."
+
+msgid "Yes"
+msgstr "Ja"
+
+msgid "active"
+msgstr "aktiv"
+
+msgid "n/a"
+msgstr "n/a"
+
+msgid "no domains blocked"
+msgstr "inga domäner blockerades"
+
+msgid "suspended"
+msgstr "upphävd"
+
+#~ msgid "."
+#~ msgstr "."
+
+#~ msgid "For further information"
+#~ msgstr "För mer information"
+
+#~ msgid "Backup options"
+#~ msgstr "Alternativ för säkerhetskopiering"
+
+#~ msgid "Available blocklist sources ("
+#~ msgstr "Tillgängliga källor för blockeringslistor ("
+
+#~ msgid "Global options"
+#~ msgstr "Globala alternativ"
+
+#~ msgid "Whitelist file"
+#~ msgstr "Vitlista fil"
 
-msgid "see list details"
-msgstr "se listans detaljer"
+#~ msgid "see list details"
+#~ msgstr "se listans detaljer"
 
 #~ msgid "Count"
 #~ msgstr "Räkna"
index 6b2dbd1..c5771ef 100644 (file)
@@ -1,39 +1,72 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8"
 
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
+msgid "Adblock"
 msgstr ""
 
-msgid "Adblock"
+msgid "Adblock Domain Query"
+msgstr ""
+
+msgid "Adblock Logfile"
+msgstr ""
+
+msgid "Adblock version"
 msgstr ""
 
-msgid "Available blocklist sources ("
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Available blocklist sources."
 msgstr ""
 
 msgid "Backup directory"
 msgstr ""
 
-msgid "Backup options"
+msgid "Blocked domains (overall)"
 msgstr ""
 
 msgid "Blocklist sources"
 msgstr ""
 
+msgid "Collecting data..."
+msgstr ""
+
 msgid ""
 "Configuration of the adblock package to block ad/abuse domains by using DNS."
 msgstr ""
 
+msgid "DNS backend"
+msgstr ""
+
 msgid "Description"
 msgstr ""
 
+msgid "Download Utility (SSL Library)"
+msgstr ""
+
+msgid "Edit Blacklist"
+msgstr ""
+
+msgid "Edit Configuration"
+msgstr ""
+
+msgid "Edit Whitelist"
+msgstr ""
+
 msgid "Enable adblock"
 msgstr ""
 
 msgid "Enable blocklist backup"
 msgstr ""
 
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB RAM)"
+msgstr ""
+
 msgid "Enable verbose debug logging"
 msgstr ""
 
@@ -44,27 +77,139 @@ msgid "Extra options"
 msgstr ""
 
 msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+
+msgid "Force Overall Sort"
+msgstr ""
+
+msgid "Force local DNS"
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Invalid domain specified!"
 msgstr ""
 
-msgid "Global options"
+msgid "Last rundate"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid ""
+"Note that list URLs and Shallalist category selections are configurable in "
+"the 'Advanced' section."
 msgstr ""
 
 msgid ""
 "Options for further tweaking in case the defaults are not suitable for you."
 msgstr ""
 
-msgid "Restrict reload trigger to certain interface(s)"
+msgid "Overview"
+msgstr ""
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+msgid "Query"
+msgstr ""
+
+msgid "Query domains"
+msgstr ""
+
+msgid "Redirect all DNS queries to the local resolver."
+msgstr ""
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Resume adblock"
+msgstr ""
+
+msgid "Runtime information"
+msgstr ""
+
+msgid "SSL req."
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Suspend / Resume adblock"
+msgstr ""
+
+msgid "Suspend adblock"
+msgstr ""
+
+msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
 msgstr ""
 
 msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "active"
+msgstr ""
+
+msgid "n/a"
 msgstr ""
 
-msgid "Whitelist file"
+msgid "no domains blocked"
 msgstr ""
 
-msgid "see list details"
+msgid "suspended"
 msgstr ""
index 2878d8a..dfa03f3 100644 (file)
@@ -1,53 +1,87 @@
+# liushuyu <liushuyu_011@163.com>, 2017.
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Last-Translator: kuoruan@gmail.com\n"
-"Language-Team: none\n"
+"PO-Revision-Date: 2017-04-15 21:35-0600\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
+"Language-Team: Chinese <kde-i18n-doc@kde.org>\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.5\n"
+"X-Generator: Poedit 2.0.1\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
-msgstr ")。需要注意的是列表URL和列表类别选项无法通过Luci设置。"
-
 msgid "Adblock"
 msgstr "Adblock"
 
-msgid "Available blocklist sources ("
-msgstr "可用拦截列表来源("
+msgid "Adblock Domain Query"
+msgstr ""
+
+msgid "Adblock Logfile"
+msgstr "Adblock 日志文件"
+
+msgid "Adblock version"
+msgstr "Adblock 版本"
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr "高级"
+
+msgid "Available blocklist sources."
+msgstr "可用的 blocklist 来源"
 
 msgid "Backup directory"
 msgstr "备份目录"
 
-msgid "Backup options"
-msgstr "备份选项"
+msgid "Blocked domains (overall)"
+msgstr ""
 
 msgid "Blocklist sources"
 msgstr "拦截列表来源"
 
+msgid "Collecting data..."
+msgstr "正在收集数据..."
+
 msgid ""
 "Configuration of the adblock package to block ad/abuse domains by using DNS."
 msgstr "Adblock 配置工具,通过 DNS 来拦截广告和阻止域名。"
 
+msgid "DNS backend"
+msgstr "DNS 后端"
+
 msgid "Description"
 msgstr "描述"
 
+msgid "Download Utility (SSL Library)"
+msgstr ""
+
+msgid "Edit Blacklist"
+msgstr "编辑黑名单"
+
+msgid "Edit Configuration"
+msgstr "编辑设置"
+
+msgid "Edit Whitelist"
+msgstr "编辑白名单"
+
 msgid "Enable adblock"
 msgstr "启用Adblock"
 
 msgid "Enable blocklist backup"
 msgstr "启用拦截规则备份"
 
-msgid "Enable verbose debug logging"
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB RAM)"
 msgstr ""
 
+msgid "Enable verbose debug logging"
+msgstr "启用详细调试输出"
+
 msgid "Enabled"
 msgstr "启用"
 
@@ -55,30 +89,176 @@ msgid "Extra options"
 msgstr "额外选项"
 
 msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
-msgstr "允许的主机/域名列表"
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+
+msgid "Force Overall Sort"
+msgstr ""
+
+msgid "Force local DNS"
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Invalid domain specified!"
+msgstr "无效域名!"
+
+msgid "Last rundate"
+msgstr ""
+
+msgid "Loading"
+msgstr "加载中"
 
-msgid "Global options"
-msgstr "全局选项"
+msgid "No"
+msgstr "否"
+
+msgid ""
+"Note that list URLs and Shallalist category selections are configurable in "
+"the 'Advanced' section."
+msgstr ""
 
 msgid ""
 "Options for further tweaking in case the defaults are not suitable for you."
 msgstr "在默认设置并不适合你时的额外选项。"
 
-msgid "Restrict reload trigger to certain interface(s)"
+msgid "Overview"
+msgstr "总览"
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+msgid "Query"
+msgstr "查询"
+
+msgid "Query domains"
+msgstr ""
+
+msgid "Redirect all DNS queries to the local resolver."
+msgstr ""
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Resume adblock"
+msgstr "恢复 Adblock"
+
+msgid "Runtime information"
+msgstr "运行信息"
+
+msgid "SSL req."
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Status"
+msgstr "状态"
+
+msgid "Suspend / Resume adblock"
+msgstr "暂停/恢复 Adblock"
+
+msgid "Suspend adblock"
+msgstr "暂停 Adblock"
+
+msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
 msgstr ""
 
 msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr ""
+
+msgid "Trigger delay"
+msgstr "触发延迟"
+
+msgid "View Logfile"
+msgstr "查看日志文件"
+
+msgid "Waiting for command to complete..."
+msgstr "正在执行命令..."
+
+msgid "Yes"
+msgstr "是"
+
+msgid "active"
+msgstr "已启用"
+
+msgid "n/a"
 msgstr ""
 
-msgid "Whitelist file"
-msgstr "白名单文件"
+msgid "no domains blocked"
+msgstr "没有被拦截的域名"
+
+msgid "suspended"
+msgstr "已暂停"
+
+#~ msgid "."
+#~ msgstr "."
+
+#~ msgid "For further information"
+#~ msgstr "更多信息"
+
+#~ msgid "see online documentation"
+#~ msgstr "查看在线文档"
+
+#~ msgid "Backup options"
+#~ msgstr "备份选项"
+
+#~ msgid ""
+#~ "). Note that list URLs and Shallalist category selections are not "
+#~ "configurable via Luci."
+#~ msgstr ")。需要注意的是列表URL和列表类别选项无法通过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 "Whitelist file"
+#~ msgstr "白名单文件"
 
-msgid "see list details"
-msgstr "查看列表详情"
+#~ msgid "see list details"
+#~ msgstr "查看列表详情"
 
 #~ msgid "Count"
 #~ msgstr "数量"
index 55ec29c..741c145 100644 (file)
@@ -1,20 +1,20 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-03-29 23:07+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2017-02-17 17:07-0200\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
 "Language-Team: none\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"POT-Creation-Date: \n"
 
 msgid "AHCP Server"
 msgstr "Servidor AHCP"
 
-#, fuzzy
 msgid ""
 "AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
 "networks designed to be used in place of router discovery or DHCP on "
diff --git a/applications/luci-app-aria2/po/pt-br/aria2.po b/applications/luci-app-aria2/po/pt-br/aria2.po
new file mode 100644 (file)
index 0000000..1bb4137
--- /dev/null
@@ -0,0 +1,236 @@
+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 "\"Falloc\" is not available in all cases."
+msgstr "\"Falloc\" não está disponível em todas as classes."
+
+msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
+msgstr ""
+"<abbr title=\"Distributed Hash Table/Tabla de disperção distribuída\">DHT</"
+"abbr> habilitado"
+
+msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
+msgstr ""
+"<abbr title=\"Local Peer Discovery/Descoberta de Parceiros Locais\">LPD</"
+"abbr> habilitado"
+
+msgid "Additional Bt tracker enabled"
+msgstr "Rastreadores BitTorrent adicionais habilitado"
+
+msgid "Aria2"
+msgstr "Aria2"
+
+msgid "Aria2 Settings"
+msgstr "Configurações do Aria2"
+
+msgid "Aria2 Status"
+msgstr "Estado do Aria2"
+
+msgid ""
+"Aria2 is a multi-protocol &amp; multi-source download utility, here you can "
+"configure the settings."
+msgstr ""
+"Aria2 é um utilitário de transferência multi-protocolo de múltiplas fontes, "
+"aqui você pode configurá-lo."
+
+msgid "Autosave session interval"
+msgstr "Intervalo para autossalvamento da sessão"
+
+msgid "BitTorrent Settings"
+msgstr "Configurações do BitTorrent"
+
+msgid "BitTorrent listen port"
+msgstr "Porta de escuta do BitTorrent"
+
+msgid "Collecting data..."
+msgstr "Coletando dados..."
+
+msgid "Config file directory"
+msgstr "Diretório dos arquivos de configuração"
+
+msgid "Debug"
+msgstr "Depuração"
+
+msgid "Default download directory"
+msgstr "Diretório padrão de arquivos baixados"
+
+msgid "Disk cache"
+msgstr "Cache em Disco"
+
+msgid "Enable log"
+msgstr "Habilitar registros"
+
+msgid "Enabled"
+msgstr "Habilitado"
+
+msgid "Error"
+msgstr "Erro"
+
+msgid "Extra Settings"
+msgstr "Configurações Adicionais"
+
+msgid "Falloc"
+msgstr "Falloc"
+
+msgid "Files and Locations"
+msgstr "Arquivos e Locais"
+
+msgid "Follow torrent"
+msgstr "Seguir torrent"
+
+msgid "General Settings"
+msgstr "Configurações Gerais"
+
+msgid "Generate Randomly"
+msgstr "Gerar aleatoriamente"
+
+msgid "Info"
+msgstr "Informações"
+
+msgid "List of additional Bt tracker"
+msgstr "Lista de rastreadores BitTorrent adicionais"
+
+msgid "List of extra settings"
+msgstr "Lista de configurações adicionais"
+
+msgid "Log file is in the config file dir."
+msgstr ""
+"Arquivo de registro (log) está no diretório do arquivo de configuração."
+
+msgid "Log level"
+msgstr "Nível do registro"
+
+msgid "Max concurrent downloads"
+msgstr "Número máximo de transferencias simultâneas"
+
+msgid "Max connection per server"
+msgstr "Numero máximo de conexões por servidor"
+
+msgid "Max number of peers per torrent"
+msgstr "Numero máximo de parceiros por torrent"
+
+msgid "Max number of split"
+msgstr "Numero máximo de divisões"
+
+msgid "Min split size"
+msgstr "Tamanho mínimo da divisão"
+
+msgid "No Authentication"
+msgstr "Sem Autenticação"
+
+msgid "Notice"
+msgstr "Aviso"
+
+msgid "Off"
+msgstr "Desligado"
+
+msgid "Open WebUI-Aria2"
+msgstr "Abrir WebUI-Aria2"
+
+msgid "Open YAAW"
+msgstr "Abrir YAAW"
+
+msgid "Overall download limit"
+msgstr "Limite global para baixar"
+
+msgid "Overall speed limit enabled"
+msgstr "Limite da taxa de transferência global habilitado"
+
+msgid "Overall upload limit"
+msgstr "Limite global para subir"
+
+msgid "Per task download limit"
+msgstr "Limite por tarefa para baixar"
+
+msgid "Per task speed limit enabled"
+msgstr "Limite da taxa de transferência por tarefa habilitado"
+
+msgid "Per task upload limit"
+msgstr "Limite por tarefa para subir"
+
+msgid "Prealloc"
+msgstr "Pré-alocação"
+
+msgid "Preallocation"
+msgstr "Pré-alocação"
+
+msgid "Prefix of peer ID"
+msgstr "Prefixo da identificação do paceiro"
+
+msgid "RPC Token"
+msgstr ""
+"Chave eletrônica do <abbr title=\"Remote Procedure Call/Chamada de "
+"Procedimento Remoto\">RPC</abbr>"
+
+msgid "RPC authentication method"
+msgstr ""
+"Método de autenticação do <abbr title=\"Remote Procedure Call/Chamada de "
+"Procedimento Remoto\">RPC</abbr>"
+
+msgid "RPC password"
+msgstr ""
+"Senha do <abbr title=\"Remote Procedure Call/Chamada de Procedimento Remoto"
+"\">RPC</abbr>"
+
+msgid "RPC port"
+msgstr ""
+"Porta do <abbr title=\"Remote Procedure Call/Chamada de Procedimento Remoto"
+"\">RPC</abbr>"
+
+msgid "RPC username"
+msgstr ""
+"Nome do usuario do <abbr title=\"Remote Procedure Call/Chamada de "
+"Procedimento Remoto\">RPC</abbr>"
+
+msgid "Run daemon as user"
+msgstr "Executar serviço como usuário"
+
+msgid "Sec"
+msgstr "Segurança"
+
+msgid "Task Settings"
+msgstr "Configurações das tarefas"
+
+msgid "The Aria2 service is not running."
+msgstr "O serviço Aria2 está parado."
+
+msgid "The Aria2 service is running."
+msgstr "O serviço Aria2 está em execução."
+
+msgid "Token"
+msgstr "Chave eletrônica"
+
+msgid "Trunc"
+msgstr "Truncar"
+
+msgid "Use WebSocket"
+msgstr "Use WebSockets"
+
+msgid "User agent value"
+msgstr "Valor da identificação do agente do usuário"
+
+msgid "Username & Password"
+msgstr "Usuário & Senha"
+
+msgid "View Json-RPC URL"
+msgstr "Visualizar URL do JSON-RPC"
+
+msgid "Warn"
+msgstr "Atenção"
+
+msgid "in bytes, You can append K or M."
+msgstr "em bytes. Você pode sufixar com K (quilo) ou M (mega)."
+
+msgid "in bytes/sec, You can append K or M."
+msgstr "em bytes por segundo. Você pode sufixar com K (quilo) ou M (mega)."
diff --git a/applications/luci-app-bcp38/Makefile b/applications/luci-app-bcp38/Makefile
new file mode 100644 (file)
index 0000000..9ab5a67
--- /dev/null
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2010 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=BCP38 LuCI interface
+LUCI_DEPENDS:=+luci-mod-admin-full +bcp38
+
+PKG_MAINTAINER:=Toke Høiland-Jørgensen <toke@toke.dk>
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-bcp38/luasrc/controller/bcp38.lua b/applications/luci-app-bcp38/luasrc/controller/bcp38.lua
new file mode 100644 (file)
index 0000000..7ea2283
--- /dev/null
@@ -0,0 +1,7 @@
+module("luci.controller.bcp38", package.seeall)
+
+function index()
+       entry({"admin", "network", "firewall", "bcp38"},
+               cbi("bcp38"),
+               _("BCP38"), 50).dependent = false
+end
diff --git a/applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua b/applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua
new file mode 100644 (file)
index 0000000..632074a
--- /dev/null
@@ -0,0 +1,60 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2014 Toke Høiland-Jørgensen <toke@toke.dk>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+$Id$
+]]--
+
+local wa = require "luci.tools.webadmin"
+local net = require "luci.model.network".init()
+local ifaces = net:get_interfaces()
+
+m = Map("bcp38", translate("BCP38"),
+       translate("This function blocks packets with private address destinations " ..
+               "from going out onto the internet as per " ..
+               "<a href=\"http://tools.ietf.org/html/bcp38\">BCP 38</a>. " ..
+               "For IPv6, only source specific default routes are installed, so " ..
+               "no BCP38 firewall routes are needed."))
+
+s = m:section(TypedSection, "bcp38", translate("BCP38 config"))
+s.anonymous = true
+-- BASIC
+e = s:option(Flag, "enabled", translate("Enable"))
+e.rmempty = false
+
+a = s:option(Flag, "detect_upstream", translate("Auto-detect upstream IP"),
+                               translate("Attempt to automatically detect if the upstream IP " ..
+                                       "will be blocked by the configuration, and add an exception if it will. " ..
+                                       "If this does not work correctly, you can add exceptions manually below."))
+a.rmempty = false
+
+n = s:option(ListValue, "interface", translate("Interface name"), translate("Interface to apply the blocking to " ..
+                                                       "(should be the upstream WAN interface)."))
+for _, iface in ipairs(ifaces) do
+     if iface:is_up() then
+       n:value(iface:name())
+     end
+end
+n.rmempty = false
+
+ma = s:option(DynamicList, "match",
+       translate("Blocked IP ranges"))
+
+ma.datatype = "ip4addr"
+
+nm = s:option(DynamicList, "nomatch",
+       translate("Allowed IP ranges"), translate("Takes precedence over blocked ranges. "..
+                                                 "Use to whitelist your upstream network if you're behind a double NAT " ..
+                                                 "and the auto-detection doesn't work."))
+
+nm.datatype = "ip4addr"
+
+
+return m
diff --git a/applications/luci-app-bcp38/root/etc/uci-defaults/60_luci-bcp38 b/applications/luci-app-bcp38/root/etc/uci-defaults/60_luci-bcp38
new file mode 100755 (executable)
index 0000000..c204236
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+uci -q batch <<-EOF >/dev/null
+       delete ucitrack.@bcp38[-1]
+       add ucitrack bcp38
+        add_list ucitrack.@bcp38[0].affects=firewall
+       commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
diff --git a/applications/luci-app-clamav/Makefile b/applications/luci-app-clamav/Makefile
new file mode 100644 (file)
index 0000000..f91e692
--- /dev/null
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=ClamAV LuCI interface
+LUCI_DEPENDS:=+luci-mod-admin-full +clamav
+
+PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-clamav/luasrc/controller/clamav.lua b/applications/luci-app-clamav/luasrc/controller/clamav.lua
new file mode 100644 (file)
index 0000000..02f3bfc
--- /dev/null
@@ -0,0 +1,22 @@
+--[[
+
+LuCI ClamAV module
+
+Copyright (C) 2015, Itus Networks, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
+       Luka Perkov <luka.perkov@sartura.hr>
+
+]]--
+
+module("luci.controller.clamav", package.seeall)
+
+function index()
+       entry({"admin", "services", "clamav"}, cbi("clamav"), _("ClamAV"))
+end
diff --git a/applications/luci-app-clamav/luasrc/model/cbi/clamav.lua b/applications/luci-app-clamav/luasrc/model/cbi/clamav.lua
new file mode 100644 (file)
index 0000000..ff98139
--- /dev/null
@@ -0,0 +1,178 @@
+--[[
+
+LuCI ClamAV module
+
+Copyright (C) 2015, Itus Networks, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
+       Luka Perkov <luka.perkov@sartura.hr>
+
+]]--
+
+local fs = require "nixio.fs"
+local sys = require "luci.sys"
+require "ubus"
+
+m = Map("clamav", translate("ClamAV"))
+m.on_after_commit = function() luci.sys.call("/etc/init.d/clamav restart") end
+
+s = m:section(TypedSection, "clamav")
+s.anonymous = true
+s.addremove = false
+
+s:tab("tab_advanced", translate("Settings"))
+s:tab("tab_logs", translate("Log"))
+
+--------------- Settings --------------
+
+LogFileMaxSize = s:taboption("tab_advanced", Value, "LogFileMaxSize", translate("Max size of log file"))
+LogFileMaxSize:value("512K",  translate("512K"))
+LogFileMaxSize:value("1M",  translate("1M"))
+LogFileMaxSize:value("2M",  translate("2M"))
+LogFileMaxSize.default = "1M"
+
+LogTime = s:taboption("tab_advanced", ListValue, "LogTime", translate("Log time with each message"))
+LogTime:value("no",  translate("No"))
+LogTime:value("yes",  translate("Yes"))
+LogTime.default = "no"
+
+LogVerbose = s:taboption("tab_advanced", ListValue, "LogVerbose", translate("Enable verbose logging"))
+LogVerbose:value("no",  translate("No"))
+LogVerbose:value("yes",  translate("Yes"))
+LogVerbose.default = "no"
+
+ExtendedDetectionInfo = s:taboption("tab_advanced", ListValue, "ExtendedDetectionInfo", translate("Log additional infection info"))
+ExtendedDetectionInfo:value("no",  translate("No"))
+ExtendedDetectionInfo:value("yes",  translate("Yes"))
+ExtendedDetectionInfo.default = "no"
+
+dummy3 = s:taboption("tab_advanced", DummyValue, "")
+dummy4 = s:taboption("tab_advanced", DummyValue, "")
+
+MaxDirectoryRecursion = s:taboption("tab_advanced", Value, "MaxDirectoryRecursion", translate("Max directory scan depth"))
+MaxDirectoryRecursion:value("15",  translate("15"))
+MaxDirectoryRecursion:value("20",  translate("20"))
+MaxDirectoryRecursion.default = "15"
+
+FollowDirectorySymlink = s:taboption("tab_advanced", ListValue, "FollowDirectorySymlink", translate("Follow directory symlinks"))
+FollowDirectorySymlink:value("no",  translate("No"))
+FollowDirectorySymlink:value("yes",  translate("Yes"))
+FollowDirectorySymlink.default = "no"
+
+FollowFileSymlinks = s:taboption("tab_advanced", ListValue, "FollowFileSymlinks", translate("Follow file symlinks"))
+FollowFileSymlinks:value("no",  translate("No"))
+FollowFileSymlinks:value("yes",  translate("Yes"))
+FollowFileSymlinks.default = "no"
+
+DetectPUA = s:taboption("tab_advanced", ListValue, "DetectPUA", translate("Detect possibly unwanted apps"))
+DetectPUA:value("no",  translate("No"))
+DetectPUA:value("yes",  translate("Yes"))
+DetectPUA.default = "no"
+
+ScanPE = s:taboption("tab_advanced", ListValue, "ScanPE", translate("Scan portable executables"))
+ScanPE:value("no",  translate("No"))
+ScanPE:value("yes",  translate("Yes"))
+ScanPE.default = "yes"
+
+ScanELF = s:taboption("tab_advanced", ListValue, "ScanELF", translate("Scan ELF files"))
+ScanELF:value("no",  translate("No"))
+ScanELF:value("yes",  translate("Yes"))
+ScanELF.default = "yes"
+
+DetectBrokenExecutables = s:taboption("tab_advanced", ListValue, "DetectBrokenExecutables", translate("Detect broken executables"))
+DetectBrokenExecutables:value("no",  translate("No"))
+DetectBrokenExecutables:value("yes",  translate("Yes"))
+DetectBrokenExecutables.default = "no"
+
+ScanOLE2 = s:taboption("tab_advanced", ListValue, "ScanOLE2", translate("Scan MS Office and .msi files"))
+ScanOLE2:value("no",  translate("No"))
+ScanOLE2:value("yes",  translate("Yes"))
+ScanOLE2.default = "yes"
+
+ScanPDF = s:taboption("tab_advanced", ListValue, "ScanPDF", translate("Scan pdf files"))
+ScanPDF:value("no",  translate("No"))
+ScanPDF:value("yes",  translate("Yes"))
+ScanPDF.default = "yes"
+
+ScanSWF = s:taboption("tab_advanced", ListValue, "ScanSWF", translate("Scan swf files"))
+ScanSWF:value("no",  translate("No"))
+ScanSWF:value("yes",  translate("Yes"))
+ScanSWF.default = "yes"
+
+ScanMail = s:taboption("tab_advanced", ListValue, "ScanMail", translate("Scan emails"))
+ScanMail:value("no",  translate("No"))
+ScanMail:value("yes",  translate("Yes"))
+ScanMail.default = "yes"
+
+ScanPartialMessages = s:taboption("tab_advanced", ListValue, "ScanPartialMessages", translate("Scan RFC1341 messages split over many emails"))
+ScanPartialMessages:value("no",  translate("No"))
+ScanPartialMessages:value("yes",  translate("Yes"))
+ScanPartialMessages.default = "no"
+
+ScanArchive = s:taboption("tab_advanced", ListValue, "ScanArchive", translate("Scan archives"))
+ScanArchive:value("no",  translate("No"))
+ScanArchive:value("yes",  translate("Yes"))
+ScanArchive.default = "yes"
+
+ArchiveBlockEncrypted = s:taboption("tab_advanced", ListValue, "ArchiveBlockEncrypted", translate("Block encrypted archives"))
+ArchiveBlockEncrypted:value("no",  translate("No"))
+ArchiveBlockEncrypted:value("yes",  translate("Yes"))
+ArchiveBlockEncrypted.default = "no"
+
+dummy5 = s:taboption("tab_advanced", DummyValue, "")
+dummy6 = s:taboption("tab_advanced", DummyValue, "")
+
+StreamMinPort = s:taboption("tab_advanced", Value, "StreamMinPort", translate("Port range, lowest port"))
+StreamMinPort.datatype = "portrange"
+StreamMinPort:value("1024",translate("1024"))
+StreamMinPort.default = "1024"
+
+StreamMaxPort = s:taboption("tab_advanced", Value, "StreamMaxPort", translate("Port range, highest port"))
+StreamMaxPort.datatype = "portrange"
+StreamMaxPort:value("2048",translate("2048"))
+StreamMaxPort.default = "2048"
+
+MaxThreads = s:taboption("tab_advanced", Value, "MaxThreads", translate("Max number of threads"))
+MaxThreads.datatype = "and(uinteger,min(1))"
+MaxThreads:value("10",translate("10"))
+MaxThreads:value("20",translate("20"))
+MaxThreads.default = "10"
+
+SelfCheck = s:taboption("tab_advanced", Value, "SelfCheck", translate("Database check every N sec"))
+SelfCheck.datatype = "and(uinteger,min(1))"
+SelfCheck:value("600",translate("600"))
+SelfCheck.default = "600"
+
+MaxFileSize = s:taboption("tab_advanced", Value, "MaxFileSize", translate("Max size of scanned file"))
+MaxFileSize.datatype = "string"
+MaxFileSize:value("150M",translate("150M"))
+MaxFileSize:value("50M",translate("50M"))
+MaxFileSize.default = "150M"
+
+------------------ Log --------------------
+
+clamav_logfile = s:taboption("tab_logs", TextValue, "lines", "")
+clamav_logfile.wrap = "off"
+clamav_logfile.rows = 25
+clamav_logfile.rmempty = true
+
+function clamav_logfile.cfgvalue()
+       local uci = require "luci.model.uci".cursor_state()
+       local file = "/tmp/clamd.log"
+       if file then
+               return fs.readfile(file) or ""
+       else
+               return ""
+       end
+end
+
+function clamav_logfile.write()
+end
+
+return m
diff --git a/applications/luci-app-clamav/po/ja/clamav.po b/applications/luci-app-clamav/po/ja/clamav.po
new file mode 100644 (file)
index 0000000..c54c7b1
--- /dev/null
@@ -0,0 +1,130 @@
+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.12\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid "10"
+msgstr "10"
+
+msgid "1024"
+msgstr "1024"
+
+msgid "15"
+msgstr "15"
+
+msgid "150M"
+msgstr "150M"
+
+msgid "1M"
+msgstr "1M"
+
+msgid "20"
+msgstr "20"
+
+msgid "2048"
+msgstr "2048"
+
+msgid "2M"
+msgstr "2M"
+
+msgid "50M"
+msgstr "50M"
+
+msgid "512K"
+msgstr "512K"
+
+msgid "600"
+msgstr "600"
+
+msgid "Block encrypted archives"
+msgstr "暗号化されたアーカイブのブロック"
+
+msgid "ClamAV"
+msgstr "ClamAV"
+
+msgid "Database check every N sec"
+msgstr "データベース チェック間隔(秒)"
+
+msgid "Detect broken executables"
+msgstr "破損した実行ファイルの検出"
+
+msgid "Detect possibly unwanted apps"
+msgstr "不必要と思われるアプリケーションの検出"
+
+msgid "Enable verbose logging"
+msgstr "詳細なログの有効化"
+
+msgid "Follow directory symlinks"
+msgstr "ディレクトリ シンボリックリンクに従う"
+
+msgid "Follow file symlinks"
+msgstr "ファイル シンボリックリンクに従う"
+
+msgid "Log"
+msgstr "ログ"
+
+msgid "Log additional infection info"
+msgstr "追加の感染情報ログ"
+
+msgid "Log time with each message"
+msgstr "ログ メッセージ毎に時刻を付加"
+
+msgid "Max directory scan depth"
+msgstr "ディレクトリ スキャンの最大深度"
+
+msgid "Max number of threads"
+msgstr "スレッドの最大数"
+
+msgid "Max size of log file"
+msgstr "ログの最大サイズ"
+
+msgid "Max size of scanned file"
+msgstr ""
+
+msgid "No"
+msgstr "いいえ"
+
+msgid "Port range, highest port"
+msgstr "ポート範囲(上限)"
+
+msgid "Port range, lowest port"
+msgstr "ポート範囲(下限)"
+
+msgid "Scan ELF files"
+msgstr "ELF ファイルのスキャン"
+
+msgid "Scan MS Office and .msi files"
+msgstr "MS Office と .msi ファイルのスキャン"
+
+msgid "Scan RFC1341 messages split over many emails"
+msgstr ""
+
+msgid "Scan archives"
+msgstr "アーカイブのスキャン"
+
+msgid "Scan emails"
+msgstr "E-mailのスキャン"
+
+msgid "Scan pdf files"
+msgstr "PDF ファイルのスキャン"
+
+msgid "Scan portable executables"
+msgstr "ポータブル 実行ファイルのスキャン"
+
+msgid "Scan swf files"
+msgstr "SWF ファイルのスキャン"
+
+msgid "Settings"
+msgstr "設定"
+
+msgid "Yes"
+msgstr "はい"
diff --git a/applications/luci-app-clamav/po/templates/clamav.pot b/applications/luci-app-clamav/po/templates/clamav.pot
new file mode 100644 (file)
index 0000000..768f730
--- /dev/null
@@ -0,0 +1,119 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "10"
+msgstr ""
+
+msgid "1024"
+msgstr ""
+
+msgid "15"
+msgstr ""
+
+msgid "150M"
+msgstr ""
+
+msgid "1M"
+msgstr ""
+
+msgid "20"
+msgstr ""
+
+msgid "2048"
+msgstr ""
+
+msgid "2M"
+msgstr ""
+
+msgid "50M"
+msgstr ""
+
+msgid "512K"
+msgstr ""
+
+msgid "600"
+msgstr ""
+
+msgid "Block encrypted archives"
+msgstr ""
+
+msgid "ClamAV"
+msgstr ""
+
+msgid "Database check every N sec"
+msgstr ""
+
+msgid "Detect broken executables"
+msgstr ""
+
+msgid "Detect possibly unwanted apps"
+msgstr ""
+
+msgid "Enable verbose logging"
+msgstr ""
+
+msgid "Follow directory symlinks"
+msgstr ""
+
+msgid "Follow file symlinks"
+msgstr ""
+
+msgid "Log"
+msgstr ""
+
+msgid "Log additional infection info"
+msgstr ""
+
+msgid "Log time with each message"
+msgstr ""
+
+msgid "Max directory scan depth"
+msgstr ""
+
+msgid "Max number of threads"
+msgstr ""
+
+msgid "Max size of log file"
+msgstr ""
+
+msgid "Max size of scanned file"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid "Port range, highest port"
+msgstr ""
+
+msgid "Port range, lowest port"
+msgstr ""
+
+msgid "Scan ELF files"
+msgstr ""
+
+msgid "Scan MS Office and .msi files"
+msgstr ""
+
+msgid "Scan RFC1341 messages split over many emails"
+msgstr ""
+
+msgid "Scan archives"
+msgstr ""
+
+msgid "Scan emails"
+msgstr ""
+
+msgid "Scan pdf files"
+msgstr ""
+
+msgid "Scan portable executables"
+msgstr ""
+
+msgid "Scan swf files"
+msgstr ""
+
+msgid "Settings"
+msgstr ""
+
+msgid "Yes"
+msgstr ""
diff --git a/applications/luci-app-clamav/po/zh-cn/clamav.po b/applications/luci-app-clamav/po/zh-cn/clamav.po
new file mode 100644 (file)
index 0000000..6a2c5df
--- /dev/null
@@ -0,0 +1,131 @@
+# liushuyu <liushuyu_011@163.com>, 2017.
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2017-04-15 21:37-0600\n"
+"Language-Team: Chinese <kde-i18n-doc@kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.1\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: zh_CN\n"
+
+msgid "10"
+msgstr "10"
+
+msgid "1024"
+msgstr "1024"
+
+msgid "15"
+msgstr "15"
+
+msgid "150M"
+msgstr "150M"
+
+msgid "1M"
+msgstr "1M"
+
+msgid "20"
+msgstr "20"
+
+msgid "2048"
+msgstr "2048"
+
+msgid "2M"
+msgstr "2M"
+
+msgid "50M"
+msgstr "50M"
+
+msgid "512K"
+msgstr "512K"
+
+msgid "600"
+msgstr "600"
+
+msgid "Block encrypted archives"
+msgstr "拦截加密的归档文件"
+
+msgid "ClamAV"
+msgstr "ClamAV"
+
+msgid "Database check every N sec"
+msgstr "每 N 秒检测一次数据库"
+
+msgid "Detect broken executables"
+msgstr "检测破损的可执行文件"
+
+msgid "Detect possibly unwanted apps"
+msgstr "检测不受欢迎的软件"
+
+msgid "Enable verbose logging"
+msgstr "启用详细日志输出"
+
+msgid "Follow directory symlinks"
+msgstr "跟随目录符号链接"
+
+msgid "Follow file symlinks"
+msgstr "跟随文件符号链接"
+
+msgid "Log"
+msgstr "日志"
+
+msgid "Log additional infection info"
+msgstr "记录详细的感染信息"
+
+msgid "Log time with each message"
+msgstr "记录消息时间戳"
+
+msgid "Max directory scan depth"
+msgstr "最大扫描深度"
+
+msgid "Max number of threads"
+msgstr "最大线程数"
+
+msgid "Max size of log file"
+msgstr "最大日志大小"
+
+msgid "Max size of scanned file"
+msgstr "最大可扫描的文件大小"
+
+msgid "No"
+msgstr "否"
+
+msgid "Port range, highest port"
+msgstr "端口范围,最大端口"
+
+msgid "Port range, lowest port"
+msgstr "端口范围,最小端口"
+
+msgid "Scan ELF files"
+msgstr "扫描 ELF 文件"
+
+msgid "Scan MS Office and .msi files"
+msgstr "扫描 MS Office 文档和 .msi 安装包文件"
+
+msgid "Scan RFC1341 messages split over many emails"
+msgstr "扫描符合 RFC1341 邮件分离规范的邮件"
+
+msgid "Scan archives"
+msgstr "扫描归档文件"
+
+msgid "Scan emails"
+msgstr "扫描电子邮件"
+
+msgid "Scan pdf files"
+msgstr "扫描 PDF 文件"
+
+msgid "Scan portable executables"
+msgstr "扫描 PE (Windows) 可执行文件"
+
+msgid "Scan swf files"
+msgstr "扫描 SWF 文件"
+
+msgid "Settings"
+msgstr "设置"
+
+msgid "Yes"
+msgstr "是"
index f6bee73..4d04bff 100644 (file)
@@ -1,15 +1,16 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-03-15 22:02+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2017-02-20 17:39-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
 "Language-Team: none\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"POT-Creation-Date: \n"
 
 msgid "A short textual description of the configured command"
 msgstr "Uma pequena descrição textual do comando configurado"
@@ -40,10 +41,10 @@ msgid "Command"
 msgstr "Comando"
 
 msgid "Command executed successfully."
-msgstr ""
+msgstr "O comando executou com sucesso."
 
 msgid "Command exited with status code"
-msgstr ""
+msgstr "O comando encerrou com um estado de erro"
 
 msgid "Command failed"
 msgstr "O comando falhou"
@@ -76,7 +77,7 @@ msgid "Download"
 msgstr "Baixar"
 
 msgid "Download execution result"
-msgstr ""
+msgstr "Baixar os resultados da execução"
 
 msgid "Failed to execute command!"
 msgstr "Falha ao executar comando!"
@@ -88,7 +89,7 @@ msgid "Loading"
 msgstr "Carregando"
 
 msgid "Or display result"
-msgstr ""
+msgstr "Ou mostre o resultado"
 
 msgid "Public access"
 msgstr "Acesso público"
@@ -97,10 +98,10 @@ msgid "Run"
 msgstr "Executar"
 
 msgid "Standard Error"
-msgstr ""
+msgstr "Saída de Erro"
 
 msgid "Standard Output"
-msgstr ""
+msgstr "Saída Padrão"
 
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
diff --git a/applications/luci-app-cshark/Makefile b/applications/luci-app-cshark/Makefile
new file mode 100644 (file)
index 0000000..40b0e9f
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2017 Dan Luedtke <mail@danrl.com>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Cloudshark capture tool Web UI
+LUCI_DEPENDS:=+cshark
+LUCI_PKGARCH:=all
+
+PKG_MAINTAINER:=Luka Perkov <luka@openwrt.org>
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-cshark/luasrc/controller/cshark.lua b/applications/luci-app-cshark/luasrc/controller/cshark.lua
new file mode 100644 (file)
index 0000000..4d9bbba
--- /dev/null
@@ -0,0 +1,125 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright (C) 2014, QA Cafe, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+]]--
+
+module("luci.controller.cshark", package.seeall)
+
+function index()
+               page = node("admin", "network", "cloudshark")
+               page.target = cbi("admin_network/cshark")
+               page.title = _("CloudShark")
+               page.order = 70
+
+               page = entry({"admin", "network", "cshark_iface_dump_start"}, call("cshark_iface_dump_start"), nil)
+               page.leaf = true
+
+               page = entry({"admin", "network", "cshark_iface_dump_stop"}, call("cshark_iface_dump_stop"), nil)
+               page.leaf = true
+
+               page = entry({"admin", "network", "cshark_check_status"}, call("cshark_check_status"), nil)
+               page.leaf = true
+
+               page = entry({"admin", "network", "cshark_link_list_get"}, call("cshark_link_list_get"), nil)
+               page.leaf = true
+
+               page = entry({"admin", "network", "cshark_link_list_clear"}, call("cshark_link_list_clear"), nil)
+               page.leaf = true
+end
+
+function cshark_iface_dump_start(ifname, value, flag, filter)
+       if ifname == nil or ifname == '' then
+               ifname = 'any'
+       end
+       if tonumber(value) == nil
+       then
+               value = '0'
+       end
+       if filter == nil or filter == '' then
+               filter = ''
+       end
+
+       if flag == nil or flag == '' then
+               filter = 'T'
+       end
+
+       luci.http.prepare_content("text/plain")
+
+       local res = os.execute("(/sbin/cshark -i " .. ifname .. " -" .. flag .. " " .. value .. " -p /tmp/cshark-luci.pid " .. filter .. " > /tmp/cshark-luci.out 2>&1) &")
+       luci.http.write(tostring(res))
+end
+
+function cshark_iface_dump_stop()
+       luci.http.prepare_content("text/plain")
+
+       local f = io.open("/tmp/cshark-luci.pid", "rb")
+       local pid = f:read("*all")
+       io.close(f)
+
+       local res = os.execute("kill -TERM " .. pid)
+       luci.http.write(tostring(res))
+end
+
+function cshark_check_status()
+
+       local msg = "";
+       local status;
+       local f = io.open("/tmp/cshark-luci.pid","r")
+       if f ~= nil then
+               status = 1;
+               io.close(f)
+       else
+               status = 0;
+       end
+
+       f = io.open("/tmp/cshark-luci.out","r")
+       if f ~= nil then
+               msg = f:read("*all")
+               io.close(f)
+               if msg ~= '' then
+                       os.remove('/tmp/cshark-luci.out')
+               end
+       end
+
+       luci.http.prepare_content("application/json")
+
+       local res = {}
+       res["status"] = status;
+       res["msg"] = msg;
+
+       luci.http.write_json(res)
+end
+
+function cshark_link_list_get()
+       local uci = require("uci").cursor()
+
+       luci.http.prepare_content("application/json")
+
+       luci.http.write("[")
+
+       local t = uci:get("cshark", "cshark", "entry")
+  if (t ~= nil) then
+         for i = #t, 1, -1 do
+                 luci.http.write("[\"" .. t[i] .. "\"],")
+         end
+  end
+
+       luci.http.write("[]]")
+end
+
+function cshark_link_list_clear()
+       local uci = require("uci").cursor()
+
+       uci:delete("cshark", "cshark", "entry")
+       uci:commit("cshark");
+
+       luci.http.status(200, "OK")
+end
diff --git a/applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua b/applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua
new file mode 100644 (file)
index 0000000..8db9559
--- /dev/null
@@ -0,0 +1,30 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright (C) 2014, QA Cafe, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+$Id$
+]]--
+
+local fs = require "nixio.fs"
+
+m = Map("cshark", translate("CloudShark"))
+
+if fs.access("/etc/config/cshark") then
+       m:section(SimpleSection).template = "cshark"
+
+       s = m:section(TypedSection, "cshark", translate("Options"))
+       s.anonymous = true
+       s.addremove = false
+
+       s:option(Value, "url", translate("CloudShark URL"))
+       s:option(Value, "token", translate("CloudShark API token"))
+end
+
+return m
diff --git a/applications/luci-app-cshark/luasrc/view/cshark.htm b/applications/luci-app-cshark/luasrc/view/cshark.htm
new file mode 100644 (file)
index 0000000..bc67f80
--- /dev/null
@@ -0,0 +1,291 @@
+<%#
+LuCI - Lua Configuration Interface
+
+Copyright (C) 2014, QA Cafe, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+$Id$
+
+-%>
+
+<fieldset class="cbi-section">
+       <legend><%:Start network capture%></legend>
+       <div class="cbi-section-node">
+               <table class="cbi-section-table">
+                       <tr>
+                               <th><%:Interface%></th>
+                               <th colspan='2'><%:seconds, packets, bytes%></th>
+                               <th><%:Filter%></th>
+                               <th><%:Actions%></th>
+                       </tr>
+                       <tr>
+                               <td>
+                                       <select title="<%:Interface%>" style="width:auto" id="s_interfaces">
+                                       <%
+                                               local nixio = require "nixio"
+                                               for k, v in ipairs(nixio.getifaddrs()) do
+                                                       if v.family == "packet" then
+                                                       %>
+                                                               <option value="<%=v.name%>"><%=v.name%> </option>
+                                                       <%
+                                                       end
+                                               end
+                                       %>
+                                               <option value="any"><%:any%></option>
+                                       </select>
+                               </td>
+                               <td colspan='2'>
+                                       <input id="tx_value" type="text" value="0" />
+                                       <select title="<%:timeout, bytes, seconds%>" id="s_value_type" style="width:auto">
+                                               <option value="T"><%:seconds%></option>
+                                               <option value="P"><%:packets%></option>
+                                               <option value="S"><%:bytes%></option>
+                                       </select>
+                               </td>
+                               <td>
+                                       <input style="margin: 5px 0" type="text" title="<%:Filter%>" placeholder="filter" id="i_filter" />
+                               </td>
+                               <td>
+                                       <input type="button" id="bt_action" data-action="start" value="<%:Start capture%>" class="cbi-button" />
+                               </td>
+                       </tr>
+               </table>
+       </div>
+</fieldset>
+
+<fieldset class="cbi-section">
+       <span id="cshark-rc-output"></span>
+</fieldset>
+
+<hr/>
+
+<fieldset class="cbi-section">
+       <legend><%:Capture links%></legend>
+       <div class="cbi-section-node">
+               <table id="t_link_list" class="cbi-section-table">
+                       <tr class="cbi-section-table-titles">
+                               <th class="cbi-section-table-cell"><%:Capture URL%></th>
+                               <th class="cbi-section-table-cell"><%:Capture time%></th>
+                       </tr>
+               </table>
+       </div>
+</fieldset>
+
+<fieldset class="cbi-section">
+  <a href="https://support.cloudshark.org/openwrt/openwrt-cloudshark.html" target="_blank">Visit support.cloudshark.org for help.</a>
+</fieldset>
+
+<hr/>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+
+       var capture_running = 0;
+       var pid_file = 0;
+       var bt_action = document.getElementById('bt_action');
+       var a_clear_links = document.getElementById('a_clear_links');
+       var output = document.getElementById('cshark-rc-output');
+       var loader = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" width="16" height="16" style="vertical-align:middle" /> ';
+       var msg = { 'start' : '<%:Waiting for capture to complete...%>', 'stop' : '<%:Waiting for upload to complete...%>' };
+       var status_msg = msg['start'];
+
+       function get_date(timestamp)
+       {
+               function pad_str(str)
+               {
+                       return (str < 10) ? "0" + str : str;
+               }
+
+               var current_date = new Date(timestamp * 1000);
+               return current_date.getFullYear() + "-" +
+                               pad_str(current_date.getMonth() + 1) + "-" +
+                               pad_str(current_date.getDate()) + " " +
+                               pad_str(current_date.getHours()) + ":" +
+                               pad_str(current_date.getMinutes()) + ":" +
+                               pad_str(current_date.getSeconds());
+       }
+
+       bt_action.onclick = function()
+       {
+               var action = this.getAttribute("data-action");
+               var csxhr = new XHR();
+
+               if (action == "stop")
+               {
+                       update_status(action);
+
+                       bt_action.disabled = true;
+
+                       csxhr.get('<%=luci.dispatcher.build_url("admin", "network")%>/cshark_iface_dump_stop', null,
+                       function(x)
+                       {
+                               if (!x || x.responseText.trim() != "0")
+                               {
+                                       update_status("failed", "Invalid response on stop.");
+                               }
+                       });
+
+               }
+               else if (action == "start")
+               {
+
+                       var s_interfaces = document.getElementById('s_interfaces');
+                       var s_value_type = document.getElementById('s_value_type');
+                       var i_filter = document.getElementById('i_filter');
+
+                       var if_n = s_interfaces.selectedIndex;
+                       var t_n = s_value_type.selectedIndex;
+                       var ifname = s_interfaces.options[if_n].value.trim();
+                       var filter_val = i_filter.value.trim();
+                       var tx_val = document.getElementById('tx_value').value.trim();
+                       var type_val = s_value_type.options[t_n].value.trim();
+
+                       if (type_val != 'P' && type_val != 'T' && type_val != 'S') type_val = 'T';
+
+                       if (!ifname || !type_val) return;
+
+                       if (isNaN(tx_val)) return alert("<%:value for [seconds, packets, bytes] must be Integer%>");
+
+                       update_status(action);
+
+                       csxhr.get('<%=luci.dispatcher.build_url("admin", "network")%>/cshark_iface_dump_start/' + ifname + '/' + tx_val + '/' + type_val + '/'+ filter_val, null,
+                       function(x)
+                       {
+                               if (!x)
+                                       update_status("failed", "Invalid response on start.");
+                               else
+                                       update_status("running");
+                       });
+               }
+       }
+
+       function update_status(status, message)
+       {
+               switch (status)
+               {
+                       case 'start':
+                       case 'stop':
+                               status_msg = msg[status];
+                               output.innerHTML = loader + status_msg;
+                       break
+
+                       case 'running':
+                               if (capture_running) break;;
+
+                               output.innerHTML = loader + status_msg;
+
+                               bt_action.value = '<%:Stop capture%>';
+                               bt_action.setAttribute('data-action', 'stop');
+                               capture_running = 1;
+                       break;
+
+                       case 'completed':
+                       case 'failed':
+                               if (!capture_running) break;
+
+                               if (status == "completed")
+                               {
+                                       link_list_update();
+                               }
+
+                               output.innerHTML = "<pre>" + message + "</pre>";
+                               bt_action.value = '<%:Start capture%>';
+                               bt_action.setAttribute('data-action', 'start');
+                               bt_action.disabled = false;
+                               capture_running = 0;
+                       break;
+               }
+       }
+
+
+       function check_status()
+       {
+
+               XHR.poll(3, '<%=luci.dispatcher.build_url("admin", "network")%>/cshark_check_status', null,
+               function(x, data)
+               {
+                       if (!x)
+                       {
+                               if (capture_running)
+                                       update_status("failed", "Invalid response when fetching status.");
+
+                               return;
+                       }
+                       console.log(data)
+
+                       update_status( (data.status == 1) && "running" || "completed", data.msg);
+               })
+       }
+
+       function link_list_clear()
+       {
+               var csxhr_del = new XHR();
+               csxhr_del.get('<%=luci.dispatcher.build_url("admin", "network")%>/cshark_link_list_clear', null,
+               function(x)
+               {
+                       if (!x)
+                               return false;
+
+                       link_list_update();
+               });
+       }
+
+
+       function link_list_update()
+       {
+               var t_link = document.getElementById("t_link_list");
+               if (!t_link) return;
+
+               var row_count = t_link.rows.length;
+               while(--row_count) t_link.deleteRow(row_count);
+
+               var cell = t_link.insertRow(-1).insertCell(0);
+               cell.colSpan = 2;
+               cell.innerHTML = loader;
+
+               var csxhr_link = new XHR();
+               csxhr_link.get('<%=luci.dispatcher.build_url("admin", "network")%>/cshark_link_list_get', null,
+               function(x, entries)
+               {
+                       var row = t_link.deleteRow(1);
+
+                       if (!x) return;
+
+                       if (!entries || !entries.length)
+                       {
+                               var cell = t_link.insertRow(-1).insertCell(0);
+                               cell.colSpan = 2;
+                               cell.innerHTML = '<em><br />There are no captures available yet.</em>';
+
+                               return;
+                       }
+
+                       for (var i = 0, len = entries.length; i < len ; i++)
+                       {
+                               var entry = entries[i][0];
+                               if (!entry) continue;
+
+                               var data = entry.split(",");
+                               var url = data[0];
+                               var timestamp = data[1];
+
+                               var row = t_link.insertRow(-1);
+                               row.insertCell(0).innerHTML = '<a href="'+url+'" target="_blank">'+url+'</a>';
+                               row.insertCell(1).innerHTML = get_date(timestamp);
+                       }
+
+                       var cell = t_link.insertRow(-1).insertCell(0);
+                       cell.colSpan = 2;
+                       cell.style.textAlign="center";
+                       cell.innerHTML = '<input type="button" onclick="link_list_clear()" class="cbi-button" value ="<%:Clear list%>" />';
+               })
+       }
+
+       check_status();
+       link_list_update();
+//]]></script>
index 88c905a..69f9880 100644 (file)
@@ -2,7 +2,7 @@
 # Copyright 2008 Steven Barth <steven@midlink.org>
 # Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
 # Copyright 2013 Manuel Munz <freifunk at somakoma dot de>
-# Copyright 2014-2016 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+# Copyright 2014-2017 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
 #
 # This is free software, licensed under the Apache License, Version 2.0
 
@@ -16,7 +16,7 @@ PKG_VERSION:=2.4.8
 
 # 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>
index 63bb8bf..1dfa625 100755 (executable)
@@ -1,7 +1,7 @@
 -- Copyright 2008 Steven Barth <steven@midlink.org>
 -- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
 -- Copyright 2013 Manuel Munz <freifunk at somakoma dot de>
--- Copyright 2014-2016 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+-- Copyright 2014-2017 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
 -- Licensed to the public under the Apache License 2.0.
 
 module("luci.controller.ddns", package.seeall)
@@ -24,7 +24,7 @@ local srv_ver_min = "2.7.6"                   -- minimum version of service required
 local srv_ver_cmd = luci_helper .. [[ -V | awk {'print $2'}]]
 local app_name    = "luci-app-ddns"
 local app_title   = "Dynamic DNS"
-local app_version = "2.4.8-1"
+local app_version = "2.4.8-2"
 
 function index()
        local nxfs      = require "nixio.fs"            -- global definitions not available
@@ -180,12 +180,10 @@ local function _get_status()
                end
 
                -- get/set monitored interface and IP version
-               local iface     = s["interface"] or "_nonet_"
+               local iface     = s["interface"] or "wan"
                local use_ipv6  = tonumber(s["use_ipv6"]) or 0
-               if iface ~= "_nonet_" then
-                       local ipv = (use_ipv6 == 1) and "IPv6" or "IPv4"
-                       iface = ipv .. " / " .. iface
-               end
+               local ipv = (use_ipv6 == 1) and "IPv6" or "IPv4"
+               iface = ipv .. " / " .. iface
 
                -- try to get registered IP
                local lookup_host = s["lookup_host"] or "_nolookup_"
index 4970846..ab22837 100644 (file)
@@ -2,15 +2,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: luci-app-ddns 2.4.0-1\n"
 "POT-Creation-Date: 2016-01-30 11:07+0100\n"
-"PO-Revision-Date: 2016-07-01 22:40-0300\n"
-"Last-Translator: Matheus Dal Mago <matheusdalmago10@gmail.com>\n"
+"PO-Revision-Date: 2017-02-20 17:41-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
 "Language-Team: \n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Poedit 1.8.8\n"
+"X-Generator: Poedit 1.8.11\n"
 
 msgid "&"
 msgstr "&"
@@ -228,7 +228,7 @@ msgid "Error Retry Interval"
 msgstr "Intervalo de tentativas em Erro"
 
 msgid "Event Network"
-msgstr ""
+msgstr "Rede de Evento"
 
 msgid "File"
 msgstr "Arquivo"
@@ -438,16 +438,16 @@ msgid "No certificates found"
 msgstr "Nenhum certificado encontrado"
 
 msgid "No data"
-msgstr ""
+msgstr "Sem dados"
 
 msgid "No logging"
-msgstr ""
+msgstr "Sem registros"
 
 msgid "Non-public and by default blocked IP's"
 msgstr "IPs não públicos e bloqueados por padrão"
 
 msgid "Notice"
-msgstr ""
+msgstr "Aviso"
 
 msgid "Number of last lines stored in log files"
 msgstr "Número das últimas linhas salvas nos arquivos de log"
@@ -475,7 +475,7 @@ msgstr ""
 "Em Erro, o script irá para a execução após um número definido de tentativas"
 
 msgid "OpenWrt Wiki"
-msgstr ""
+msgstr "Wiki do OpenWRT"
 
 msgid "Optional Encoded Parameter"
 msgstr "Parâmetro Opcionalmente Codificado"
@@ -490,7 +490,7 @@ msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)"
 msgstr "Opcional: Substitui [PARAMOPT] na URL de atualização"
 
 msgid "Overview"
-msgstr ""
+msgstr "Visão Geral"
 
 msgid "PROXY-Server"
 msgstr "servidor PROXY"
@@ -575,7 +575,7 @@ msgid "There is no service configured."
 msgstr "Não há serviço configurado"
 
 msgid "Timer Settings"
-msgstr ""
+msgstr "Configurações do Controlador de Tempo"
 
 msgid "To change global settings click here"
 msgstr "Clique aqui para mudar configurações globais"
index d16ef4a..83512db 100644 (file)
@@ -9,9 +9,6 @@ include $(TOPDIR)/rules.mk
 LUCI_TITLE:=LuCI Support for DynaPoint
 LUCI_DEPENDS:=+dynapoint
 
-PKG_NAME:=luci-app-dynapoint
-PKG_VERSION:=1.0
-PKG_RELEASE:=1
 PKG_LICENSE:=GPL-3.0+
 PKG_MAINTAINER:=Tobias Ilte <tobias.ilte@campus.tu-berlin.de>
 include ../../luci.mk
diff --git a/applications/luci-app-dynapoint/po/pt-br/dynapoint.po b/applications/luci-app-dynapoint/po/pt-br/dynapoint.po
new file mode 100644 (file)
index 0000000..59b0262
--- /dev/null
@@ -0,0 +1,107 @@
+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 "Activate this wVIF if status is:"
+msgstr "Aivar este wVIF se o estado for:"
+
+msgid "Append hostname to ssid"
+msgstr "Sufixar o nome do equipamento ao SSID"
+
+msgid "Append the router's hostname to the SSID when connectivity check fails"
+msgstr ""
+"Sufixar o nome do roteador ao SSID quando a verificação da conectividade "
+"falhar"
+
+msgid "Check Internet connectivity via HTTP header download"
+msgstr "Cerifique a conectividade com a internet baixando o cabeçalho HTTP "
+
+msgid "Configuration"
+msgstr "Configuração"
+
+msgid "Curl is currently not installed."
+msgstr "O cURL não está instalado."
+
+msgid "Device"
+msgstr "Dispositivo"
+
+msgid "Disabled"
+msgstr "Desabilitado"
+
+msgid "DynaPoint"
+msgstr "DynaPoint"
+
+msgid "Dynamic Access Point Manager"
+msgstr "Gerenciamento do Ponto de Acesso Dinâmico"
+
+msgid "Enabled"
+msgstr "Habilitado"
+
+msgid ""
+"Failure counter after how many failed download attempts, the state is "
+"considered as offline"
+msgstr "Numero de falhar para considerar como inalcançável"
+
+msgid "List of Wireless Virtual Interfaces (wVIF)"
+msgstr "Lista de Interfaces Virtuais Wireless (wVIF)"
+
+msgid "List of host addresses"
+msgstr "Lista de endereços dos equipamentos"
+
+msgid ""
+"List of host addresses (url or IP) to track and request http headers from"
+msgstr ""
+"Lista de endereços dos equipamentos (URL ou endereço IP) para requisitar "
+"cabeçalhos HTTP"
+
+msgid "Mode"
+msgstr "Modo"
+
+msgid "Not used by DynaPoint"
+msgstr "Não usado pelo DynaPoint"
+
+msgid "Offline"
+msgstr "Desconectado"
+
+msgid "Online"
+msgstr "Conectado"
+
+msgid "SSID"
+msgstr "SSID"
+
+msgid "Switch_to_offline threshold"
+msgstr "Limiar para mudar para desconectado"
+
+msgid "Test-run interval"
+msgstr "Intervalo para execução do teste"
+
+msgid "Time interval in seconds to re-start a new test run"
+msgstr "Intervalo, em segundos, para reiniciar um nova execução do teste"
+
+msgid "Use curl"
+msgstr "Usar cURL"
+
+msgid "Use curl instead of wget"
+msgstr "Usar cURL ao invés do wget"
+
+msgid "Use curl instead of wget for testing the connectivity."
+msgstr "Usar cURL ao invés do wget para testar a conectividade."
+
+msgid "Used interface"
+msgstr "Dispositivos usadas"
+
+msgid "Which interface should curl use. (Use ifconfig to find out)"
+msgstr "Qual dispositivo o cURL deve usar. (Use ifconfig para listá-las)"
+
+msgid "WiFi Status"
+msgstr "Estado da WiFi"
diff --git a/applications/luci-app-e2guardian/Makefile b/applications/luci-app-e2guardian/Makefile
new file mode 100644 (file)
index 0000000..c3ac029
--- /dev/null
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=E2Guardian LuCI Interface
+LUCI_DEPENDS:=+luci-mod-admin-full +e2guardian
+
+PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-e2guardian/luasrc/controller/e2guardian.lua b/applications/luci-app-e2guardian/luasrc/controller/e2guardian.lua
new file mode 100644 (file)
index 0000000..dd545f5
--- /dev/null
@@ -0,0 +1,22 @@
+--[[
+
+LuCI E2Guardian module
+
+Copyright (C) 2015, Itus Networks, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
+       Luka Perkov <luka.perkov@sartura.hr>
+
+]]--
+
+module("luci.controller.e2guardian", package.seeall)
+
+function index()
+       entry({"admin", "services", "e2guardian"}, cbi("e2guardian"), _("E2Guardian"))
+end
diff --git a/applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua b/applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua
new file mode 100644 (file)
index 0000000..b621321
--- /dev/null
@@ -0,0 +1,399 @@
+--[[
+
+LuCI E2Guardian module
+
+Copyright (C) 2015, Itus Networks, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
+       Luka Perkov <luka.perkov@sartura.hr>
+
+]]--
+
+local fs = require "nixio.fs"
+local sys = require "luci.sys"
+
+m = Map("e2guardian", translate("E2Guardian"))
+m.on_after_commit = function() luci.sys.call("/etc/init.d/e2guardian restart") end
+
+s = m:section(TypedSection, "e2guardian")
+s.anonymous = true
+s.addremove = false
+
+s:tab("tab_general", translate("General Settings"))
+s:tab("tab_additional", translate("Additional Settings"))
+s:tab("tab_logs", translate("Logs"))
+
+
+----------------- General Settings Tab -----------------------
+
+filterip = s:taboption("tab_general", Value, "filterip", translate("IP that E2Guardian listens"))
+filterip.datatype = "ip4addr"
+
+filterports = s:taboption("tab_general", Value, "filterports", translate("Port that E2Guardian listens"))
+filterports.datatype = "portrange"
+filterports.placeholder = "0-65535"
+
+proxyip = s:taboption("tab_general", Value, "proxyip", translate("IP address of the proxy"))
+proxyip.datatype = "ip4addr"
+proxyip.default = "127.0.0.1"
+
+proxyport = s:taboption("tab_general", Value, "proxyport", translate("Port of the proxy"))
+proxyport.datatype = "portrange"
+proxyport.placeholder = "0-65535"
+
+languagedir = s:taboption("tab_general", Value, "languagedir", translate("Language dir"))
+languagedir.datatype = "string"
+languagedir.default = "/usr/share/e2guardian/languages"
+
+language = s:taboption("tab_general", Value, "language", translate("Language to use"))
+language.datatype = "string"
+language.default = "ukenglish"
+
+loglevel = s:taboption("tab_general", ListValue, "loglevel", translate("Logging Settings"))
+loglevel:value("0",  translate("none"))
+loglevel:value("1",  translate("just denied"))
+loglevel:value("2",  translate("all text based"))
+loglevel:value("3",  translate("all requests"))
+loglevel.default = "2"
+
+logexceptionhits = s:taboption("tab_general", ListValue, "logexceptionhits", translate("Log Exception Hits"))
+logexceptionhits:value("0",  translate("never"))
+logexceptionhits:value("1",  translate("log, but don't mark as exceptions"))
+logexceptionhits:value("2",  translate("log and mark"))
+logexceptionhits.default = "2"
+
+logfileformat = s:taboption("tab_general", ListValue, "logfileformat", translate("Log File Format"))
+logfileformat:value("1",  translate("DansgGuardian format, space delimited"))
+logfileformat:value("2",  translate("CSV-style format"))
+logfileformat:value("3",  translate("Squid Log File Format"))
+logfileformat:value("4",  translate("Tab delimited"))
+logfileformat:value("5",  translate("Protex format"))
+logfileformat:value("6",  translate("Protex format with server field blanked"))
+logfileformat.default = "1"
+
+accessdeniedaddress = s:taboption("tab_general", Value, "accessdeniedaddress", translate("Access denied address"),
+translate("Server to which the cgi e2guardian reporting script was copied. Reporting levels 1 and 2 only"))
+accessdeniedaddress.datatype = "string"
+accessdeniedaddress.default = "http://YOURSERVER.YOURDOMAIN/cgi-bin/e2guardian.pl"
+
+usecustombannedimage = s:taboption("tab_general", ListValue, "usecustombannedimage", translate("Banned image replacement"))
+usecustombannedimage:value("on",  translate("Yes"))
+usecustombannedimage:value("off",  translate("No"))
+usecustombannedimage.default = "on"
+
+custombannedimagefile = s:taboption("tab_general", Value, "custombannedimagefile", translate("Custom banned image file"))
+custombannedimagefile.datatype = "string"
+custombannedimagefile.default = "/usr/share/e2guardian/transparent1x1.gif"
+
+usecustombannedflash = s:taboption("tab_general", ListValue, "usecustombannedflash", translate("Banned flash replacement"))
+usecustombannedflash:value("on",  translate("Yes"))
+usecustombannedflash:value("off",  translate("No"))
+usecustombannedflash.default = "on"
+
+custombannedflashfile = s:taboption("tab_general", Value, "custombannedflashfile", translate("Custom banned flash file"))
+custombannedflashfile.datatype = "string"
+custombannedflashfile.default = "/usr/share/e2guardian/blockedflash.swf"
+
+filtergroups = s:taboption("tab_general", Value, "filtergroups", translate("Number of filter groups"))
+filtergroups.datatype = "and(uinteger,min(1))"
+filtergroups.default = "1"
+
+filtergroupslist = s:taboption("tab_general", Value, "filtergroupslist", translate("List of filter groups"))
+filtergroupslist.datatype = "string"
+filtergroupslist.default = "/etc/e2guardian/lists/filtergroupslist"
+
+bannediplist = s:taboption("tab_general", Value, "bannediplist", translate("List of banned IPs"))
+bannediplist.datatype = "string"
+bannediplist.default = "/etc/e2guardian/lists/bannediplist"
+
+exceptioniplist = s:taboption("tab_general", Value, "exceptioniplist", translate("List of IP exceptions"))
+exceptioniplist.datatype = "string"
+exceptioniplist.default = "/etc/e2guardian/lists/exceptioniplist"
+
+perroomblockingdirectory = s:taboption("tab_general", Value, "perroomblockingdirectory", translate("Per-Room blocking definition directory"))
+perroomblockingdirectory.datatype = "string"
+perroomblockingdirectory.default = "/etc/e2guardian/lists/bannedrooms/"
+
+showweightedfound = s:taboption("tab_general", ListValue, "showweightedfound", translate("Show weighted phrases found"))
+showweightedfound:value("on",  translate("Yes"))
+showweightedfound:value("off",  translate("No"))
+showweightedfound.default = "on"
+
+weightedphrasemode = s:taboption("tab_general", ListValue, "weightedphrasemode", translate("Weighted phrase mode"))
+weightedphrasemode:value("0",  translate("off"))
+weightedphrasemode:value("1",  translate("on, normal operation"))
+weightedphrasemode:value("2",  translate("on, phrase found only counts once on a page"))
+weightedphrasemode.default = "2"
+
+urlcachenumber = s:taboption("tab_general", Value, "urlcachenumber", translate("Clean result caching for URLs"))
+urlcachenumber.datatype = "and(uinteger,min(0))"
+urlcachenumber.default = "1000"
+
+urlcacheage = s:taboption("tab_general", Value, "urlcacheage", translate("Age before they should be ignored in seconds"))
+urlcacheage.datatype = "and(uinteger,min(0))"
+urlcacheage.default = "900"
+
+scancleancache = s:taboption("tab_general", ListValue, "scancleancache", translate("Cache for content (AV) scans as 'clean'"))
+scancleancache:value("on",  translate("Yes"))
+scancleancache:value("off",  translate("No"))
+scancleancache.default = "on"
+
+phrasefiltermode = s:taboption("tab_general", ListValue, "phrasefiltermode", translate("Filtering options"))
+phrasefiltermode:value("0",  translate("raw"))
+phrasefiltermode:value("1",  translate("smart"))
+phrasefiltermode:value("2",  translate("both raw and smart"))
+phrasefiltermode:value("3",  translate("meta/title"))
+phrasefiltermode.default = "2"
+
+preservecase = s:taboption("tab_general", ListValue, "perservecase", translate("Lower caseing options"))
+preservecase:value("0",  translate("force lower case"))
+preservecase:value("1",  translate("don't change"))
+preservecase:value("2",  translate("scan fist in lower, then in original"))
+preservecase.default = "0"
+
+hexdecodecontent = s:taboption("tab_general", ListValue, "hexdecodecontent", translate("Hex decoding options"))
+hexdecodecontent:value("on",  translate("Yes"))
+hexdecodecontent:value("off",  translate("No"))
+hexdecodecontent.default = "off"
+
+forcequicksearch = s:taboption("tab_general", ListValue, "forcequicksearch", translate("Quick search"))
+forcequicksearch:value("on",  translate("Yes"))
+forcequicksearch:value("off",  translate("No"))
+forcequicksearch.default = "off"
+
+reverseaddresslookups= s:taboption("tab_general", ListValue, "reverseaddresslookups", translate("Reverse lookups for banned site and URLs"))
+reverseaddresslookups:value("on",  translate("Yes"))
+reverseaddresslookups:value("off",  translate("No"))
+reverseaddresslookups.default = "off"
+
+reverseclientiplookups = s:taboption("tab_general", ListValue, "reverseclientiplookups", translate("Reverse lookups for banned and exception IP lists"))
+reverseclientiplookups:value("on",  translate("Yes"))
+reverseclientiplookups:value("off",  translate("No"))
+reverseclientiplookups.default = "off"
+
+logclienthostnames = s:taboption("tab_general", ListValue, "logclienthostnames", translate("Perform reverse lookups on client IPs for successful requests"))
+logclienthostnames:value("on",  translate("Yes"))
+logclienthostnames:value("off",  translate("No"))
+logclienthostnames.default = "off"
+
+createlistcachefiles = s:taboption("tab_general", ListValue, "createlistcachefiles", translate("Build bannedsitelist and bannedurllist cache files"))
+createlistcachefiles:value("on",translate("Yes"))
+createlistcachefiles:value("off",translate("No"))
+createlistcachefiles.default = "on"
+
+prefercachedlists = s:taboption("tab_general", ListValue, "prefercachedlists", translate("Prefer cached list files"))
+prefercachedlists:value("on",  translate("Yes"))
+prefercachedlists:value("off",  translate("No"))
+prefercachedlists.default = "off"
+
+maxuploadsize = s:taboption("tab_general", Value, "maxuploadsize", translate("Max upload size (in Kbytes)"))
+maxuploadsize:value("-1",  translate("no blocking"))
+maxuploadsize:value("0",  translate("complete block"))
+maxuploadsize.default = "-1"
+
+maxcontentfiltersize = s:taboption("tab_general", Value, "maxcontentfiltersize", translate("Max content filter size"),
+translate("The value must not be higher than max content ram cache scan size or 0 to match it"))
+maxcontentfiltersize.datatype = "and(uinteger,min(0))"
+maxcontentfiltersize.default = "256"
+
+maxcontentramcachescansize = s:taboption("tab_general", Value, "maxcontentramcachescansize", translate("Max content ram cache scan size"),
+translate("This is the max size of file that DG will download and cache in RAM"))
+maxcontentramcachescansize.datatype = "and(uinteger,min(0))"
+maxcontentramcachescansize.default = "2000"
+
+maxcontentfilecachescansize = s:taboption("tab_general", Value, "maxcontentfilecachescansize", translate("Max content file cache scan size"))
+maxcontentfilecachescansize.datatype = "and(uinteger,min(0))"
+maxcontentfilecachescansize.default = "20000"
+
+proxytimeout = s:taboption("tab_general", Value, "proxytimeout", translate("Proxy timeout (5-100)"))
+proxytimeout.datatype = "range(5,100)"
+proxytimeout.default = "20"
+
+proxyexchange = s:taboption("tab_general", Value, "proxyexchange", translate("Proxy header excahnge (20-300)"))
+proxyexchange.datatype = "range(20,300)"
+proxyexchange.default = "20"
+
+pcontimeout = s:taboption("tab_general", Value, "pcontimeout", translate("Pconn timeout"),
+translate("How long a persistent connection will wait for other requests"))
+pcontimeout.datatype = "range(5,300)"
+pcontimeout.default = "55"
+
+filecachedir = s:taboption("tab_general", Value, "filecachedir", translate("File cache directory"))
+filecachedir.datatype = "string"
+filecachedir.default = "/tmp"
+
+deletedownloadedtempfiles = s:taboption("tab_general", ListValue, "deletedownloadedtempfiles", translate("Delete file cache after user completes download"))
+deletedownloadedtempfiles:value("on",  translate("Yes"))
+deletedownloadedtempfiles:value("off", translate("No"))
+deletedownloadedtempfiles.default = "on"
+
+initialtrickledelay = s:taboption("tab_general", Value, "initialtrickledelay", translate("Initial Trickle delay"),
+translate("Number of seconds a browser connection is left waiting before first being sent *something* to keep it alive"))
+initialtrickledelay.datatype = "and(uinteger,min(0))"
+initialtrickledelay.default = "20"
+
+trickledelay = s:taboption("tab_general", Value, "trickledelay", translate("Trickle delay"),
+translate("Number of seconds a browser connection is left waiting before being sent more *something* to keep it alive"))
+trickledelay.datatype = "and(uinteger,min(0))"
+trickledelay.default = "10"
+
+downloadmanager = s:taboption("tab_general", Value, "downloadmanager", translate("Download manager"))
+downloadmanager.datatype = "string"
+downloadmanager.default = "/etc/e2guardian/downloadmanagers/default.conf"
+
+contentscannertimeout = s:taboption("tab_general", Value, "contentscannertimeout", translate("Content scanner timeout"))
+contentscannertimeout.datatype = "and(uinteger,min(0))"
+contentscannertimeout.default = "60"
+
+contentscanexceptions = s:taboption("tab_general", ListValue, "contentscanexceptions", translate("Content scan exceptions"))
+contentscanexceptions:value("on",  translate("Yes"))
+contentscanexceptions:value("off", translate("No"))
+contentscanexceptions.default = "off"
+
+recheckreplacedurls = s:taboption("tab_general", ListValue, "recheckreplacedurls", translate("e-check replaced URLs"))
+recheckreplacedurls:value("on",  translate("Yes"))
+recheckreplacedurls:value("off", translate("No"))
+recheckreplacedurls.default = "off"
+
+forwardedfor = s:taboption("tab_general", ListValue, "forwardedfor", translate("Misc setting: forwardedfor"),
+translate("If on, it may help solve some problem sites that need to know the source ip."))
+forwardedfor:value("on",  translate("Yes"))
+forwardedfor:value("off", translate("No"))
+forwardedfor.default = "off"
+
+usexforwardedfor = s:taboption("tab_general", ListValue, "usexforwardedfor", translate("Misc setting: usexforwardedfor"),
+translate("This is for when you have squid between the clients and E2Guardian"))
+usexforwardedfor:value("on",  translate("Yes"))
+usexforwardedfor:value("off", translate("No"))
+usexforwardedfor.default = "off"
+
+logconnectionhandlingerrors = s:taboption("tab_general", ListValue, "logconnectionhandlingerrors", translate("Log debug info about log()ing and accept()ing"))
+logconnectionhandlingerrors:value("on",  translate("Yes"))
+logconnectionhandlingerrors:value("off", translate("No"))
+logconnectionhandlingerrors.default = "on"
+
+logchildprocesshandling = s:taboption("tab_general", ListValue, "logchildprocesshandling", translate("Log child process handling"))
+logchildprocesshandling:value("on",  translate("Yes"))
+logchildprocesshandling:value("off", translate("No"))
+logchildprocesshandling.default = "off"
+
+maxchildren = s:taboption("tab_general", Value, "maxchildren", translate("Max number of processes to spawn"))
+maxchildren.datatype = "and(uinteger,min(0))"
+maxchildren.default = "180"
+
+minchildren = s:taboption("tab_general", Value, "minchildren", translate("Min number of processes to spawn"))
+minchildren.datatype = "and(uinteger,min(0))"
+minchildren.default = "20"
+
+minsparechildren = s:taboption("tab_general", Value, "minsparechildren", translate("Min number of processes to keep ready"))
+minsparechildren.datatype = "and(uinteger,min(0))"
+minsparechildren.default = "16"
+
+preforkchildren = s:taboption("tab_general", Value, "preforkchildren", translate("Sets minimum nuber of processes when it runs out"))
+preforkchildren.datatype = "and(uinteger,min(0))"
+preforkchildren.default = "10"
+
+maxsparechildren = s:taboption("tab_general", Value, "maxsparechildren", translate("Sets the maximum number of processes to have doing nothing"))
+maxsparechildren.datatype = "and(uinteger,min(0))"
+maxsparechildren.default = "32"
+
+maxagechildren = s:taboption("tab_general", Value, "maxagechildren", translate("Max age of child process"))
+maxagechildren.datatype = "and(uinteger,min(0))"
+maxagechildren.default = "500"
+
+maxips = s:taboption("tab_general", Value, "maxips", translate("Max number of clinets allowed to connect"))
+maxips:value("0",  translate("no limit"))
+maxips.default = "0"
+
+ipipcfilename = s:taboption("tab_general", Value, "ipipcfilename", translate("IP list IPC server directory and filename"))
+ipipcfilename.datatype = "string"
+ipipcfilename.default = "/tmp/.dguardianipc"
+
+urlipcfilename = s:taboption("tab_general", Value, "urlipcfilename", translate("Defines URL list IPC server directory and filename used to communicate with the URL cache process"))
+urlipcfilename.datatype = "string"
+urlipcfilename.default = "/tmp/.dguardianurlipc"
+
+ipcfilename = s:taboption("tab_general", Value, "ipcfilename", translate("Defines URL list IPC server directory and filename used to communicate with the URL cache process"))
+ipcfilename.datatype = "string"
+ipcfilename.default = "/tmp/.dguardianipipc"
+
+nodeamon = s:taboption("tab_general", ListValue, "nodeamon", translate("Disable deamoning"))
+nodeamon:value("on",  translate("Yes"))
+nodeamon:value("off", translate("No"))
+nodeamon.default = "off"
+
+nologger = s:taboption("tab_general", ListValue, "nologger", translate("Disable logger"))
+nologger:value("on",  translate("Yes"))
+nologger:value("off", translate("No"))
+nologger.default = "off"
+
+logadblock = s:taboption("tab_general", ListValue, "logadblock", translate("Enable logging of ADs"))
+logadblock:value("on",  translate("Yes"))
+logadblock:value("off", translate("No"))
+logadblock.default = "off"
+
+loguseragent = s:taboption("tab_general", ListValue, "loguseragent", translate("Enable logging of client user agent"))
+loguseragent:value("on",  translate("Yes"))
+loguseragent:value("off", translate("No"))
+loguseragent.default = "off"
+
+softrestart = s:taboption("tab_general", ListValue, "softrestart", translate("Enable soft restart"))
+softrestart:value("on",  translate("Yes"))
+softrestart:value("off", translate("No"))
+softrestart.default = "off"
+
+
+------------------------ Additional Settings Tab ----------------------------
+
+e2guardian_config_file = s:taboption("tab_additional", TextValue, "_data", "")
+e2guardian_config_file.wrap = "off"
+e2guardian_config_file.rows = 25
+e2guardian_config_file.rmempty = false
+
+function e2guardian_config_file.cfgvalue()
+       local uci = require "luci.model.uci".cursor_state()
+       file = "/etc/e2guardian/e2guardianf1.conf"
+       if file then
+               return fs.readfile(file) or ""
+       else
+               return ""
+       end
+end
+
+function e2guardian_config_file.write(self, section, value)
+       if value then
+               local uci = require "luci.model.uci".cursor_state()
+               file = "/etc/e2guardian/e2guardianf1.conf"
+               fs.writefile(file, value:gsub("\r\n", "\n"))
+       end
+end
+
+
+---------------------------- Logs Tab -----------------------------
+
+e2guardian_logfile = s:taboption("tab_logs", TextValue, "lines", "")
+e2guardian_logfile.wrap = "off"
+e2guardian_logfile.rows = 25
+e2guardian_logfile.rmempty = true
+
+function e2guardian_logfile.cfgvalue()
+       local uci = require "luci.model.uci".cursor_state()
+       file = "/tmp/e2guardian/access.log"
+       if file then
+               return fs.readfile(file) or ""
+       else
+               return "Can't read log file"
+       end
+end
+
+function e2guardian_logfile.write()
+        return ""
+end
+
+return m
index 694bbd8..500e507 100644 (file)
@@ -19,7 +19,6 @@ s.addremove = false
 s:option(Flag, "syn_flood", translate("Enable SYN-flood protection"))
 
 o = s:option(Flag, "drop_invalid", translate("Drop invalid packets"))
-o.default = o.enabled
 
 p = {
        s:option(ListValue, "input", translate("Input")),
index 2d601f8..ab714b5 100644 (file)
@@ -1,17 +1,17 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-03-30 17:00+0200\n"
-"PO-Revision-Date: 2014-06-21 19:03+0200\n"
-"Last-Translator: Éder <eder.grigorio@openmailbox.org>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-02-20 17:43-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"Language-Team: \n"
 
 msgid "%s in %s"
 msgstr "%s in %s"
@@ -143,7 +143,7 @@ msgid "Forward to"
 msgstr "Encaminhar para"
 
 msgid "Friday"
-msgstr ""
+msgstr "Sexta-feira"
 
 msgid "From %s in %s"
 msgstr "Vindo de %s em %s"
@@ -222,10 +222,10 @@ msgstr ""
 "equipamento cliente."
 
 msgid "Monday"
-msgstr ""
+msgstr "Segunda-Feira"
 
 msgid "Month Days"
-msgstr ""
+msgstr "Dias do mês"
 
 msgid "Name"
 msgstr "Nome"
@@ -296,7 +296,7 @@ msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Redireciona tráfego entrante para o computador interno especificado"
 
 msgid "Restart Firewall"
-msgstr ""
+msgstr "Reiniciar o Firewall"
 
 msgid "Restrict Masquerading to given destination subnets"
 msgstr "Restringe o mascaramento para uma subrede de destino específica"
@@ -330,7 +330,7 @@ msgid "SNAT port"
 msgstr "Porta da SNAT"
 
 msgid "Saturday"
-msgstr ""
+msgstr "Sábado"
 
 msgid "Source IP address"
 msgstr "Endereço IP de origem"
@@ -360,19 +360,19 @@ msgid "Source zone"
 msgstr "Zona de origem"
 
 msgid "Start Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "Dia inicial (aaaa-mm-dd)"
 
 msgid "Start Time (hh:mm:ss)"
-msgstr ""
+msgstr "Hora inicial (hh:mm:ss)"
 
 msgid "Stop Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "Dia final (aaaa-mm-dd)"
 
 msgid "Stop Time (hh:mm:ss)"
-msgstr ""
+msgstr "Hora final (hh:mm:ss)"
 
 msgid "Sunday"
-msgstr ""
+msgstr "Domingo"
 
 msgid ""
 "The firewall creates zones over your network interfaces to control network "
@@ -411,7 +411,6 @@ msgstr ""
 "Esta página permite que você mude propriedades avançadas da entrada da regra "
 "de tráfego, como os equipamentos de origem e destino."
 
-#, fuzzy
 msgid ""
 "This section defines common properties of %q. The <em>input</em> and "
 "<em>output</em> options set the default policies for traffic entering and "
@@ -427,10 +426,10 @@ msgstr ""
 "zona."
 
 msgid "Thursday"
-msgstr ""
+msgstr "Quita-feira"
 
 msgid "Time in UTC"
-msgstr ""
+msgstr "Hora em UTC"
 
 msgid "To %s at %s on <var>this device</var>"
 msgstr "Para %s em %s <var>neste dispositivo</var>"
@@ -463,7 +462,7 @@ msgstr ""
 "ou abrir portas WAN no roteador."
 
 msgid "Tuesday"
-msgstr ""
+msgstr "Terça-feira"
 
 msgid "Via %s"
 msgstr "Via %s"
@@ -472,10 +471,10 @@ msgid "Via %s at %s"
 msgstr "Via %s at %s"
 
 msgid "Wednesday"
-msgstr ""
+msgstr "Quarta-feira"
 
 msgid "Week Days"
-msgstr ""
+msgstr "Dias da semana"
 
 msgid ""
 "You may specify multiple by selecting \"-- custom --\" and then entering "
index 3fbd88a..ba7a856 100644 (file)
@@ -8,8 +8,6 @@ include $(TOPDIR)/rules.mk
 
 LUCI_TITLE:=Fwknopd config - web config for the firewall knock daemon
 LUCI_DEPENDS:=+fwknopd +qrencode
-PKG_VERSION:=1.0
-PKG_RELEASE:=1
 PKG_LICENSE:=GPLv2
 PKG_MAINTAINER:=Jonathan Bennett <JBennett@incomsystems.biz>
 include ../../luci.mk
diff --git a/applications/luci-app-fwknopd/po/pt-br/fwknopd.po b/applications/luci-app-fwknopd/po/pt-br/fwknopd.po
new file mode 100644 (file)
index 0000000..286b49d
--- /dev/null
@@ -0,0 +1,116 @@
+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 ""
+"Allow SPA clients to request access to services through an iptables firewall "
+"instead of just to it."
+msgstr ""
+"Permitir que clientes SPA requeiram acesso a serviços através de um firewall "
+"iptables ao invés de apenas fazê-lo."
+
+msgid "Allow SPA clients to request forwarding destination by DNS name."
+msgstr ""
+"Permitir que clientes SPA requeiram encaminhamento de destinos por nome DNS."
+
+msgid "Base 64 key"
+msgstr "Chave em formato base64"
+
+msgid ""
+"Define a set of ports and protocols (tcp or udp) that will be opened if a "
+"valid knock sequence is seen. If this entry is not set, fwknopd will attempt "
+"to honor any proto/port request specified in the SPA data (unless of it "
+"matches any “RESTRICT_PORTS” entries). Multiple entries are comma-separated."
+msgstr ""
+"Define um conjunto de porta e protocolos (TCP ou UDP) que serão abertos se "
+"uma sequência de batidas for observada. Se esta entrada não estiver "
+"definida, fwknopd irá tentar honrar qualquer requisição de protocolo/porta "
+"especificada nos dados SPA (a não ser se casar com qualquer entrada de "
+"\"RESTRICT_PORTS\"). Múltiplas entradas serão separadas por vírgula."
+
+msgid ""
+"Define the length of time access will be granted by fwknopd through the "
+"firewall after a valid knock sequence from a source IP address. If "
+"“FW_ACCESS_TIMEOUT” is not set then the default timeout of 30 seconds will "
+"automatically be set."
+msgstr ""
+"Define a duração do tempo de acesso que será concedido pelo fwknopd através "
+"do firewall depois de uma sequência de batidas válida de um endereço IP. Se "
+"“FW_ACCESS_TIMEOUT” não estiver definido, o valor padrão será de 30 "
+"segundos. "
+
+msgid ""
+"Define the symmetric key used for decrypting an incoming SPA packet that is "
+"encrypted by the fwknop client with Rijndael."
+msgstr ""
+"Define a chave simétrica usada para decifrar um pacote SPA entrante que foi "
+"cifrado pelo cliente fwknop com o algoritmo Rijndael."
+
+msgid "Enable Uci/Luci control"
+msgstr "Habilitar o controle UCI/Luci"
+
+msgid "Enable config overwrite"
+msgstr "Habilitar a sobrescrita da configuração"
+
+msgid "Firewall Knock Daemon"
+msgstr "Servidor do Firwall Knock"
+
+msgid "Firewall Knock Operator"
+msgstr "Operador do Firewall Knock"
+
+msgid ""
+"Force all SPA packets to contain a real IP address within the encrypted "
+"data. This makes it impossible to use the -s command line argument on the "
+"fwknop client command line, so either -R has to be used to automatically "
+"resolve the external address (if the client behind a NAT) or the client must "
+"know the external IP and set it via the -a argument."
+msgstr ""
+"Forçar que todos os pacotes SPA contenham um endereço IP real dentro do "
+"pacote cifrado. Isto torna impossível o uso do argumento de linha de comando "
+"'-s' no cliente fwknop. Desta forma, ou o argumento '-R' deve ser usada para "
+"resolver os endereços externos automaticamente (se o cliente estiver atrás "
+"de uma NAT)  ou o ciente deve conhecer o seu endereço IP externo e defini-lo "
+"através do argumento '-a'."
+
+msgid ""
+"Maximum age in seconds that an SPA packet will be accepted. defaults to 120 "
+"seconds"
+msgstr ""
+"Idade máxima, em segundos, que um pacote SPA será aceito. Padrão é 120 "
+"segundos."
+
+msgid "Normal Key"
+msgstr "Chave Normal"
+
+msgid "Specify the ethernet interface on which fwknopd will sniff packets."
+msgstr ""
+"Especifica o dispositivo ethernet no qual o fwknopd irá observar os pacotes."
+
+msgid "The base64 hmac key"
+msgstr "A chave de autenticação HMAC em formato base64"
+
+msgid "Use ANY for any source ip"
+msgstr "Use \"ANY\" para qualquer endereço IP de origem"
+
+msgid ""
+"When unchecked, the config files in /etc/fwknopd will be used as is, "
+"ignoring any settings here."
+msgstr ""
+"Quando desmarcado, os arquivos de configuração em /etc/fwknopd serão usados "
+"como estão, ignorando qualquer ajustes feitos aqui."
+
+msgid "access.conf stanzas"
+msgstr "Estâncias do access.conf"
+
+msgid "fwknopd.conf config options"
+msgstr "Opções do fwknopd.conf"
index f273a55..9a981ac 100644 (file)
@@ -10,6 +10,6 @@ function index()
 
        local page
 
-       page = entry({"admin", "services", "hd_idle"}, cbi("hd_idle"), _("hd-idle"), 60)
+       page = entry({"admin", "services", "hd_idle"}, cbi("hd_idle"), _("HDD Idle"), 60)
        page.dependent = true
 end
index 70b04af..c15fdc0 100644 (file)
@@ -3,8 +3,8 @@
 
 require("nixio.fs")
 
-m = Map("hd-idle", "hd-idle",
-       translate("hd-idle is a utility program for spinning-down external " ..
+m = Map("hd-idle", translate("HDD Idle"),
+       translate("HDD Idle is a utility program for spinning-down external " ..
                "disks after a period of idle time."))
 
 s = m:section(TypedSection, "hd-idle", translate("Settings"))
@@ -18,9 +18,9 @@ for dev in nixio.fs.glob("/dev/[sh]d[a-z]") do
        disk:value(nixio.fs.basename(dev))
 end
 
-s:option(Value, "idle_time_interval", translate("Idle-time")).default = 10
+s:option(Value, "idle_time_interval", translate("Idle time")).default = 10
 s.rmempty = true
-unit = s:option(ListValue, "idle_time_unit", translate("Idle-time unit"))
+unit = s:option(ListValue, "idle_time_unit", translate("Idle time unit"))
 unit.default = "minutes"
 unit:value("minutes", translate("min"))
 unit:value("hours", translate("h"))
index 29618a8..10ca4cd 100644 (file)
@@ -21,10 +21,20 @@ msgstr "Disc"
 msgid "Enable"
 msgstr "Habilita"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle és un programa per ralentitzar els discos externs després d'un "
+"període de temps inactiu."
+
+msgid "Idle time"
 msgstr "Temps d'inactivitat"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "Unitat de temps d'inactivitat"
 
 msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "Ajusts"
 msgid "h"
 msgstr "h"
 
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle és un programa per ralentitzar els discos externs després d'un "
-"període de temps inactiu."
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "min"
index e2deb9b..b775392 100644 (file)
@@ -21,10 +21,20 @@ msgstr "Disk"
 msgid "Enable"
 msgstr "Povolit"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle je utilita pro vypnutí externích pevných disků po určité době "
+"nečinnosti."
+
+msgid "Idle time"
 msgstr "Čas nečinnosti"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "Čas nečinnosti - jednotka"
 
 msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "Nastavení"
 msgid "h"
 msgstr "h"
 
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle je utilita pro vypnutí externích pevných disků po určité době "
-"nečinnosti."
-
 # Minut (ne minimum)
 msgid "min"
 msgstr "min"
index fa54896..79fa603 100644 (file)
@@ -19,10 +19,20 @@ msgstr "Festplatte"
 msgid "Enable"
 msgstr "Aktivieren"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle ist ein Hilfsprogramm um externe Festplatten nach einer "
+"festgelegten Leerlaufzeit herunter zu fahren."
+
+msgid "Idle time"
 msgstr "Leerlaufzeit"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "Leerlaufzeiteinheit"
 
 msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Einstellungen"
 msgid "h"
 msgstr "Stunden"
 
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle ist ein Hilfsprogramm um externe Festplatten nach einer festgelegten "
-"Leerlaufzeit herunter zu fahren."
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "Minuten"
index 4d7c23d..e4f006a 100644 (file)
@@ -19,10 +19,18 @@ msgstr "Δίσκος"
 msgid "Enable"
 msgstr "Ενεργοποίηση"
 
-msgid "Idle-time"
+msgid "HDD Idle"
 msgstr ""
 
-msgid "Idle-time unit"
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+
+msgid "Idle time"
+msgstr ""
+
+msgid "Idle time unit"
 msgstr ""
 
 msgid "Settings"
@@ -32,14 +40,6 @@ msgstr "Ρυθμίσεις"
 msgid "h"
 msgstr "ω"
 
-msgid "hd-idle"
-msgstr ""
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "λεπτά"
index 7aa4db5..3ed519f 100644 (file)
@@ -17,11 +17,21 @@ msgstr "Disk"
 msgid "Enable"
 msgstr "Enable"
 
-msgid "Idle-time"
-msgstr "Idle-time"
+msgid "HDD Idle"
+msgstr ""
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+
+msgid "Idle time"
+msgstr "Idle time"
 
-msgid "Idle-time unit"
-msgstr "Idle-time unit"
+msgid "Idle time unit"
+msgstr "Idle time unit"
 
 msgid "Settings"
 msgstr "Settings"
@@ -30,16 +40,6 @@ msgstr "Settings"
 msgid "h"
 msgstr "h"
 
-msgid "hd-idle"
-msgstr ""
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "min"
index d2bb017..09dd3b8 100644 (file)
@@ -19,10 +19,20 @@ msgstr "Disco"
 msgid "Enable"
 msgstr "Activar"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle es un programa que gestiona el reposo de discos externos tras un "
+"tiempo de inactividad."
+
+msgid "Idle time"
 msgstr "Tiempo de inactividad"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "Unidad de tiempo"
 
 msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Configuración"
 msgid "h"
 msgstr "h"
 
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle es un programa que gestiona el reposo de discos externos tras un "
-"tiempo de inactividad."
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "minutos"
index 00c092d..ea30bf1 100644 (file)
@@ -19,10 +19,20 @@ msgstr "Disque"
 msgid "Enable"
 msgstr "Activer"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle est un utilitaire pour arrêter la rotation des disques externes "
+"après une période d'inactivité."
+
+msgid "Idle time"
 msgstr "Temps d'inactivité"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "Unité de temps"
 
 msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Réglages"
 msgid "h"
 msgstr "h"
 
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle est un utilitaire pour arrêter la rotation des disques externes "
-"après une période d'inactivité."
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "min"
index 0ffde90..8a73d5f 100644 (file)
@@ -21,10 +21,20 @@ msgstr "כונן"
 msgid "Enable"
 msgstr "אפשר"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr ""
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle הינה תוכנת שירות שמטרתה להקטין את מהירות הסיבוב של כוננים חיצוניים "
+"לאחר זמן מסוים של חוסר פעילות."
+
+msgid "Idle time"
 msgstr "זמן חוסר פעילות"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "יחידת זמן חוסר פעילות"
 
 msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "הגדרות"
 msgid "h"
 msgstr "ש'"
 
-msgid "hd-idle"
-msgstr ""
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle הינה תוכנת שירות שמטרתה להקטין את מהירות הסיבוב של כוננים חיצוניים "
-"לאחר זמן מסוים של חוסר פעילות."
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "דק'"
index 543a8fc..d902ee0 100644 (file)
@@ -21,10 +21,20 @@ msgstr "Lemez"
 msgid "Enable"
 msgstr "Engedélyezés"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle egy a külső lemezek adott üresjárati idő után történő leállítására "
+"szolgáló segédprogram."
+
+msgid "Idle time"
 msgstr "Üresjárati idő"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "Üresjárati idő egysége"
 
 msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "Beállítások"
 msgid "h"
 msgstr "óra"
 
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle egy a külső lemezek adott üresjárati idő után történő leállítására "
-"szolgáló segédprogram."
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "perc"
index ffd118d..63751c3 100644 (file)
@@ -19,10 +19,20 @@ msgstr "Disco"
 msgid "Enable"
 msgstr "Abilita"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle è un programma per mettere in standby i dischi esterni dopo un "
+"periodo di inattività."
+
+msgid "Idle time"
 msgstr "Tempo di inattività"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "Unità di misura del tempo di inattività"
 
 msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Opzioni"
 msgid "h"
 msgstr "ora/e"
 
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"HD-idle è un programma per mettere in standby i dischi esterni dopo un "
-"periodo di inattività."
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "min"
index 9e724eb..6023778 100644 (file)
@@ -19,10 +19,20 @@ msgstr "ディスク"
 msgid "Enable"
 msgstr "有効"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idleはアイドル時に外部ディスクをスピンダウンさせるための、ユーティリティ"
+"プログラムです。"
+
+msgid "Idle time"
 msgstr "アイドル時間"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "アイドル時間 (単位)"
 
 msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "設定"
 msgid "h"
 msgstr "時"
 
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idleはアイドル時に外部ディスクをスピンダウンさせるための、ユーティリティプ"
-"ログラムです。"
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "分"
index 45402b8..361f1ac 100644 (file)
@@ -18,25 +18,25 @@ msgstr ""
 msgid "Enable"
 msgstr ""
 
-msgid "Idle-time"
+msgid "HDD Idle"
 msgstr ""
 
-msgid "Idle-time unit"
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
 msgstr ""
 
-msgid "Settings"
+msgid "Idle time"
 msgstr ""
 
-# Hours
-msgid "h"
+msgid "Idle time unit"
 msgstr ""
 
-msgid "hd-idle"
+msgid "Settings"
 msgstr ""
 
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
+# Hours
+msgid "h"
 msgstr ""
 
 # Minutes (not minimum)
index dc0c2f8..6482a29 100644 (file)
@@ -10,10 +10,20 @@ msgstr "Disk"
 msgid "Enable"
 msgstr "Aktiver"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle er et verktøy for å spinne ned eksterne disker etter en periode med "
+"inaktivitet."
+
+msgid "Idle time"
 msgstr "Tid inaktiv"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "Tidsenhet"
 
 msgid "Settings"
@@ -22,16 +32,6 @@ msgstr "Innstillinger"
 msgid "h"
 msgstr "timer"
 
-msgid "hd-idle"
-msgstr "Hd-Idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle er et verktøy for å spinne ned eksterne disker etter en periode med "
-"inaktivitet."
-
 msgid "min"
 msgstr "minutter"
 
index c6522c1..29c286f 100644 (file)
@@ -20,10 +20,20 @@ msgstr "Dysk"
 msgid "Enable"
 msgstr "Włącz"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle jest narzędziem do zwalniania obrotów zewnętrznych dysków po "
+"określonym czasie bezczynności."
+
+msgid "Idle time"
 msgstr "Czas bezczynności"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "Jednostka czasu bezczynności"
 
 msgid "Settings"
@@ -33,16 +43,6 @@ msgstr "Ustawienia"
 msgid "h"
 msgstr "godz."
 
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle jest narzędziem do zwalniania obrotów zewnętrznych dysków po "
-"określonym czasie bezczynności."
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "min"
index 0aaca93..adcf063 100644 (file)
@@ -19,10 +19,20 @@ msgstr "Disco"
 msgid "Enable"
 msgstr "Habilitar"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle é um programa utilitário para ativar o modo \"economia de energia"
+"\" (spinning-down) de discos externos após um período de ociosidade."
+
+msgid "Idle time"
 msgstr "Tempo de ociosidade"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "Unidade do tempo da ociosidade"
 
 msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Configurações"
 msgid "h"
 msgstr "horas"
 
-msgid "hd-idle"
-msgstr "Hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"Hd-idle é um programa utilitário para ativar o modo \"economia de energia"
-"\" (spinning-down) de discos externos após um período de ociosidade."
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "minutos"
index 16cb085..81a6ae2 100644 (file)
@@ -19,10 +19,20 @@ msgstr "Disco"
 msgid "Enable"
 msgstr "Ativar"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle é um programa utilitário para activar o modo \"economia de energia"
+"\" (spinning-down) de discos externos após um período de ociosidade."
+
+msgid "Idle time"
 msgstr "Tempo de ociosidade"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "Unidade de tempo de ociosidade"
 
 msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Configurações"
 msgid "h"
 msgstr "h"
 
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle é um programa utilitário para activar o modo \"economia de energia"
-"\" (spinning-down) de discos externos após um período de ociosidade."
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "min"
index ae6a8b0..31311ce 100644 (file)
@@ -22,10 +22,20 @@ msgstr "Disc"
 msgid "Enable"
 msgstr "Activeaza"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle este un utilitar pentru a oprit din rotatie hard disc-urile externe "
+"dupa o anumita perioada de inactivitate."
+
+msgid "Idle time"
 msgstr "Timp de inactivitate"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "Unitatea de timp pentru masurarea inactivitatii"
 
 msgid "Settings"
@@ -35,16 +45,6 @@ msgstr "Setari"
 msgid "h"
 msgstr "ore"
 
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle este un utilitar pentru a oprit din rotatie hard disc-urile externe "
-"dupa o anumita perioada de inactivitate."
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "minute"
index 45d4a51..e58a32f 100644 (file)
@@ -21,10 +21,20 @@ msgstr "Диск"
 msgid "Enable"
 msgstr "Включить"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"Утилита HDD Idle позволяет замедлять внешние диски после определённого "
+"времени бездействия."
+
+msgid "Idle time"
 msgstr "Время бездействия"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "Единицы времени бездействия"
 
 msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "Настройки"
 msgid "h"
 msgstr "ч"
 
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"Утилита hd-idle позволяет замедлять внешние диски после определённого "
-"времени бездействия."
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "мин"
index 0ae82d8..aa82e96 100644 (file)
@@ -14,24 +14,24 @@ msgstr ""
 msgid "Enable"
 msgstr ""
 
-msgid "Idle-time"
+msgid "HDD Idle"
 msgstr ""
 
-msgid "Idle-time unit"
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
 msgstr ""
 
-msgid "Settings"
+msgid "Idle time"
 msgstr ""
 
-msgid "h"
+msgid "Idle time unit"
 msgstr ""
 
-msgid "hd-idle"
+msgid "Settings"
 msgstr ""
 
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
+msgid "h"
 msgstr ""
 
 msgid "min"
index 1d63095..f2ce8f1 100644 (file)
@@ -15,24 +15,24 @@ msgstr ""
 msgid "Enable"
 msgstr ""
 
-msgid "Idle-time"
+msgid "HDD Idle"
 msgstr ""
 
-msgid "Idle-time unit"
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
 msgstr ""
 
-msgid "Settings"
+msgid "Idle time"
 msgstr ""
 
-msgid "h"
+msgid "Idle time unit"
 msgstr ""
 
-msgid "hd-idle"
+msgid "Settings"
 msgstr ""
 
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
+msgid "h"
 msgstr ""
 
 msgid "min"
index 56079ed..b8aedcd 100644 (file)
@@ -7,24 +7,24 @@ msgstr ""
 msgid "Enable"
 msgstr ""
 
-msgid "Idle-time"
+msgid "HDD Idle"
 msgstr ""
 
-msgid "Idle-time unit"
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
 msgstr ""
 
-msgid "Settings"
+msgid "Idle time"
 msgstr ""
 
-msgid "h"
+msgid "Idle time unit"
 msgstr ""
 
-msgid "hd-idle"
+msgid "Settings"
 msgstr ""
 
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
+msgid "h"
 msgstr ""
 
 msgid "min"
index f9ace87..aed11b6 100644 (file)
@@ -21,10 +21,20 @@ msgstr "Disk"
 msgid "Enable"
 msgstr "Kullanıma Aç"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "Harddisk-Park"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"Harddisk-Park belirli bir zaman sonra diskleri beklemeye alan bir yardımcı "
+"programdır"
+
+msgid "Idle time"
 msgstr "Bekleme Zamanı"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "bekleme zamanı birimi"
 
 msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "Ayarlar"
 msgid "h"
 msgstr "s"
 
-msgid "hd-idle"
-msgstr "Harddisk-Park"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"Harddisk-Park belirli bir zaman sonra diskleri beklemeye alan bir yardımcı "
-"programdır"
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "d"
index 129fd7b..3d8e45c 100644 (file)
@@ -22,10 +22,19 @@ msgstr "Диск"
 msgid "Enable"
 msgstr "Активувати"
 
-msgid "Idle-time"
+#, fuzzy
+msgid "HDD Idle"
+msgstr "HD-простій"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+
+msgid "Idle time"
 msgstr "Час простою"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr ""
 
 msgid "Settings"
@@ -35,15 +44,6 @@ msgstr "Налаштування"
 msgid "h"
 msgstr ""
 
-#, fuzzy
-msgid "hd-idle"
-msgstr "HD-простій"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "хв"
index 03ee2c1..a5d4ffe 100644 (file)
@@ -20,12 +20,22 @@ msgstr "Ổ đĩa"
 msgid "Enable"
 msgstr "Kích hoạt debug"
 
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle là một chương trình tiện ích để quay các đĩa ngoài sau một khoảng "
+"thời gian idle."
+
 #, fuzzy
-msgid "Idle-time"
+msgid "Idle time"
 msgstr "Thời gian Idle"
 
 #, fuzzy
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "Đơn vị thời gian Idle"
 
 msgid "Settings"
@@ -35,16 +45,6 @@ msgstr "Sắp đặt"
 msgid "h"
 msgstr ""
 
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle là một chương trình tiện ích để quay các đĩa ngoài sau một khoảng "
-"thời gian idle."
-
 # Minutes (not minimum)
 msgid "min"
 msgstr ""
index 8bc14dc..d67abfd 100644 (file)
@@ -19,10 +19,18 @@ msgstr "硬盘"
 msgid "Enable"
 msgstr "开启"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "硬盘休眠"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr "硬盘休眠是一个让硬盘在空闲一段时间后休眠的工具"
+
+msgid "Idle time"
 msgstr "空闲时间"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "空闲时间单位"
 
 msgid "Settings"
@@ -32,14 +40,6 @@ msgstr "设置"
 msgid "h"
 msgstr "小时"
 
-msgid "hd-idle"
-msgstr "硬盘休眠"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr "硬盘休眠是一个让硬盘在空闲一段时间后休眠的工具"
-
 # Minutes (not minimum)
 msgid "min"
 msgstr "分钟"
index bd69785..dee14cb 100644 (file)
@@ -17,10 +17,18 @@ msgstr "磁碟"
 msgid "Enable"
 msgstr "啟用"
 
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "硬碟休眠"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr "硬碟休眠是控制當硬碟閒置一段時間後進入休眠模式的工具"
+
+msgid "Idle time"
 msgstr "休眠時間"
 
-msgid "Idle-time unit"
+msgid "Idle time unit"
 msgstr "休眠時間單位"
 
 msgid "Settings"
@@ -29,14 +37,6 @@ msgstr "設定"
 msgid "h"
 msgstr "小時"
 
-msgid "hd-idle"
-msgstr "硬碟休眠"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr "硬碟休眠是控制當硬碟閒置一段時間後進入休眠模式的工具"
-
 msgid "min"
 msgstr "分鐘"
 
diff --git a/applications/luci-app-lxc/Makefile b/applications/luci-app-lxc/Makefile
new file mode 100644 (file)
index 0000000..9f313df
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2017 Dan Luedtke <mail@danrl.com>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LXC management Web UI
+LUCI_DEPENDS:=+luci-mod-admin-full +lxc +lxc-create +liblxc +rpcd-mod-lxc +getopt +xz
+LUCI_PKGARCH:=all
+
+PKG_MAINTAINER:=Petar Koretic <petar.koretic@sartura.hr>
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/green.gif b/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/green.gif
new file mode 100644 (file)
index 0000000..d09febf
Binary files /dev/null and b/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/green.gif differ
diff --git a/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/purple.gif b/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/purple.gif
new file mode 100644 (file)
index 0000000..f0d68cc
Binary files /dev/null and b/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/purple.gif differ
diff --git a/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/red.gif b/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/red.gif
new file mode 100644 (file)
index 0000000..c1b39bb
Binary files /dev/null and b/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/red.gif differ
diff --git a/applications/luci-app-lxc/luasrc/controller/lxc.lua b/applications/luci-app-lxc/luasrc/controller/lxc.lua
new file mode 100644 (file)
index 0000000..ea7adba
--- /dev/null
@@ -0,0 +1,167 @@
+--[[
+
+LuCI LXC module
+
+Copyright (C) 2014, Cisco Systems, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Petar Koretic <petar.koretic@sartura.hr>
+
+]]--
+
+module("luci.controller.lxc", package.seeall)
+
+require "ubus"
+local conn = ubus.connect()
+if not conn then
+    error("Failed to connect to ubus")
+end
+
+
+function fork_exec(command)
+       local pid = nixio.fork()
+       if pid > 0 then
+               return
+       elseif pid == 0 then
+               -- change to root dir
+               nixio.chdir("/")
+
+               -- patch stdin, out, err to /dev/null
+               local null = nixio.open("/dev/null", "w+")
+               if null then
+                       nixio.dup(null, nixio.stderr)
+                       nixio.dup(null, nixio.stdout)
+                       nixio.dup(null, nixio.stdin)
+                       if null:fileno() > 2 then
+                               null:close()
+                       end
+               end
+
+               -- replace with target command
+               nixio.exec("/bin/sh", "-c", command)
+       end
+end
+
+function index()
+       page = node("admin", "services", "lxc")
+       page.target = cbi("lxc")
+       page.title = _("LXC Containers")
+       page.order = 70
+
+       page = entry({"admin", "services", "lxc_create"}, call("lxc_create"), nil)
+       page.leaf = true
+
+       page = entry({"admin", "services", "lxc_action"}, call("lxc_action"), nil)
+       page.leaf = true
+
+       page = entry({"admin", "services", "lxc_get_downloadable"}, call("lxc_get_downloadable"), nil)
+       page.leaf = true
+
+       page = entry({"admin", "services", "lxc_configuration_get"}, call("lxc_configuration_get"), nil)
+       page.leaf = true
+
+       page = entry({"admin", "services", "lxc_configuration_set"}, call("lxc_configuration_set"), nil)
+       page.leaf = true
+
+end
+
+function lxc_get_downloadable()
+       luci.http.prepare_content("application/json")
+
+       local f = io.popen('uname -m', 'r')
+       local target = f:read('*a')
+       f:close()
+       target = target:gsub("^%s*(.-)%s*$", "%1")
+
+       local templates = {}
+
+       local f = io.popen('lxc-create -n just_want_to_list_available_lxc_templates -t download -- --list', 'r')
+
+       for line in f:lines() do
+               local dist,version = line:match("^(%S+)%s+(%S+)%s+" .. target .. "%s+default%s+%S+$")
+               if dist~=nil and version~=nil then templates[#templates + 1] = dist .. ":" .. version end
+       end
+
+       f:close()
+       luci.http.write_json(templates)
+end
+
+function lxc_create(lxc_name, lxc_template)
+       luci.http.prepare_content("text/plain")
+
+       local uci = require("uci").cursor()
+
+       local url = uci:get("lxc", "lxc", "url")
+
+       if not pcall(dofile, "/etc/openwrt_release") then
+               return luci.http.write("1")
+       end
+
+       local f = io.popen('uname -m', 'r')
+       local target = f:read('*a')
+       f:close()
+       target = target:gsub("^%s*(.-)%s*$", "%1")
+
+       local lxc_dist = lxc_template:gsub("(.*):(.*)", '%1')
+       local lxc_release = lxc_template:gsub("(.*):(.*)", '%2')
+
+       local data = conn:call("lxc", "create", { name = lxc_name, template = "download", args = { "--server", url,  "--no-validate", "--dist", lxc_dist, "--release", lxc_release, "--arch", target } } )
+
+       luci.http.write(data)
+end
+
+function lxc_action(lxc_action, lxc_name)
+       luci.http.prepare_content("application/json")
+
+       local data, ec = conn:call("lxc", lxc_action, lxc_name and { name = lxc_name} or {} )
+
+       luci.http.write_json(ec and {} or data)
+end
+
+function lxc_get_config_path()
+       local f = io.open("/etc/lxc/lxc.conf", "r")
+       local content = f:read("*all")
+       f:close()
+       local ret = content:match('^%s*lxc.lxcpath%s*=%s*([^%s]*)')
+       if ret then
+               return ret .. "/"
+       else
+               return "/srv/lxc/"
+       end
+end
+
+function lxc_configuration_get(lxc_name)
+       luci.http.prepare_content("text/plain")
+
+       local f = io.open(lxc_get_config_path() .. lxc_name .. "/config", "r")
+       local content = f:read("*all")
+       f:close()
+
+       luci.http.write(content)
+end
+
+function lxc_configuration_set(lxc_name)
+       luci.http.prepare_content("text/plain")
+
+       local lxc_configuration = luci.http.formvalue("lxc_configuration")
+
+       if lxc_configuration == nil then
+               return luci.http.write("1")
+       end
+
+       local f, err = io.open(lxc_get_config_path() .. lxc_name .. "/config","w+")
+       if not f then
+               return luci.http.write("2")
+       end
+
+       f:write(lxc_configuration)
+       f:close()
+
+       luci.http.write("0")
+end
+
diff --git a/applications/luci-app-lxc/luasrc/model/cbi/lxc.lua b/applications/luci-app-lxc/luasrc/model/cbi/lxc.lua
new file mode 100644 (file)
index 0000000..ac0fdff
--- /dev/null
@@ -0,0 +1,31 @@
+--[[
+
+LuCI LXC module
+
+Copyright (C) 2014, Cisco Systems, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Petar Koretic <petar.koretic@sartura.hr>
+
+]]--
+
+local fs = require "nixio.fs"
+
+m = Map("lxc", translate("LXC Containers"))
+
+if fs.access("/etc/config/lxc") then
+       m:section(SimpleSection).template = "lxc"
+
+       s = m:section(TypedSection, "lxc", translate("Options"))
+       s.anonymous = true
+       s.addremove = false
+
+       s:option(Value, "url", translate("Containers URL"))
+end
+
+return m
diff --git a/applications/luci-app-lxc/luasrc/view/lxc.htm b/applications/luci-app-lxc/luasrc/view/lxc.htm
new file mode 100644 (file)
index 0000000..edfff8e
--- /dev/null
@@ -0,0 +1,458 @@
+<%#
+
+LuCI LXC module
+
+Copyright (C) 2014, Cisco Systems, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Petar Koretic <petar.koretic@sartura.hr>
+
+-%>
+
+<fieldset class="cbi-section">
+       <legend><%:Available Containers%></legend>
+       <div class="cbi-section-node">
+               <table id="t_lxc_list" class="cbi-section-table">
+                       <tr class="cbi-section-table-titles">
+                               <th class="cbi-section-table-cell"><%:Name%></th>
+                               <th class="cbi-section-table-cell"><%:Status%></th>
+                               <th class="cbi-section-table-cell"><%:Actions%></th>
+                       </tr>
+               </table>
+       </div>
+</fieldset>
+
+<fieldset class="cbi-section">
+       <span id="lxc-list-output"></span>
+</fieldset>
+
+<hr/>
+<fieldset class="cbi-section">
+       <legend><%:Create New Container%></legend>
+       <div class="cbi-section-node">
+               <table id="t_lxc_create" class="cbi-section-table">
+                       <tr class="cbi-section-table-titles">
+                               <th class="cbi-section-table-cell"><%:Name%></th>
+                               <th class="cbi-section-table-cell"><%:Template%></th>
+                               <th class="cbi-section-table-cell"><%:Actions%></th>
+                       </tr>
+                       <tr id="tr_holder">
+                               <td>
+                                       <input type="text" id="tx_name" placeholder="<%:Enter new name%>" value='' />
+                               </td>
+                               <td>
+                                       <select id="s_template" class="cbi-input-select cbi-button">
+                                       </select>
+                               </td>
+                               <td>
+                                       <input type="button" id="bt_create" value="<%:Create%>" onclick="lxc_create(tr_holder)" class="cbi-button cbi-button-add" />
+                                       <span id="lxc-add-loader" style="display:inline-block; width:16px; height:16px; margin:0 5px"></span>
+                               </td>
+                       </tr>
+               </table>
+       </div>
+</fieldset>
+
+<fieldset class="cbi-section">
+       <span id="lxc-add-output"></span>
+</fieldset>
+
+<hr/>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+
+       window.img = { "red" : "<%=resource%>/cbi/red.gif", "green" : "<%=resource%>/cbi/green.gif", "purple" : "<%=resource%>/cbi/purple.gif" }
+       window.states = {  "STOPPED" : "red", "RUNNING" : "green", "FROZEN" : "purple"}
+
+       var t_lxc_list = document.getElementById('t_lxc_list');
+       var loader_html = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" width="16" height="16" style="vertical-align:middle" /> ';
+       var timeout_msg = 0
+       var output_list = document.getElementById("lxc-list-output")
+       var output_add = document.getElementById("lxc-add-output")
+       var loader_add = document.getElementById("lxc-add-loader")
+
+       function lxc_create(tr)
+       {
+               var lxc_name = tr.querySelector("#tx_name").value.trim()
+               var lxc_template = tr.querySelector("#s_template").value
+               var bt_create = tr.querySelector("#bt_create")
+
+               if (t_lxc_list.querySelector("[data-id='" + lxc_name + "']") != null)
+                       return info_message(output_add, "Container with that name already exists!", 4000)
+
+               bt_create.disabled = true
+               output_add.innerHTML = ''
+
+               if (!lxc_name || !lxc_name.length)
+               {
+                       bt_create.disabled = false
+                       return info_message(output_add, "Name cannot be empty!", 4000)
+               }
+
+               loading(loader_add)
+
+               new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_create/' + '%h/%h'.format(lxc_name, lxc_template) , null,
+               function(x)
+               {
+                       bt_create.disabled = false
+                       loading(loader_add, 0)
+
+                       if (!x)
+                               info_message(output_add, "Container creation failed!")
+               })
+       }
+
+       function lxc_create_template(lxc_name, lxc_state)
+       {
+               var info_row = t_lxc_list.querySelector("#empty")
+               if (info_row)
+                       t_lxc_list.deleteRow(1)
+
+               var actions = ''
+               actions += '<input type="button" onclick="action_handler(this)" data-action="start" value="<%:Start%>" class="cbi-button cbi-button-apply" />'
+               actions+= '<input type="button" onclick="action_handler(this)" data-action="stop" value="<%:Stop%>" class="cbi-button cbi-button-reset" />'
+               actions+= '<input type="button" onclick="action_handler(this)" data-action="destroy" value="<%:Delete%>" class="cbi-button cbi-button-remove" />'
+               actions+= ' <select class="cbi-input-select cbi-button" onchange="action_more_handler(this)">\
+                                               <option selected disabled>more</option>\
+                                               <option>configure</option>\
+                                               <option>freeze</option>\
+                                               <option>unfreeze</option>\
+                                               <option>reboot</option>\
+                                       </select>'
+               actions+= '<span data-loader style="display:inline-block; width:16px; height:16px; margin:0 5px"></span>'
+
+               var row = t_lxc_list.insertRow(-1)
+               var cell = row.insertCell(-1)
+               cell.innerHTML = '%q%h%q'.format("<strong>", lxc_name, "</strong>")
+               cell.width = "30%"
+               cell.setAttribute("data-id", lxc_name)
+
+               cell = row.insertCell(-1)
+               cell.width = "20%"
+               cell.innerHTML = "<img src='"+window.img[lxc_state]+"'/>"
+
+               cell = row.insertCell(-1)
+               cell.width = "50%"
+               cell.innerHTML = actions
+       }
+
+       function action_handler(self)
+       {
+               var action = self.getAttribute("data-action");
+
+               var bt_action = self
+               var lxc_name = self.parentNode.parentNode.children[0].getAttribute('data-id')
+               var status_img = self.parentNode.parentNode.querySelector('img')
+               var loader = self.parentNode.querySelector('[data-loader]')
+
+               bt_action.disabled = true
+
+               if (action == "stop")
+               {
+                       loading(loader)
+
+                       new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(action, lxc_name), null,
+                       function(x, ec)
+                       {
+                               loading(loader, 0)
+                               bt_action.disabled = false
+
+                               if (!x || ec)
+                                       return info_message(output_list,"Action failed!")
+
+                               set_status(status_img, "red")
+
+                       });
+               }
+
+               else if (action == "start")
+               {
+                       loading(loader)
+
+                       new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(action, lxc_name), null,
+                       function(x, data)
+                       {
+                               loading(loader, 0)
+                               bt_action.disabled = false
+
+                               //FIXME: uncomment after fixing 'lxc-start'
+                               if (!x /*|| ec */)
+                                       return info_message(output_list,"Action failed!")
+
+                               //FIXME: uncomment after fixing 'lxc-start'
+                               //set_status(status_img, "green")
+                       });
+               }
+
+               else if (action == "destroy")
+               {
+                       if (!confirm("This will completely remove LXC container from the disk. Are you sure? (container will be stopped if running)"))
+                               return
+
+                       loading(loader)
+
+                       new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(action, lxc_name), null,
+                       function(x, ec)
+                       {
+                               loading(loader, 0)
+                               bt_action.disabled = false
+
+                               if (!x || ec)
+                                       return info_message(output_list,"Action failed!")
+
+                               var row = self.parentNode.parentNode
+                               row.parentNode.removeChild(row)
+
+                       });
+               }
+       }
+
+       function lxc_configure_handler(self)
+       {
+               var td = self.parentNode
+               var textarea = td.querySelector('[data-id]')
+               var lxc_name = textarea.getAttribute('data-id')
+               var lxc_configuration = textarea.value
+
+               new XHR().post('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_configuration_set/' + lxc_name, "lxc_configuration=" + encodeURIComponent(lxc_configuration) ,
+               function(x)
+               {
+                       if (!x || x.responseText != "0")
+                               return info_message(output_list,"Action failed!")
+
+                       info_message(output_list,"LXC configuration updated")
+                       var row = td.parentNode
+                       row.parentNode.removeChild(row)
+               })
+       }
+
+       function lxc_rename_template(lxc_name)
+       {
+               var h = '\
+                       <input data-id="'+ lxc_name + '" type="text" placeholder="Enter new name" /> \
+                       <input data-id="bt_confirm" onclick="lxc_rename_handler(this)" type="button" class="cbi-button" value="Confirm" />'
+
+               return h
+       }
+
+       function lxc_configure_template(lxc_name, lxc_configuration)
+       {
+               var h = '\
+                       <textarea data-id="'+ lxc_name + '" rows="20" style="width:100%">'+ lxc_configuration +'</textarea> \
+                       <input data-id="bt_confirm" onclick="lxc_configure_handler(this)" type="button" class="cbi-button" value="Confirm" />'
+
+               return h
+       }
+
+       function action_more_handler(self)
+       {
+               var lxc_name = self.parentNode.parentNode.querySelector('[data-id]').getAttribute('data-id')
+               var loader = self.parentNode.parentNode.querySelector('[data-loader]')
+
+               var option = self.options[self.selectedIndex].text
+
+               self.value = "more"
+
+               switch (option)
+               {
+                       case "configure":
+                               var tr = document.createElement('tr')
+                               var row = self.parentNode.parentNode
+                               var next_row = row.nextSibling
+                               if (next_row && next_row.getAttribute('data-action') !== null)
+                                       row.parentNode.removeChild(next_row)
+
+                               new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_configuration_get/' + lxc_name, null,
+                               function(x)
+                               {
+                                       tr.innerHTML="<td colspan='" + row.cells.length + "'>" + lxc_configure_template(lxc_name, x.responseText) + "</td>"
+                                       tr.setAttribute('data-action','')
+                                       row.parentNode.insertBefore(tr, row.nextSibling)
+                               })
+
+                       break
+
+                       case "freeze":
+                               var tr = self.parentNode.parentNode
+                               var img = tr.querySelector('img')
+                               if(img.getAttribute('src') != window.img["green"])
+                                       return info_message(output_list,"Container is not running!")
+
+                               loading(loader)
+                               new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(option, lxc_name), null,
+                               function(x, ec)
+                               {
+                                       loading(loader, 0)
+                                       if (!x || ec)
+                                               return info_message(output_list,"Action failed!")
+
+                                       set_status(img, "purple")
+                               })
+
+                       break
+
+                       case "unfreeze":
+                               var tr = self.parentNode.parentNode
+                               var img = tr.querySelector('img')
+
+                               if(img.getAttribute('src') != window.img["purple"])
+                                       return info_message(output_list,"Container is not frozen!")
+
+                               loading(loader)
+                               new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(option, lxc_name), null,
+                               function(x, ec)
+                               {
+                                       loading(loader, 0)
+                                       if (!x || ec)
+                                               return info_message(output_list,"Action failed!")
+
+                                       set_status(img, "green")
+                               })
+
+                       break
+
+                       case "reboot":
+                               var tr = self.parentNode.parentNode
+                               var img = tr.querySelector('img')
+                               if(img.getAttribute('src') != window.img["green"])
+                                       return info_message(output_list,"Container is not running!")
+
+                               if (!confirm("Are you sure?"))
+                                       return
+
+                               loading(loader)
+                               new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(option, lxc_name), null,
+                               function(x, ec)
+                               {
+                                       loading(loader, 0)
+                                       if (!x || ec)
+                                               return info_message(output_list,"Action failed!")
+
+                                       info_message(output_list,"LXC rebooted")
+                               })
+                       break
+               }
+
+       }
+
+       function set_empty(t_lxc_list)
+       {
+               if (document.getElementById('empty') !== null)
+                       return
+
+               var row_count = t_lxc_list.rows.length;
+               while(--row_count) t_lxc_list.deleteRow(row_count);
+
+               var row = t_lxc_list.insertRow(-1);
+               row.id = 'empty'
+               var cell = row.insertCell(0);
+               cell.colSpan = 4;
+               cell.innerHTML = '<em><br />There are no containers available yet.</em>';
+       }
+
+       function lxc_list_update()
+       {
+               XHR.poll(4, '<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/list', null,
+               function(x, data)
+               {
+                       if (!x) return;
+
+                       var lxc_count = Object.keys(data).length
+                       if (!data || !lxc_count)
+                               return set_empty(t_lxc_list)
+
+                       if (document.getElementById('empty') !== null)
+                               t_lxc_list.deleteRow(1);
+
+                       var lxcs = t_lxc_list.querySelectorAll('td[data-id]')
+                       var lxc_name_table = {}
+                       for (var i = 0, len = lxcs.length; i < len; i++)
+                       {
+                               var lxc_name = lxcs[i].getAttribute('data-id')
+                               if (!(lxc_name in data))
+                               {
+                                       var row = t_lxc_list.querySelector("[data-id='" + lxc_name + "']").parentNode
+                                       row.parentNode.removeChild(row)
+                                       continue
+                               }
+
+                               lxc_name_table[lxc_name] = lxcs[i].parentNode.querySelector('img')
+                       }
+
+                       for(var key in data)
+                       {
+                               var lxc_name = key
+                               var state = window.states[data[key]]
+
+                               if (!(lxc_name in lxc_name_table))
+                                       lxc_create_template(lxc_name, state)
+
+                               else if (state != get_status(lxc_name_table[lxc_name]))
+                                       set_status(lxc_name_table[lxc_name], state)
+                       }
+
+               })
+       }
+
+       function loading(elem, state)
+       {
+               state = (typeof state === 'undefined') ? 1 : state
+
+               if (state === 1)
+                       elem.innerHTML = loader_html
+               else
+                       setTimeout(function() { elem.innerHTML = ''}, 1000)
+       }
+
+       function set_status(elem, state)
+       {
+               state = (typeof state === 'undefined') ? 1 : state
+
+               setTimeout(function() { elem.setAttribute('src', window.img[state])}, 300)
+       }
+
+       function get_status(elem)
+       {
+               var src = elem.getAttribute('src')
+
+               for (var i in img)
+               {
+                       if (img[i] == src)
+                               return i
+               }
+       }
+
+       function info_message(output, msg, timeout)
+       {
+               timeout = timeout || 3000
+               output.innerHTML = msg
+               clearTimeout(timeout_msg)
+               timeout_msg = setTimeout(function(){ output.innerHTML=""}, timeout);
+       }
+
+       lxc_list_update()
+
+       new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_get_downloadable', null,
+       function(x, data)
+       {
+               if (!x) return;
+
+               var lxc_count = Object.keys(data).length
+               if (!data || !lxc_count) return;
+               var select = document.getElementById("s_template");
+               for(var key in data)
+               {
+                       var option = document.createElement('option');
+                       option.value = data[key];
+                       option.text = data[key].replace(/[_:]/g, ' ');
+                       select.add(option, -1);
+               }
+       })
+
+//]]></script>
diff --git a/applications/luci-app-lxc/root/etc/config/lxc b/applications/luci-app-lxc/root/etc/config/lxc
new file mode 100644 (file)
index 0000000..5572c73
--- /dev/null
@@ -0,0 +1,6 @@
+#
+# lxc uci configuration
+#
+
+config lxc 'lxc'
+       option url 'virtualwrt.org/containers/'
index 68f7a5a..62ce25e 100644 (file)
@@ -103,10 +103,7 @@ uci:foreach("wireless", "wifi-device", function(section)
 
        -- Channel selection
 
-       if hwtype == "atheros" then
-               local cc = util.trim(sys.exec("grep -i '" .. syscc .. "' /lib/wifi/cc_translate.txt |cut -d ' ' -f 2")) or 0
-               sys.exec('"echo " .. cc .. " > /proc/sys/dev/" .. device .. "/countrycode"')
-       elseif hwtype == "mac80211" then
+       if hwtype == "mac80211" then
                sys.exec("iw reg set " .. syscc)
        elseif hwtype == "broadcom" then
                sys.exec ("wlc country " .. syscc)
index a2238e5..9421e02 100644 (file)
@@ -1,17 +1,17 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2011-10-11 00:23+0200\n"
-"PO-Revision-Date: 2014-03-17 10:01+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-02-20 18:00-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"Language-Team: \n"
 
 msgid "Activate or deactivate IPv6 config globally."
 msgstr "Habilita e desabilita a configuração IPv6 globalmente."
@@ -70,7 +70,6 @@ msgstr "Endereço IPv6 da rede em malha"
 msgid "Mesh Wizard"
 msgstr "Assistente de Configuração da Rede em Malha"
 
-#, fuzzy
 msgid ""
 "Note: this will set up this interface for mesh operation, i.e. add it to "
 "zone 'freifunk' and enable olsr."
diff --git a/applications/luci-app-mjpg-streamer/po/pt-br/mjpg-streamer.po b/applications/luci-app-mjpg-streamer/po/pt-br/mjpg-streamer.po
new file mode 100644 (file)
index 0000000..28bfa18
--- /dev/null
@@ -0,0 +1,172 @@
+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 "Allow ringbuffer to exceed limit by this amount"
+msgstr "Permitir que o buffer em anel exceda o limite por essa quantidade"
+
+msgid "Ask for username and password on connect"
+msgstr "Pergunte por um usuário e senha na conexão"
+
+msgid "Authentication required"
+msgstr "Requer autenticação"
+
+msgid "Auto"
+msgstr "Automático"
+
+msgid "Automatic disabling of MJPEG mode"
+msgstr "Desativação automática do modo MJPEG"
+
+msgid "Blink"
+msgstr "Pisca"
+
+msgid "Check to save the stream to an mjpeg file"
+msgstr "Marque para salvar o fluxo em um arquivo MJPEG"
+
+msgid "Command to run"
+msgstr "Comando para executar:"
+
+msgid "Device"
+msgstr "Dispositivo"
+
+msgid "Do not initalize dynctrls of Linux-UVC driver"
+msgstr "Não inicie o dynctrls do driver do Linux-UVC"
+
+msgid "Don't initalize dynctrls"
+msgstr "Não inicia o dynctrls"
+
+msgid "Drop frames smaller then this limit"
+msgstr "Descarte quadros menores que este limite"
+
+msgid "Enable MJPG-streamer"
+msgstr "Ativa o MJPG-streamer"
+
+msgid "Enable YUYV format"
+msgstr "Ativar Formato YUYV"
+
+msgid "Enabled"
+msgstr "Habilitado"
+
+msgid "Exceed"
+msgstr "Ultrapassado"
+
+msgid ""
+"Execute command after saving picture. Mjpg-streamer parse the filename as "
+"first parameter to your script."
+msgstr ""
+"Execute o comando depois de salvar a imagem. Mjpg-streamer passa o nome do "
+"arquivo como primeiro parâmetro para o comando."
+
+msgid "File input"
+msgstr "Entrada do arquivo"
+
+msgid "File output"
+msgstr "Saída do arquivo"
+
+msgid "Folder"
+msgstr "Pasta"
+
+msgid "Folder that contains webpages"
+msgstr "Pasta que contém páginas web"
+
+msgid "Frames per second"
+msgstr "Quadros por segundos"
+
+msgid "General"
+msgstr "Geral"
+
+msgid "HTTP output"
+msgstr "Saída HTTP"
+
+msgid "Input plugin"
+msgstr "Plugins de entrada"
+
+msgid "Interval between saving pictures"
+msgstr "Intervalo entre o salvamento das imagens"
+
+msgid "JPEG compression quality"
+msgstr "Qualidade da compressão JPEG"
+
+msgid "Led control"
+msgstr "Controle de LED"
+
+msgid "MJPG-streamer"
+msgstr "MJPG-streamer"
+
+msgid "Max. number of pictures to hold"
+msgstr "Número máximo de imagens a serem mantidas"
+
+msgid "Mjpeg output"
+msgstr "Saída Mjpeg"
+
+msgid "Off"
+msgstr "Desligado"
+
+msgid "On"
+msgstr "Ligado"
+
+msgid "Output plugin"
+msgstr "Plugin de saída"
+
+msgid "Password"
+msgstr "Senha"
+
+msgid "Plugin settings"
+msgstr "Configurações do Plugin"
+
+msgid "Port"
+msgstr "Porta"
+
+msgid "Resolution"
+msgstr "Resolução"
+
+msgid "Ring buffer size"
+msgstr "Tamanho do buffer em anel"
+
+msgid "Set folder to save pictures"
+msgstr "Definir pasta para salvas as imagens"
+
+msgid "Set the inteval in millisecond"
+msgstr "Defina o intervalo em milisegundos"
+
+msgid ""
+"Set the minimum size if the webcam produces small-sized garbage frames. May "
+"happen under low light conditions"
+msgstr ""
+"Defina o tamanho mínimo se a webcam produz quadros lixo de tamanho pequeno. "
+"Pode acontecer sob condições de pouca luz"
+
+msgid ""
+"Set the quality in percent. This setting activates YUYV format, disables "
+"MJPEG"
+msgstr ""
+"Defina a qualidade em porcentagem. Esta definição ativa o formato YUYV, "
+"desativa MJPEG"
+
+msgid "TCP port for this HTTP server"
+msgstr "Porta TCP para este servidor HTTP"
+
+msgid "UVC input"
+msgstr "Dispositivo UVC de entrada"
+
+msgid "Username"
+msgstr "Usuário"
+
+msgid "WWW folder"
+msgstr "Pasta WWW"
+
+msgid ""
+"mjpg streamer is a streaming application for Linux-UVC compatible webcams"
+msgstr ""
+"Mjpg streamer é uma aplicação de streaming para webcams compatíveis com o "
+"Linux-UVC"
diff --git a/applications/luci-app-mwan3/Makefile b/applications/luci-app-mwan3/Makefile
new file mode 100644 (file)
index 0000000..d65cd3a
--- /dev/null
@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2017 Dan Luedtke <mail@danrl.com>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LuCI support for the MWAN3 multiwan hotplug script
+LUCI_DEPENDS:=+mwan3 +luci-mod-admin-full +luci-app-firewall +luci-lib-nixio
+LUCI_PKGARCH:=all
+PKG_LICENSE:=GPLv2
+
+PKG_MAINTAINER:=Aedan Renner <chipdankly@gmail.com> \
+               Florian Eckert <fe@dev.tdt.de>
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-mwan3/luasrc/controller/mwan3.lua b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
new file mode 100644 (file)
index 0000000..d3fd150
--- /dev/null
@@ -0,0 +1,331 @@
+module("luci.controller.mwan3", package.seeall)
+
+sys = require "luci.sys"
+ut = require "luci.util"
+
+ip = "/usr/bin/ip -4 "
+
+function index()
+       if not nixio.fs.access("/etc/config/mwan3") then
+               return
+       end
+
+       entry({"admin", "network", "mwan"},
+               alias("admin", "network", "mwan", "overview"),
+               _("Load Balancing"), 600)
+
+       entry({"admin", "network", "mwan", "overview"},
+               alias("admin", "network", "mwan", "overview", "overview_interface"),
+               _("Overview"), 10)
+       entry({"admin", "network", "mwan", "overview", "overview_interface"},
+               template("mwan/overview_interface"))
+       entry({"admin", "network", "mwan", "overview", "interface_status"},
+               call("interfaceStatus"))
+       entry({"admin", "network", "mwan", "overview", "overview_detailed"},
+               template("mwan/overview_detailed"))
+       entry({"admin", "network", "mwan", "overview", "detailed_status"},
+               call("detailedStatus"))
+
+       entry({"admin", "network", "mwan", "configuration"},
+               alias("admin", "network", "mwan", "configuration", "interface"),
+               _("Configuration"), 20)
+       entry({"admin", "network", "mwan", "configuration", "interface"},
+               arcombine(cbi("mwan/interface"), cbi("mwan/interfaceconfig")),
+               _("Interfaces"), 10).leaf = true
+       entry({"admin", "network", "mwan", "configuration", "member"},
+               arcombine(cbi("mwan/member"), cbi("mwan/memberconfig")),
+               _("Members"), 20).leaf = true
+       entry({"admin", "network", "mwan", "configuration", "policy"},
+               arcombine(cbi("mwan/policy"), cbi("mwan/policyconfig")),
+               _("Policies"), 30).leaf = true
+       entry({"admin", "network", "mwan", "configuration", "rule"},
+               arcombine(cbi("mwan/rule"), cbi("mwan/ruleconfig")),
+               _("Rules"), 40).leaf = true
+
+       entry({"admin", "network", "mwan", "advanced"},
+               alias("admin", "network", "mwan", "advanced", "hotplugscript"),
+               _("Advanced"), 100)
+       entry({"admin", "network", "mwan", "advanced", "hotplugscript"},
+               form("mwan/advanced_hotplugscript"))
+       entry({"admin", "network", "mwan", "advanced", "mwanconfig"},
+               form("mwan/advanced_mwanconfig"))
+       entry({"admin", "network", "mwan", "advanced", "networkconfig"},
+               form("mwan/advanced_networkconfig"))
+       entry({"admin", "network", "mwan", "advanced", "wirelessconfig"},
+               form("mwan/advanced_wirelessconfig"))
+       entry({"admin", "network", "mwan", "advanced", "diagnostics"},
+               template("mwan/advanced_diagnostics"))
+       entry({"admin", "network", "mwan", "advanced", "diagnostics_display"},
+               call("diagnosticsData"), nil).leaf = true
+       entry({"admin", "network", "mwan", "advanced", "troubleshooting"},
+               template("mwan/advanced_troubleshooting"))
+       entry({"admin", "network", "mwan", "advanced", "troubleshooting_display"},
+               call("troubleshootingData"))
+end
+
+function getInterfaceStatus(ruleNumber, interfaceName)
+       if ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interfaceName .. ".enabled")) == "1" then
+               if ut.trim(sys.exec(ip .. "route list table " .. ruleNumber)) ~= "" then
+                       if ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interfaceName .. ".track_ip")) ~= "" then
+                               return "online"
+                       else
+                               return "notMonitored"
+                       end
+               else
+                       return "offline"
+               end
+       else
+               return "notEnabled"
+       end
+end
+
+function getInterfaceName()
+       local ruleNumber, status = 0, ""
+       uci.cursor():foreach("mwan3", "interface",
+               function (section)
+                       ruleNumber = ruleNumber+1
+                       status = status .. section[".name"] .. "[" .. getInterfaceStatus(ruleNumber, section[".name"]) .. "]"
+               end
+       )
+       return status
+end
+
+function interfaceStatus()
+       local ntm = require "luci.model.network".init()
+
+       local mArray = {}
+
+       -- overview status
+       local statusString = getInterfaceName()
+       if statusString ~= "" then
+               mArray.wans = {}
+               wansid = {}
+
+               for wanName, interfaceState in string.gfind(statusString, "([^%[]+)%[([^%]]+)%]") do
+                       local wanInterfaceName = ut.trim(sys.exec("uci -q -p /var/state get network." .. wanName .. ".ifname"))
+                               if wanInterfaceName == "" then
+                                       wanInterfaceName = "X"
+                               end
+                       local wanDeviceLink = ntm:get_interface(wanInterfaceName)
+                               wanDeviceLink = wanDeviceLink and wanDeviceLink:get_network()
+                               wanDeviceLink = wanDeviceLink and wanDeviceLink:adminlink() or "#"
+                       wansid[wanName] = #mArray.wans + 1
+                       mArray.wans[wansid[wanName]] = { name = wanName, link = wanDeviceLink, ifname = wanInterfaceName, status = interfaceState }
+               end
+       end
+
+       -- overview status log
+       local mwanLog = ut.trim(sys.exec("logread | grep mwan3 | tail -n 50 | sed 'x;1!H;$!d;x' 2>/dev/null"))
+       if mwanLog ~= "" then
+               mArray.mwanlog = { mwanLog }
+       end
+
+       luci.http.prepare_content("application/json")
+       luci.http.write_json(mArray)
+end
+
+function detailedStatus()
+       local mArray = {}
+
+       -- detailed mwan status
+       local detailStatusInfo = ut.trim(sys.exec("/usr/sbin/mwan3 status"))
+       if detailStatusInfo ~= "" then
+               mArray.mwandetail = { detailStatusInfo }
+       end
+
+       luci.http.prepare_content("application/json")
+       luci.http.write_json(mArray)
+end
+
+function diagnosticsData(interface, tool, task)
+       function getInterfaceNumber()
+               local number = 0
+               uci.cursor():foreach("mwan3", "interface",
+                       function (section)
+                               number = number+1
+                               if section[".name"] == interface then
+                                       interfaceNumber = number
+                               end
+                       end
+               )
+       end
+
+       local mArray = {}
+
+       local results = ""
+       if tool == "service" then
+               os.execute("/usr/sbin/mwan3 " .. task)
+               if task == "restart" then
+                       results = "MWAN3 restarted"
+               elseif task == "stop" then
+                       results = "MWAN3 stopped"
+               else
+                       results = "MWAN3 started"
+               end
+       else
+               local interfaceDevice = ut.trim(sys.exec("uci -q -p /var/state get network." .. interface .. ".ifname"))
+               if interfaceDevice ~= "" then
+                       if tool == "ping" then
+                               local gateway = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $2}'"))
+                               if gateway ~= "" then
+                                       if task == "gateway" then
+                                               local pingCommand = "ping -c 3 -W 2 -I " .. interfaceDevice .. " " .. gateway
+                                               results = pingCommand .. "\n\n" .. sys.exec(pingCommand)
+                                       else
+                                               local tracked = ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interface .. ".track_ip"))
+                                               if tracked ~= "" then
+                                                       for z in tracked:gmatch("[^ ]+") do
+                                                               local pingCommand = "ping -c 3 -W 2 -I " .. interfaceDevice .. " " .. z
+                                                               results = results .. pingCommand .. "\n\n" .. sys.exec(pingCommand) .. "\n\n"
+                                                       end
+                                               else
+                                                       results = "No tracking IP addresses configured on " .. interface
+                                               end
+                                       end
+                               else
+                                       results = "No default gateway for " .. interface .. " found. Default route does not exist or is configured incorrectly"
+                               end
+                       elseif tool == "rulechk" then
+                               getInterfaceNumber()
+                               local rule1 = sys.exec(ip .. "rule | grep $(echo $((" .. interfaceNumber .. " + 1000)))")
+                               local rule2 = sys.exec(ip .. "rule | grep $(echo $((" .. interfaceNumber .. " + 2000)))")
+                               if rule1 ~= "" and rule2 ~= "" then
+                                       results = "All required interface IP rules found:\n\n" .. rule1 .. rule2
+                               elseif rule1 ~= "" or rule2 ~= "" then
+                                       results = "Missing 1 of the 2 required interface IP rules\n\n\nRules found:\n\n" .. rule1 .. rule2
+                               else
+                                       results = "Missing both of the required interface IP rules"
+                               end
+                       elseif tool == "routechk" then
+                               getInterfaceNumber()
+                               local routeTable = sys.exec(ip .. "route list table " .. interfaceNumber)
+                               if routeTable ~= "" then
+                                       results = "Interface routing table " .. interfaceNumber .. " was found:\n\n" .. routeTable
+                               else
+                                       results = "Missing required interface routing table " .. interfaceNumber
+                               end
+                       elseif tool == "hotplug" then
+                               if task == "ifup" then
+                                       os.execute("/usr/sbin/mwan3 ifup " .. interface)
+                                       results = "Hotplug ifup sent to interface " .. interface .. "..."
+                               else
+                                       os.execute("/usr/sbin/mwan3 ifdown " .. interface)
+                                       results = "Hotplug ifdown sent to interface " .. interface .. "..."
+                               end
+                       end
+               else
+                       results = "Unable to perform diagnostic tests on " .. interface .. ". There is no physical or virtual device associated with this interface"
+               end
+       end
+       if results ~= "" then
+               results = ut.trim(results)
+               mArray.diagnostics = { results }
+       end
+
+       luci.http.prepare_content("application/json")
+       luci.http.write_json(mArray)
+end
+
+function troubleshootingData()
+       local ver = require "luci.version"
+
+       local mArray = {}
+
+       -- software versions
+       local wrtRelease = ut.trim(ver.distversion)
+               if wrtRelease ~= "" then
+                       wrtRelease = "OpenWrt - " .. wrtRelease
+               else
+                       wrtRelease = "OpenWrt - unknown"
+               end
+       local luciRelease = ut.trim(ver.luciversion)
+               if luciRelease ~= "" then
+                       luciRelease = "\nLuCI - " .. luciRelease
+               else
+                       luciRelease = "\nLuCI - unknown"
+               end
+       local mwanVersion = ut.trim(sys.exec("opkg info mwan3 | grep Version | awk '{print $2}'"))
+               if mwanVersion ~= "" then
+                       mwanVersion = "\n\nmwan3 - " .. mwanVersion
+               else
+                       mwanVersion = "\n\nmwan3 - unknown"
+               end
+       local mwanLuciVersion = ut.trim(sys.exec("opkg info luci-app-mwan3 | grep Version | awk '{print $2}'"))
+               if mwanLuciVersion ~= "" then
+                       mwanLuciVersion = "\nmwan3-luci - " .. mwanLuciVersion
+               else
+                       mwanLuciVersion = "\nmwan3-luci - unknown"
+               end
+       mArray.versions = { wrtRelease .. luciRelease .. mwanVersion .. mwanLuciVersion }
+
+       -- mwan config
+       local mwanConfig = ut.trim(sys.exec("cat /etc/config/mwan3"))
+               if mwanConfig == "" then
+                       mwanConfig = "No data found"
+               end
+       mArray.mwanconfig = { mwanConfig }
+
+       -- network config
+       local networkConfig = ut.trim(sys.exec("cat /etc/config/network | sed -e 's/.*username.*/       USERNAME HIDDEN/' -e 's/.*password.*/   PASSWORD HIDDEN/'"))
+               if networkConfig == "" then
+                       networkConfig = "No data found"
+               end
+       mArray.netconfig = { networkConfig }
+
+       -- wireless config
+       local wirelessConfig = ut.trim(sys.exec("cat /etc/config/wireless | sed -e 's/.*username.*/     USERNAME HIDDEN/' -e 's/.*password.*/   PASSWORD HIDDEN/' -e 's/.*key.*/        KEY HIDDEN/'"))
+               if wirelessConfig == "" then
+                       wirelessConfig = "No data found"
+               end
+       mArray.wificonfig = { wirelessConfig }
+       
+       -- ifconfig
+       local ifconfig = ut.trim(sys.exec("ifconfig"))
+               if ifconfig == "" then
+                       ifconfig = "No data found"
+               end
+       mArray.ifconfig = { ifconfig }
+
+       -- route -n
+       local routeShow = ut.trim(sys.exec("route -n"))
+               if routeShow == "" then
+                       routeShow = "No data found"
+               end
+       mArray.routeshow = { routeShow }
+
+       -- ip rule show
+       local ipRuleShow = ut.trim(sys.exec(ip .. "rule show"))
+               if ipRuleShow == "" then
+                       ipRuleShow = "No data found"
+               end
+       mArray.iprule = { ipRuleShow }
+
+       -- ip route list table 1-250
+       local routeList, routeString = ut.trim(sys.exec(ip .. "rule | sed 's/://g' 2>/dev/null | awk '$1>=2001 && $1<=2250' | awk '{print $NF}'")), ""
+               if routeList ~= "" then
+                       for line in routeList:gmatch("[^\r\n]+") do
+                               routeString = routeString .. line .. "\n" .. sys.exec(ip .. "route list table " .. line)
+                       end
+                       routeString = ut.trim(routeString)
+               else
+                       routeString = "No data found"
+               end
+       mArray.routelist = { routeString }
+
+       -- default firewall output policy
+       local firewallOut = ut.trim(sys.exec("uci -q -p /var/state get firewall.@defaults[0].output"))
+               if firewallOut == "" then
+                       firewallOut = "No data found"
+               end
+       mArray.firewallout = { firewallOut }
+
+       -- iptables
+       local iptables = ut.trim(sys.exec("iptables -L -t mangle -v -n"))
+               if iptables == "" then
+                       iptables = "No data found"
+               end
+       mArray.iptables = { iptables }
+
+       luci.http.prepare_content("application/json")
+       luci.http.write_json(mArray)
+end
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua
new file mode 100644 (file)
index 0000000..0e7b8b1
--- /dev/null
@@ -0,0 +1,55 @@
+-- ------ hotplug script configuration ------ --
+
+fs = require "nixio.fs"
+sys = require "luci.sys"
+ut = require "luci.util"
+
+script = "/etc/hotplug.d/iface/16-mwancustom"
+scriptBackup = "/etc/hotplug.d/iface/16-mwancustombak"
+
+if luci.http.formvalue("cbid.luci.1._restorebak") then -- restore button has been clicked
+       luci.http.redirect(luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript") .. "?restore=yes")
+elseif luci.http.formvalue("restore") == "yes" then -- restore script from backup
+       os.execute("cp -f " .. scriptBackup .. " " .. script)
+end
+
+
+m5 = SimpleForm("luci", nil)
+       m5:append(Template("mwan/advanced_hotplugscript")) -- highlight current tab
+
+f = m5:section(SimpleSection, nil,
+       translate("This section allows you to modify the contents of /etc/hotplug.d/iface/16-mwancustom<br />" ..
+       "This is useful for running system commands and/or scripts based on interface ifup or ifdown hotplug events<br /><br />" ..
+       "Notes:<br />" ..
+       "The first line of the script must be &#34;#!/bin/sh&#34; without quotes<br />" ..
+       "Lines beginning with # are comments and are not executed<br /><br />" ..
+       "Available variables:<br />" ..
+       "$ACTION is the hotplug event (ifup, ifdown)<br />" ..
+       "$INTERFACE is the interface name (wan1, wan2, etc.)<br />" ..
+       "$DEVICE is the device name attached to the interface (eth0.1, eth1, etc.)"))
+
+
+restore = f:option(Button, "_restorebak", translate("Restore default hotplug script"))
+       restore.inputtitle = translate("Restore...")
+       restore.inputstyle = "apply"
+
+t = f:option(TextValue, "lines")
+       t.rmempty = true
+       t.rows = 20
+
+       function t.cfgvalue()
+               local hps = fs.readfile(script)
+               if not hps or hps == "" then -- if script does not exist or is blank restore from backup
+                       sys.call("cp -f " .. scriptBackup .. " " .. script)
+                       return fs.readfile(script)
+               else
+                       return hps
+               end
+       end
+
+       function t.write(self, section, data) -- format and write new data to script
+               return fs.writefile(script, ut.trim(data:gsub("\r\n", "\n")) .. "\n")
+       end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua
new file mode 100644 (file)
index 0000000..e0a99e8
--- /dev/null
@@ -0,0 +1,32 @@
+-- ------ mwan configuration ------ --
+
+ut = require "luci.util"
+
+mwanConfig = "/etc/config/mwan3"
+
+
+m5 = SimpleForm("luci", nil)
+       m5:append(Template("mwan/advanced_mwanconfig")) -- highlight current tab
+
+
+f = m5:section(SimpleSection, nil,
+       translate("This section allows you to modify the contents of /etc/config/mwan3"))
+
+t = f:option(TextValue, "lines")
+       t.rmempty = true
+       t.rows = 20
+
+       function t.cfgvalue()
+               return nixio.fs.readfile(mwanConfig) or ""
+       end
+
+       function t.write(self, section, data) -- format and write new data to script
+               return nixio.fs.writefile(mwanConfig, "\n" .. ut.trim(data:gsub("\r\n", "\n")) .. "\n")
+       end
+
+       function f.handle(self, state, data)
+               return true
+       end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua
new file mode 100644 (file)
index 0000000..b93d897
--- /dev/null
@@ -0,0 +1,32 @@
+-- ------ network configuration ------ --
+
+ut = require "luci.util"
+
+networkConfig = "/etc/config/network"
+
+
+m5 = SimpleForm("networkconf", nil)
+       m5:append(Template("mwan/advanced_networkconfig")) -- highlight current tab
+
+
+f = m5:section(SimpleSection, nil,
+       translate("This section allows you to modify the contents of /etc/config/network"))
+
+t = f:option(TextValue, "lines")
+       t.rmempty = true
+       t.rows = 20
+
+       function t.cfgvalue()
+               return nixio.fs.readfile(networkConfig) or ""
+       end
+
+       function t.write(self, section, data) -- format and write new data to script
+               return nixio.fs.writefile(networkConfig, "\n" .. ut.trim(data:gsub("\r\n", "\n")) .. "\n")
+       end
+
+       function f.handle(self, state, data)
+               return true
+       end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua
new file mode 100644 (file)
index 0000000..95e9f7c
--- /dev/null
@@ -0,0 +1,32 @@
+-- ------ wireless configuration ------ --
+
+ut = require "luci.util"
+
+wirelessConfig = "/etc/config/wireless"
+
+
+m5 = SimpleForm("wirelessconf", nil)
+       m5:append(Template("mwan/advanced_wirelessconfig")) -- highlight current tab
+
+
+f = m5:section(SimpleSection, nil,
+       translate("This section allows you to modify the contents of /etc/config/wireless"))
+
+t = f:option(TextValue, "lines")
+       t.rmempty = true
+       t.rows = 20
+
+       function t.cfgvalue()
+               return nixio.fs.readfile(wirelessConfig) or ""
+       end
+
+       function t.write(self, section, data) -- format and write new data to script
+               return nixio.fs.writefile(wirelessConfig, "\n" .. ut.trim(data:gsub("\r\n", "\n")) .. "\n")
+       end
+
+       function f.handle(self, state, data)
+               return true
+       end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua
new file mode 100644 (file)
index 0000000..7e863a3
--- /dev/null
@@ -0,0 +1,266 @@
+-- ------ extra functions ------ --
+
+function interfaceCheck() -- find issues with too many interfaces, reliability and metric
+       uci.cursor():foreach("mwan3", "interface",
+               function (section)
+                       local interfaceName = section[".name"]
+                       interfaceNumber = interfaceNumber+1 -- count number of mwan interfaces configured
+                       -- create list of metrics for none and duplicate checking
+                       local metricValue = ut.trim(sys.exec("uci -p /var/state get network." .. interfaceName .. ".metric"))
+                       if metricValue == "" then
+                               errorFound = 1
+                               errorNoMetricList = errorNoMetricList .. interfaceName .. " "
+                       else
+                               metricList = metricList .. interfaceName .. " " .. metricValue .. "\n"
+                       end
+                       -- check if any interfaces have a higher reliability requirement than tracking IPs configured
+                       local trackingNumber = tonumber(ut.trim(sys.exec("echo $(uci -p /var/state get mwan3." .. interfaceName .. ".track_ip) | wc -w")))
+                       if trackingNumber > 0 then
+                               local reliabilityNumber = tonumber(ut.trim(sys.exec("uci -p /var/state get mwan3." .. interfaceName .. ".reliability")))
+                               if reliabilityNumber and reliabilityNumber > trackingNumber then
+                                       errorFound = 1
+                                       errorReliabilityList = errorReliabilityList .. interfaceName .. " "
+                               end
+                       end
+                       -- check if any interfaces are not properly configured in /etc/config/network or have no default route in main routing table
+                       if ut.trim(sys.exec("uci -p /var/state get network." .. interfaceName)) == "interface" then
+                               local interfaceDevice = ut.trim(sys.exec("uci -p /var/state get network." .. interfaceName .. ".ifname"))
+                               if interfaceDevice == "uci: Entry not found" or interfaceDevice == "" then
+                                       errorFound = 1
+                                       errorNetConfigList = errorNetConfigList .. interfaceName .. " "
+                                       errorRouteList = errorRouteList .. interfaceName .. " "
+                               else
+                                       local routeCheck = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $1}'"))
+                                       if routeCheck == "" then
+                                               errorFound = 1
+                                               errorRouteList = errorRouteList .. interfaceName .. " "
+                                       end
+                               end
+                       else
+                               errorFound = 1
+                               errorNetConfigList = errorNetConfigList .. interfaceName .. " "
+                               errorRouteList = errorRouteList .. interfaceName .. " "
+                       end
+               end
+       )
+       -- check if any interfaces have duplicate metrics
+       local metricDuplicateNumbers = sys.exec("echo '" .. metricList .. "' | awk '{print $2}' | uniq -d")
+       if metricDuplicateNumbers ~= "" then
+               errorFound = 1
+               local metricDuplicates = ""
+               for line in metricDuplicateNumbers:gmatch("[^\r\n]+") do
+                       metricDuplicates = sys.exec("echo '" .. metricList .. "' | grep '" .. line .. "' | awk '{print $1}'")
+                       errorDuplicateMetricList = errorDuplicateMetricList .. metricDuplicates
+               end
+               errorDuplicateMetricList = sys.exec("echo '" .. errorDuplicateMetricList .. "' | tr '\n' ' '")
+       end
+end
+
+function interfaceWarnings() -- display status and warning messages at the top of the page
+       local warnings = ""
+       if interfaceNumber <= 250 then
+               warnings = "<strong>" .. translatef("There are currently %d of 250 supported interfaces configured", interfaceNumber) .. "</strong>"
+       else
+               warnings = "<font color=\"ff0000\"><strong>" .. translatef("WARNING: %d interfaces are configured exceeding the maximum of 250!", interfaceNumber) .. "</strong></font>"
+       end
+       if errorReliabilityList ~= " " then
+               warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces have a higher reliability requirement than there are tracking IP addresses!") .. "</strong></font>"
+       end
+       if errorRouteList ~= " " then
+               warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces have no default route in the main routing table!") .. "</strong></font>"
+       end
+       if errorNetConfigList ~= " " then
+               warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces are configured incorrectly or not at all in /etc/config/network!") .. "</strong></font>"
+       end
+       if errorNoMetricList ~= " " then
+               warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces have no metric configured in /etc/config/network!") .. "</strong></font>"
+       end
+       if errorDuplicateMetricList ~= " " then
+               warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces have duplicate metrics configured in /etc/config/network!") .. "</strong></font>"
+       end
+       return warnings
+end
+
+-- ------ interface configuration ------ --
+
+dsp = require "luci.dispatcher"
+sys = require "luci.sys"
+ut = require "luci.util"
+
+interfaceNumber = 0
+metricList = ""
+errorFound = 0
+errorDuplicateMetricList = " "
+errorNetConfigList = " "
+errorNoMetricList = " "
+errorReliabilityList = " "
+errorRouteList = " "
+interfaceCheck()
+
+
+m5 = Map("mwan3", translate("MWAN Interface Configuration"),
+       interfaceWarnings())
+       m5:append(Template("mwan/config_css"))
+
+
+mwan_interface = m5:section(TypedSection, "interface", translate("Interfaces"),
+       translate("MWAN supports up to 250 physical and/or logical interfaces<br />" ..
+       "MWAN requires that all interfaces have a unique metric configured in /etc/config/network<br />" ..
+       "Names must match the interface name found in /etc/config/network (see advanced tab)<br />" ..
+       "Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />" ..
+       "Interfaces may not share the same name as configured members, policies or rules"))
+       mwan_interface.addremove = true
+       mwan_interface.dynamic = false
+       mwan_interface.sectionhead = "Interface"
+       mwan_interface.sortable = true
+       mwan_interface.template = "cbi/tblsection"
+       mwan_interface.extedit = dsp.build_url("admin", "network", "mwan", "configuration", "interface", "%s")
+       function mwan_interface.create(self, section)
+               TypedSection.create(self, section)
+               m5.uci:save("mwan3")
+               luci.http.redirect(dsp.build_url("admin", "network", "mwan", "configuration", "interface", section))
+       end
+
+
+enabled = mwan_interface:option(DummyValue, "enabled", translate("Enabled"))
+       enabled.rawhtml = true
+       function enabled.cfgvalue(self, s)
+               if self.map:get(s, "enabled") == "1" then
+                       return "Yes"
+               else
+                       return "No"
+               end
+       end
+
+track_ip = mwan_interface:option(DummyValue, "track_ip", translate("Tracking IP"))
+       track_ip.rawhtml = true
+       function track_ip.cfgvalue(self, s)
+               tracked = self.map:get(s, "track_ip")
+               if tracked then
+                       local ipList = ""
+                       for k,v in pairs(tracked) do
+                               ipList = ipList .. v .. "<br />"
+                       end
+                       return ipList
+               else
+                       return "&#8212;"
+               end
+       end
+
+reliability = mwan_interface:option(DummyValue, "reliability", translate("Tracking reliability"))
+       reliability.rawhtml = true
+       function reliability.cfgvalue(self, s)
+               if tracked then
+                       return self.map:get(s, "reliability") or "&#8212;"
+               else
+                       return "&#8212;"
+               end
+       end
+
+count = mwan_interface:option(DummyValue, "count", translate("Ping count"))
+       count.rawhtml = true
+       function count.cfgvalue(self, s)
+               if tracked then
+                       return self.map:get(s, "count") or "&#8212;"
+               else
+                       return "&#8212;"
+               end
+       end
+
+timeout = mwan_interface:option(DummyValue, "timeout", translate("Ping timeout"))
+       timeout.rawhtml = true
+       function timeout.cfgvalue(self, s)
+               if tracked then
+                       local timeoutValue = self.map:get(s, "timeout")
+                       if timeoutValue then
+                               return timeoutValue .. "s"
+                       else
+                               return "&#8212;"
+                       end
+               else
+                       return "&#8212;"
+               end
+       end
+
+interval = mwan_interface:option(DummyValue, "interval", translate("Ping interval"))
+       interval.rawhtml = true
+       function interval.cfgvalue(self, s)
+               if tracked then
+                       local intervalValue = self.map:get(s, "interval")
+                       if intervalValue then
+                               return intervalValue .. "s"
+                       else
+                               return "&#8212;"
+                       end
+               else
+                       return "&#8212;"
+               end
+       end
+
+down = mwan_interface:option(DummyValue, "down", translate("Interface down"))
+       down.rawhtml = true
+       function down.cfgvalue(self, s)
+               if tracked then
+                       return self.map:get(s, "down") or "&#8212;"
+               else
+                       return "&#8212;"
+               end
+       end
+
+up = mwan_interface:option(DummyValue, "up", translate("Interface up"))
+       up.rawhtml = true
+       function up.cfgvalue(self, s)
+               if tracked then
+                       return self.map:get(s, "up") or "&#8212;"
+               else
+                       return "&#8212;"
+               end
+       end
+
+metric = mwan_interface:option(DummyValue, "metric", translate("Metric"))
+       metric.rawhtml = true
+       function metric.cfgvalue(self, s)
+               local metricValue = sys.exec("uci -p /var/state get network." .. s .. ".metric")
+               if metricValue ~= "" then
+                       return metricValue
+               else
+                       return "&#8212;"
+               end
+       end
+
+errors = mwan_interface:option(DummyValue, "errors", translate("Errors"))
+       errors.rawhtml = true
+       function errors.cfgvalue(self, s)
+               if errorFound == 1 then
+                       local mouseOver, lineBreak = "", ""
+                       if string.find(errorReliabilityList, " " .. s .. " ") then
+                               mouseOver = "Higher reliability requirement than there are tracking IP addresses"
+                               lineBreak = "&#10;&#10;"
+                       end
+                       if string.find(errorRouteList, " " .. s .. " ") then
+                               mouseOver = mouseOver .. lineBreak .. "No default route in the main routing table"
+                               lineBreak = "&#10;&#10;"
+                       end
+                       if string.find(errorNetConfigList, " " .. s .. " ") then
+                               mouseOver = mouseOver .. lineBreak .. "Configured incorrectly or not at all in /etc/config/network"
+                               lineBreak = "&#10;&#10;"
+                       end
+                       if string.find(errorNoMetricList, " " .. s .. " ") then
+                               mouseOver = mouseOver .. lineBreak .. "No metric configured in /etc/config/network"
+                               lineBreak = "&#10;&#10;"
+                       end
+                       if string.find(errorDuplicateMetricList, " " .. s .. " ") then
+                               mouseOver = mouseOver .. lineBreak .. "Duplicate metric configured in /etc/config/network"
+                       end
+                       if mouseOver == "" then
+                               return ""
+                       else
+                               return "<span title=\"" .. mouseOver .. "\"><img src=\"/luci-static/resources/cbi/reset.gif\" alt=\"error\"></img></span>"
+                       end
+               else
+                       return ""
+               end
+       end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
new file mode 100644 (file)
index 0000000..e7c16fd
--- /dev/null
@@ -0,0 +1,250 @@
+-- ------ extra functions ------ --
+
+function interfaceCheck()
+       metricValue = ut.trim(sys.exec("uci -p /var/state get network." .. arg[1] .. ".metric"))
+       if metricValue == "" then -- no metric
+               errorNoMetric = 1
+       else -- if metric exists create list of interface metrics to compare against for duplicates
+               uci.cursor():foreach("mwan3", "interface",
+                       function (section)
+                               local metricValue = ut.trim(sys.exec("uci -p /var/state get network." .. section[".name"] .. ".metric"))
+                               metricList = metricList .. section[".name"] .. " " .. metricValue .. "\n"
+                       end
+               )
+               -- compare metric against list
+               local metricDuplicateNumbers, metricDuplicates = sys.exec("echo '" .. metricList .. "' | awk '{print $2}' | uniq -d"), ""
+               for line in metricDuplicateNumbers:gmatch("[^\r\n]+") do
+                       metricDuplicates = sys.exec("echo '" .. metricList .. "' | grep '" .. line .. "' | awk '{print $1}'")
+                       errorDuplicateMetricList = errorDuplicateMetricList .. metricDuplicates
+               end
+               if sys.exec("echo '" .. errorDuplicateMetricList .. "' | grep -w " .. arg[1]) ~= "" then
+                       errorDuplicateMetric = 1
+               end
+       end
+       -- check if this interface has a higher reliability requirement than track IPs configured
+       local trackingNumber = tonumber(ut.trim(sys.exec("echo $(uci -p /var/state get mwan3." .. arg[1] .. ".track_ip) | wc -w")))
+       if trackingNumber > 0 then
+               local reliabilityNumber = tonumber(ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".reliability")))
+               if reliabilityNumber and reliabilityNumber > trackingNumber then
+                       errorReliability = 1
+               end
+       end
+       -- check if any interfaces are not properly configured in /etc/config/network or have no default route in main routing table
+       if ut.trim(sys.exec("uci -p /var/state get network." .. arg[1])) == "interface" then
+               local interfaceDevice = ut.trim(sys.exec("uci -p /var/state get network." .. arg[1] .. ".ifname"))
+               if interfaceDevice == "uci: Entry not found" or interfaceDevice == "" then
+                       errorNetConfig = 1
+                       errorRoute = 1
+               else
+                       local routeCheck = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $1}'"))
+                       if routeCheck == "" then
+                               errorRoute = 1
+                       end
+               end
+       else
+               errorNetConfig = 1
+               errorRoute = 1
+       end
+end
+
+function interfaceWarnings() -- display warning messages at the top of the page
+       local warns, lineBreak = "", ""
+       if errorReliability == 1 then
+               warns = "<font color=\"ff0000\"><strong>" .. translate("WARNING: this interface has a higher reliability requirement than there are tracking IP addresses!") .. "</strong></font>"
+               lineBreak = "<br /><br />"
+       end
+       if errorRoute == 1 then
+               warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>" .. translate("WARNING: this interface has no default route in the main routing table!") .. "</strong></font>"
+               lineBreak = "<br /><br />"
+       end
+       if errorNetConfig == 1 then
+               warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>" .. translate("WARNING: this interface is configured incorrectly or not at all in /etc/config/network!") .. "</strong></font>"
+               lineBreak = "<br /><br />"
+       end
+       if errorNoMetric == 1 then
+               warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>" .. translate("WARNING: this interface has no metric configured in /etc/config/network!") .. "</strong></font>"
+       elseif errorDuplicateMetric == 1 then
+               warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>" .. translate("WARNING: this and other interfaces have duplicate metrics configured in /etc/config/network!") .. "</strong></font>"
+       end
+       return warns
+end
+
+-- ------ interface configuration ------ --
+
+dsp = require "luci.dispatcher"
+sys = require "luci.sys"
+ut = require "luci.util"
+arg[1] = arg[1] or ""
+
+metricValue = ""
+metricList = ""
+errorDuplicateMetricList = ""
+errorNoMetric = 0
+errorDuplicateMetric = 0
+errorRoute = 0
+errorNetConfig = 0
+errorReliability = 0
+interfaceCheck()
+
+
+m5 = Map("mwan3", translatef("MWAN Interface Configuration - %s", arg[1]),
+       interfaceWarnings())
+       m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "interface")
+
+
+mwan_interface = m5:section(NamedSection, arg[1], "interface", "")
+       mwan_interface.addremove = false
+       mwan_interface.dynamic = false
+
+
+enabled = mwan_interface:option(ListValue, "enabled", translate("Enabled"))
+       enabled.default = "1"
+       enabled:value("1", translate("Yes"))
+       enabled:value("0", translate("No"))
+
+family = mwan_interface:option(ListValue, "family", translate("Internet Protocol"))
+       family.default = "ipv4"
+       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"
+
+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"))
+       reliability.datatype = "range(1, 100)"
+       reliability.default = "1"
+
+count = mwan_interface:option(ListValue, "count", translate("Ping count"))
+       count.default = "1"
+       count:value("1")
+       count:value("2")
+       count:value("3")
+       count:value("4")
+       count:value("5")
+
+size = mwan_interface:option(Value, "size", translate("Ping size"))
+       size.default = "56"
+       size:value("8")
+       size:value("24")
+       size:value("56")
+       size:value("120")
+       size:value("248")
+       size:value("504")
+       size:value("1016")
+       size:value("1472")
+       size:value("2040")
+       size.datatype = "range(1, 65507)"
+       size.rmempty = false
+       size.optional = false
+
+timeout = mwan_interface:option(ListValue, "timeout", translate("Ping timeout"))
+       timeout.default = "2"
+       timeout:value("1", translatef("%d second", 1))
+       timeout:value("2", translatef("%d seconds", 2))
+       timeout:value("3", translatef("%d seconds", 3))
+       timeout:value("4", translatef("%d seconds", 4))
+       timeout:value("5", translatef("%d seconds", 5))
+       timeout:value("6", translatef("%d seconds", 6))
+       timeout:value("7", translatef("%d seconds", 7))
+       timeout:value("8", translatef("%d seconds", 8))
+       timeout:value("9", translatef("%d seconds", 9))
+       timeout:value("10", translatef("%d seconds", 10))
+
+interval = mwan_interface:option(ListValue, "interval", translate("Ping interval"))
+       interval.default = "5"
+       interval:value("1", translatef("%d second", 1))
+       interval:value("3", translatef("%d seconds", 3))
+       interval:value("5", translatef("%d seconds", 5))
+       interval:value("10", translatef("%d seconds", 10))
+       interval:value("20", translatef("%d seconds", 20))
+       interval:value("30", translatef("%d seconds", 30))
+       interval:value("60", translatef("%d minute", 1))
+       interval:value("300", translatef("%d minutes", 5))
+       interval:value("600", translatef("%d minutes", 10))
+       interval:value("900", translatef("%d minutes", 15))
+       interval:value("1800", translatef("%d minutes", 30))
+       interval:value("3600", translatef("%d hour", 1))
+
+failure = mwan_interface:option(Value, "failure_interval", translate("Failure interval"),
+       translate("Ping interval during failure detection"))
+       failure.default = "5"
+       failure:value("1", translatef("%d second", 1))
+       failure:value("3", translatef("%d seconds", 3))
+       failure:value("5", translatef("%d seconds", 5))
+       failure:value("10", translatef("%d seconds", 10))
+       failure:value("20", translatef("%d seconds", 20))
+       failure:value("30", translatef("%d seconds", 30))
+       failure:value("60", translatef("%d minute", 1))
+       failure:value("300", translatef("%d minutes", 5))
+       failure:value("600", translatef("%d minutes", 10))
+       failure:value("900", translatef("%d minutes", 15))
+       failure:value("1800", translatef("%d minutes", 30))
+       failure:value("3600", translatef("%d hour", 1))
+
+recovery = mwan_interface:option(Value, "recovery_interval", translate("Recovery interval"),
+       translate("Ping interval during failure recovering"))
+       recovery.default = "5"
+       recovery:value("1", translatef("%d second", 1))
+       recovery:value("3", translatef("%d seconds", 3))
+       recovery:value("5", translatef("%d seconds", 5))
+       recovery:value("10", translatef("%d seconds", 10))
+       recovery:value("20", translatef("%d seconds", 20))
+       recovery:value("30", translatef("%d seconds", 30))
+       recovery:value("60", translatef("%d minute", 1))
+       recovery:value("300", translatef("%d minutes", 5))
+       recovery:value("600", translatef("%d minutes", 10))
+       recovery:value("900", translatef("%d minutes", 15))
+       recovery:value("1800", translatef("%d minutes", 30))
+       recovery:value("3600", translatef("%d hour", 1))
+
+down = mwan_interface:option(ListValue, "down", translate("Interface down"),
+       translate("Interface will be deemed down after this many failed ping tests"))
+       down.default = "3"
+       down:value("1")
+       down:value("2")
+       down:value("3")
+       down:value("4")
+       down:value("5")
+       down:value("6")
+       down:value("7")
+       down:value("8")
+       down:value("9")
+       down:value("10")
+
+up = mwan_interface:option(ListValue, "up", translate("Interface up"),
+       translate("Downed interface will be deemed up after this many successful ping tests"))
+       up.default = "3"
+       up:value("1")
+       up:value("2")
+       up:value("3")
+       up:value("4")
+       up:value("5")
+       up:value("6")
+       up:value("7")
+       up:value("8")
+       up:value("9")
+       up:value("10")
+
+flush = mwan_interface:option(ListValue, "flush_conntrack", translate("Flush conntrack table"),
+       translate("Flush global firewall conntrack table on interface events"))
+       flush.default = "never"
+       flush:value("ifup", translate("ifup"))
+       flush:value("ifdown", translate("ifdown"))
+       flush:value("never", translate("never"))
+       flush:value("always", translate("always"))
+
+metric = mwan_interface:option(DummyValue, "metric", translate("Metric"),
+       translate("This displays the metric assigned to this interface in /etc/config/network"))
+       metric.rawhtml = true
+       function metric.cfgvalue(self, s)
+               if errorNoMetric == 0 then
+                       return metricValue
+               else
+                       return "&#8212;"
+               end
+       end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua
new file mode 100644 (file)
index 0000000..3bccbd9
--- /dev/null
@@ -0,0 +1,46 @@
+-- ------ member configuration ------ --
+
+ds = require "luci.dispatcher"
+
+
+m5 = Map("mwan3", translate("MWAN Member Configuration"))
+       m5:append(Template("mwan/config_css"))
+
+
+mwan_member = m5:section(TypedSection, "member", translate("Members"),
+       translate("Members are profiles attaching a metric and weight to an MWAN interface<br />" ..
+       "Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />" ..
+       "Members may not share the same name as configured interfaces, policies or rules"))
+       mwan_member.addremove = true
+       mwan_member.dynamic = false
+       mwan_member.sectionhead = "Member"
+       mwan_member.sortable = true
+       mwan_member.template = "cbi/tblsection"
+       mwan_member.extedit = ds.build_url("admin", "network", "mwan", "configuration", "member", "%s")
+       function mwan_member.create(self, section)
+               TypedSection.create(self, section)
+               m5.uci:save("mwan3")
+               luci.http.redirect(ds.build_url("admin", "network", "mwan", "configuration", "member", section))
+       end
+
+
+interface = mwan_member:option(DummyValue, "interface", translate("Interface"))
+       interface.rawhtml = true
+       function interface.cfgvalue(self, s)
+               return self.map:get(s, "interface") or "&#8212;"
+       end
+
+metric = mwan_member:option(DummyValue, "metric", translate("Metric"))
+       metric.rawhtml = true
+       function metric.cfgvalue(self, s)
+               return self.map:get(s, "metric") or "1"
+       end
+
+weight = mwan_member:option(DummyValue, "weight", translate("Weight"))
+       weight.rawhtml = true
+       function weight.cfgvalue(self, s)
+               return self.map:get(s, "weight") or "1"
+       end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua
new file mode 100644 (file)
index 0000000..eb6f417
--- /dev/null
@@ -0,0 +1,47 @@
+-- ------ extra functions ------ --
+
+function cbi_add_interface(field)
+       uci.cursor():foreach("mwan3", "interface",
+               function (section)
+                       field:value(section[".name"])
+               end
+       )
+end
+
+-- ------ member configuration ------ --
+
+dsp = require "luci.dispatcher"
+arg[1] = arg[1] or ""
+
+
+m5 = Map("mwan3", translatef("MWAN Member Configuration - %s", arg[1]))
+       m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "member")
+
+
+mwan_member = m5:section(NamedSection, arg[1], "member", "")
+       mwan_member.addremove = false
+       mwan_member.dynamic = false
+
+
+interface = mwan_member:option(Value, "interface", translate("Interface"))
+       cbi_add_interface(interface)
+
+metric = mwan_member:option(Value, "metric", translate("Metric"),
+       translate("Acceptable values: 1-1000. Defaults to 1 if not set"))
+       metric.datatype = "range(1, 1000)"
+
+weight = mwan_member:option(Value, "weight", translate("Weight"),
+       translate("Acceptable values: 1-1000. Defaults to 1 if not set"))
+       weight.datatype = "range(1, 1000)"
+
+
+-- ------ currently configured interfaces ------ --
+
+mwan_interface = m5:section(TypedSection, "interface", translate("Currently Configured Interfaces"))
+       mwan_interface.addremove = false
+       mwan_interface.dynamic = false
+       mwan_interface.sortable = false
+       mwan_interface.template = "cbi/tblsection"
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua
new file mode 100644 (file)
index 0000000..08c3f69
--- /dev/null
@@ -0,0 +1,95 @@
+-- ------ extra functions ------ --
+
+function policyCheck() -- check to see if any policy names exceed the maximum of 15 characters
+       uci.cursor():foreach("mwan3", "policy",
+               function (section)
+                       if string.len(section[".name"]) > 15 then
+                               nameTooLong = 1
+                               err_name_list = err_name_list .. section[".name"] .. " "
+                       end
+               end
+       )
+end
+
+function policyWarn() -- display status and warning messages at the top of the page
+       if nameTooLong == 1 then
+               return "<font color=\"ff0000\"><strong>" .. translate("WARNING: Some policies have names exceeding the maximum of 15 characters!") .. "</strong></font>"
+       else
+               return ""
+       end
+end
+
+-- ------ policy configuration ------ --
+
+ds = require "luci.dispatcher"
+sys = require "luci.sys"
+
+nameTooLong = 0
+err_name_list = " "
+policyCheck()
+
+
+m5 = Map("mwan3", translate("MWAN Policy Configuration"),
+       policyWarn())
+       m5:append(Template("mwan/config_css"))
+
+
+mwan_policy = m5:section(TypedSection, "policy", translate("Policies"),
+       translate("Policies are profiles grouping one or more members controlling how MWAN distributes traffic<br />" ..
+       "Member interfaces with lower metrics are used first. Interfaces with the same metric load-balance<br />" ..
+       "Load-balanced member interfaces distribute more traffic out those with higher weights<br />" ..
+       "Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be 15 characters or less<br />" ..
+       "Policies may not share the same name as configured interfaces, members or rules"))
+       mwan_policy.addremove = true
+       mwan_policy.dynamic = false
+       mwan_policy.sectionhead = "Policy"
+       mwan_policy.sortable = true
+       mwan_policy.template = "cbi/tblsection"
+       mwan_policy.extedit = ds.build_url("admin", "network", "mwan", "configuration", "policy", "%s")
+       function mwan_policy.create(self, section)
+               TypedSection.create(self, section)
+               m5.uci:save("mwan3")
+               luci.http.redirect(ds.build_url("admin", "network", "mwan", "configuration", "policy", section))
+       end
+
+
+use_member = mwan_policy:option(DummyValue, "use_member", translate("Members assigned"))
+       use_member.rawhtml = true
+       function use_member.cfgvalue(self, s)
+               local memberConfig, memberList = self.map:get(s, "use_member"), ""
+               if memberConfig then
+                       for k,v in pairs(memberConfig) do
+                               memberList = memberList .. v .. "<br />"
+                       end
+                       return memberList
+               else
+                       return "&#8212;"
+               end
+               
+       end
+
+last_resort = mwan_policy:option(DummyValue, "last_resort", translate("Last resort"))
+       last_resort.rawhtml = true
+       function last_resort.cfgvalue(self, s)
+               local action = self.map:get(s, "last_resort")
+               if action == "blackhole" then
+                       return "blackhole (drop)"
+               elseif action == "default" then
+                       return "default (use main routing table)"
+               else
+                       return "unreachable (reject)"
+               end
+       end
+
+errors = mwan_policy:option(DummyValue, "errors", translate("Errors"))
+       errors.rawhtml = true
+       function errors.cfgvalue(self, s)
+               if not string.find(err_name_list, " " .. s .. " ") then
+                       return ""
+               else
+                       return "<span title=\"Name exceeds 15 characters\"><img src=\"/luci-static/resources/cbi/reset.gif\" alt=\"error\"></img></span>"
+               end
+       end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua
new file mode 100644 (file)
index 0000000..06a0fec
--- /dev/null
@@ -0,0 +1,65 @@
+-- ------ extra functions ------ --
+
+function policyCheck() -- check to see if this policy's name exceed the maximum of 15 characters
+       policyNameLength = string.len(arg[1])
+       if policyNameLength > 15 then
+               nameTooLong = 1
+       end
+end
+
+function policyWarn() -- display status and warning messages at the top of the page
+       if nameTooLong == 1 then
+               return "<font color=\"ff0000\"><strong>" .. translatef("WARNING: this policy's name is %d characters exceeding the maximum of 15!", policyNameLength) .. "</strong></font>"
+       else
+               return ""
+       end
+end
+
+function cbiAddMember(field)
+       uci.cursor():foreach("mwan3", "member",
+               function (section)
+                       field:value(section[".name"])
+               end
+       )
+end
+
+-- ------ policy configuration ------ --
+
+dsp = require "luci.dispatcher"
+arg[1] = arg[1] or ""
+
+nameTooLong = 0
+policyCheck()
+
+
+m5 = Map("mwan3", translatef("MWAN Policy Configuration - %s", arg[1]),
+       policyWarn())
+       m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "policy")
+
+
+mwan_policy = m5:section(NamedSection, arg[1], "policy", "")
+       mwan_policy.addremove = false
+       mwan_policy.dynamic = false
+
+
+use_member = mwan_policy:option(DynamicList, "use_member", translate("Member used"))
+       cbiAddMember(use_member)
+
+last_resort = mwan_policy:option(ListValue, "last_resort", translate("Last resort"),
+       translate("When all policy members are offline use this behavior for matched traffic"))
+       last_resort.default = "unreachable"
+       last_resort:value("unreachable", translate("unreachable (reject)"))
+       last_resort:value("blackhole", translate("blackhole (drop)"))
+       last_resort:value("default", translate("default (use main routing table)"))
+
+
+-- ------ currently configured members ------ --
+
+mwan_member = m5:section(TypedSection, "member", translate("Currently Configured Members"))
+       mwan_member.addremove = false
+       mwan_member.dynamic = false
+       mwan_member.sortable = false
+       mwan_member.template = "cbi/tblsection"
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua
new file mode 100644 (file)
index 0000000..412f369
--- /dev/null
@@ -0,0 +1,141 @@
+-- ------ extra functions ------ --
+
+function ruleCheck() -- determine if rules needs a proper protocol configured
+       uci.cursor():foreach("mwan3", "rule",
+               function (section)
+                       local sourcePort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. section[".name"] .. ".src_port"))
+                       local destPort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. section[".name"] .. ".dest_port"))
+                       if sourcePort ~= "" or destPort ~= "" then -- ports configured
+                               local protocol = ut.trim(sys.exec("uci -p /var/state get mwan3." .. section[".name"] .. ".proto"))
+                               if protocol == "" or protocol == "all" then -- no or improper protocol
+                                       error_protocol_list = error_protocol_list .. section[".name"] .. " "
+                               end
+                       end
+               end
+       )
+end
+
+function ruleWarn() -- display warning messages at the top of the page
+       if error_protocol_list ~= " " then
+               return "<font color=\"ff0000\"><strong>" .. translate("WARNING: some rules have a port configured with no or improper protocol specified! Please configure a specific protocol!") .. "</strong></font>"
+       else
+               return ""
+       end
+end
+
+-- ------ rule configuration ------ --
+
+dsp = require "luci.dispatcher"
+sys = require "luci.sys"
+ut = require "luci.util"
+
+error_protocol_list = " "
+ruleCheck()
+
+
+m5 = Map("mwan3", translate("MWAN Rule Configuration"),
+       ruleWarn())
+       m5:append(Template("mwan/config_css"))
+
+
+mwan_rule = m5:section(TypedSection, "rule", translate("Traffic Rules"),
+       translate("Rules specify which traffic will use a particular MWAN policy based on IP address, port or protocol<br />" ..
+       "Rules are matched from top to bottom. Rules below a matching rule are ignored. Traffic not matching any rule is routed using the main routing table<br />" ..
+       "Traffic destined for known (other than default) networks is handled by the main routing table. Traffic matching a rule, but all WAN interfaces for that policy are down will be blackholed<br />" ..
+       "Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />" ..
+       "Rules may not share the same name as configured interfaces, members or policies"))
+       mwan_rule.addremove = true
+       mwan_rule.anonymous = false
+       mwan_rule.dynamic = false
+       mwan_rule.sectionhead = "Rule"
+       mwan_rule.sortable = true
+       mwan_rule.template = "cbi/tblsection"
+       mwan_rule.extedit = dsp.build_url("admin", "network", "mwan", "configuration", "rule", "%s")
+       function mwan_rule.create(self, section)
+               TypedSection.create(self, section)
+               m5.uci:save("mwan3")
+               luci.http.redirect(dsp.build_url("admin", "network", "mwan", "configuration", "rule", section))
+       end
+
+
+src_ip = mwan_rule:option(DummyValue, "src_ip", translate("Source address"))
+       src_ip.rawhtml = true
+       function src_ip.cfgvalue(self, s)
+               return self.map:get(s, "src_ip") or "&#8212;"
+       end
+
+src_port = mwan_rule:option(DummyValue, "src_port", translate("Source port"))
+       src_port.rawhtml = true
+       function src_port.cfgvalue(self, s)
+               return self.map:get(s, "src_port") or "&#8212;"
+       end
+
+dest_ip = mwan_rule:option(DummyValue, "dest_ip", translate("Destination address"))
+       dest_ip.rawhtml = true
+       function dest_ip.cfgvalue(self, s)
+               return self.map:get(s, "dest_ip") or "&#8212;"
+       end
+
+dest_port = mwan_rule:option(DummyValue, "dest_port", translate("Destination port"))
+       dest_port.rawhtml = true
+       function dest_port.cfgvalue(self, s)
+               return self.map:get(s, "dest_port") or "&#8212;"
+       end
+
+proto = mwan_rule:option(DummyValue, "proto", translate("Protocol"))
+       proto.rawhtml = true
+       function proto.cfgvalue(self, s)
+               return self.map:get(s, "proto") or "all"
+       end
+
+sticky = mwan_rule:option(DummyValue, "sticky", translate("Sticky"))
+       sticky.rawhtml = true
+       function sticky.cfgvalue(self, s)
+               if self.map:get(s, "sticky") == "1" then
+                       stickied = 1
+                       return "Yes"
+               else
+                       stickied = nil
+                       return "No"
+               end
+       end
+
+timeout = mwan_rule:option(DummyValue, "timeout", translate("Sticky timeout"))
+       timeout.rawhtml = true
+       function timeout.cfgvalue(self, s)
+               if stickied then
+                       local timeoutValue = self.map:get(s, "timeout")
+                       if timeoutValue then
+                               return timeoutValue .. "s"
+                       else
+                               return "600s"
+                       end
+               else
+                       return "&#8212;"
+               end
+       end
+
+ipset = mwan_rule:option(DummyValue, "ipset", translate("IPset"))
+       ipset.rawhtml = true
+       function ipset.cfgvalue(self, s)
+               return self.map:get(s, "ipset") or "&#8212;"
+       end
+
+use_policy = mwan_rule:option(DummyValue, "use_policy", translate("Policy assigned"))
+       use_policy.rawhtml = true
+       function use_policy.cfgvalue(self, s)
+               return self.map:get(s, "use_policy") or "&#8212;"
+       end
+
+errors = mwan_rule:option(DummyValue, "errors", translate("Errors"))
+       errors.rawhtml = true
+       function errors.cfgvalue(self, s)
+               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>"
+               end
+       end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua
new file mode 100644 (file)
index 0000000..25a96f5
--- /dev/null
@@ -0,0 +1,113 @@
+-- ------ extra functions ------ --
+
+function ruleCheck() -- determine if rule needs a protocol specified
+       local sourcePort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".src_port"))
+       local destPort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".dest_port"))
+       if sourcePort ~= "" or destPort ~= "" then -- ports configured
+               local protocol = ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".proto"))
+               if protocol == "" or protocol == "all" then -- no or improper protocol
+                       error_protocol = 1
+               end
+       end
+end
+
+function ruleWarn() -- display warning message at the top of the page
+       if error_protocol == 1 then
+               return "<font color=\"ff0000\"><strong>" .. translate("WARNING: this rule is incorrectly configured with no or improper protocol specified! Please configure a specific protocol!") .. "</strong></font>"
+       else
+               return ""
+       end
+end
+
+function cbiAddPolicy(field)
+       uci.cursor():foreach("mwan3", "policy",
+               function (section)
+                       field:value(section[".name"])
+               end
+       )
+end
+
+function cbiAddProtocol(field)
+       local protocols = ut.trim(sys.exec("cat /etc/protocols | grep ' # ' | awk '{print $1}' | grep -vw -e 'ip' -e 'tcp' -e 'udp' -e 'icmp' -e 'esp' | grep -v 'ipv6' | sort | tr '\n' ' '"))
+       for p in string.gmatch(protocols, "%S+") do
+               field:value(p)
+       end
+end
+
+-- ------ rule configuration ------ --
+
+dsp = require "luci.dispatcher"
+sys = require "luci.sys"
+ut = require "luci.util"
+arg[1] = arg[1] or ""
+
+error_protocol = 0
+ruleCheck()
+
+
+m5 = Map("mwan3", translatef("MWAN Rule Configuration - %s", arg[1]),
+       ruleWarn())
+       m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "rule")
+
+
+mwan_rule = m5:section(NamedSection, arg[1], "rule", "")
+       mwan_rule.addremove = false
+       mwan_rule.dynamic = false
+
+
+src_ip = mwan_rule:option(Value, "src_ip", translate("Source address"),
+       translate("Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"))
+       src_ip.datatype = ipaddr
+
+src_port = mwan_rule:option(Value, "src_port", translate("Source port"),
+       translate("May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or as a portrange (eg \"1024:2048\") without quotes"))
+
+dest_ip = mwan_rule:option(Value, "dest_ip", translate("Destination address"),
+       translate("Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"))
+       dest_ip.datatype = ipaddr
+
+dest_port = mwan_rule:option(Value, "dest_port", translate("Destination port"),
+       translate("May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or as a portrange (eg \"1024:2048\") without quotes"))
+
+proto = mwan_rule:option(Value, "proto", translate("Protocol"),
+       translate("View the contents of /etc/protocols for protocol descriptions"))
+       proto.default = "all"
+       proto.rmempty = false
+       proto:value("all")
+       proto:value("ip")
+       proto:value("tcp")
+       proto:value("udp")
+       proto:value("icmp")
+       proto:value("esp")
+       cbiAddProtocol(proto)
+
+sticky = mwan_rule:option(ListValue, "sticky", translate("Sticky"),
+       translate("Traffic from the same source IP address that previously matched this rule within the sticky timeout period will use the same WAN interface"))
+       sticky.default = "0"
+       sticky:value("1", translate("Yes"))
+       sticky:value("0", translate("No"))
+
+timeout = mwan_rule:option(Value, "timeout", translate("Sticky timeout"),
+       translate("Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"))
+       timeout.datatype = "range(1, 1000000)"
+
+ipset = mwan_rule:option(Value, "ipset", translate("IPset"),
+       translate("Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/youtube.com/youtube\")"))
+
+use_policy = mwan_rule:option(Value, "use_policy", translate("Policy assigned"))
+       cbiAddPolicy(use_policy)
+       use_policy:value("unreachable", translate("unreachable (reject)"))
+       use_policy:value("blackhole", translate("blackhole (drop)"))
+       use_policy:value("default", translate("default (use main routing table)"))
+
+
+-- ------ currently configured policies ------ --
+
+mwan_policy = m5:section(TypedSection, "policy", translate("Currently Configured Policies"))
+       mwan_policy.addremove = false
+       mwan_policy.dynamic = false
+       mwan_policy.sortable = false
+       mwan_policy.template = "cbi/tblsection"
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/view/admin_status/index/mwan.htm b/applications/luci-app-mwan3/luasrc/view/admin_status/index/mwan.htm
new file mode 100644 (file)
index 0000000..53b997a
--- /dev/null
@@ -0,0 +1 @@
+<%+mwan/openwrt_overview_status%>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm
new file mode 100644 (file)
index 0000000..14d404b
--- /dev/null
@@ -0,0 +1,129 @@
+<%+header%>
+
+<ul class="cbi-tabmenu">
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
+       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
+</ul>
+
+<%
+       local uci = require "luci.model.uci"
+
+       interfaceNames = ""
+       uci.cursor():foreach("mwan3", "interface",
+               function (section)
+                       interfaceNames = interfaceNames .. section[".name"] .. " "
+               end
+       )
+%>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+       var stxhr = new XHR();
+
+       function update_status(tool, task)
+       {
+               var iface = document.getElementById('mwaniface').value;
+               var output = document.getElementById('diag_output');
+
+               if (tool == "service")
+                       {
+                               output.innerHTML =
+                                       '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="padding: 20px; vertical-align: middle;" /> ' +
+                                       "Waiting for MWAN to " + task + "..."
+                               ;
+                       }
+                       else
+                       {
+                               output.innerHTML =
+                                       '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="padding: 20px; vertical-align: middle;" /> ' +
+                                       "Waiting for diagnostic results..."
+                               ;
+                       }
+
+               output.parentNode.style.display = 'block';
+               output.style.display = 'inline';
+
+               stxhr.get('<%=luci.dispatcher.build_url("admin", "network", "mwan", "advanced")%>/diagnostics_display' + '/' + iface + '/' + tool + '/' + task, null,
+                       function(x, mArray)
+                       {
+                               if (mArray.diagnostics)
+                               {
+                                       output.innerHTML = String.format('<pre id="diag_output_css">%h</pre>', mArray.diagnostics[0]);
+                               }
+                               else
+                               {
+                                       output.innerHTML = '<pre id="diag_output_css"><strong>No diagnostic results returned</strong></pre>';
+                               }
+                       }
+               );
+       }
+//]]></script>
+
+<div id="mwan_diagnostics" class="cbi-map">
+       <fieldset id="diag_select" class="cbi-section">
+               <legend><%:MWAN Interface Diagnostics%></legend>
+               <select id="mwaniface">
+                       <% for z in interfaceNames:gmatch("[^ ]+") do -%><option value="<%=z%>"><%=z%></option><%- end %>
+               </select>
+               <div id="buttoncss">
+                       <input type="button" value="<%:Ping default gateway%>" class="cbi-button cbi-button-apply" onclick="update_status('ping', 'gateway')" />
+                       <input type="button" value="<%:Ping tracking IP%>" class="cbi-button cbi-button-apply" onclick="update_status('ping', 'track_ip')" />
+                       <input type="button" value="<%:Check IP rules%>" class="cbi-button cbi-button-apply" onclick="update_status('rulechk', null)" />
+                       <input type="button" value="<%:Check routing table%>" class="cbi-button cbi-button-apply" onclick="update_status('routechk', null)" />
+                       <input type="button" value="<%:Hotplug ifup%>" class="cbi-button cbi-button-apply" onclick="update_status('hotplug', 'ifup')" />
+                       <input type="button" value="<%:Hotplug ifdown%>" class="cbi-button cbi-button-apply" onclick="update_status('hotplug', 'ifdown')" />
+               </div>
+       </fieldset>
+       <fieldset id="diag_select" class="cbi-section">
+               <legend><%:MWAN Service Control%></legend>
+               <div id="buttoncss">
+                       <input type="button" value="<%:Restart MWAN%>" class="cbi-button cbi-button-apply" onclick="update_status('service', 'restart')" />
+                       <input type="button" value="<%:Stop MWAN%>" class="cbi-button cbi-button-apply" onclick="update_status('service', 'stop')" />
+                       <input type="button" value="<%:Start MWAN%>" class="cbi-button cbi-button-apply" onclick="update_status('service', 'start')" />
+               </div>
+       </fieldset>
+       <fieldset class="cbi-section" style="display:none">
+               <legend><%:Diagnostic Results%></legend>
+               <div id="diag_output"></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_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;
+  }
+  #buttoncss {
+       display: table;
+       float: left;
+       text-align: left;
+  }
+  .cbi-button {
+       margin: 8px 20px 0px 0px;
+       min-width: 153px;
+  }
+  #diag_output_css {
+       padding: 20px;
+       text-align: left;
+  }
+</style>
+
+<%+footer%>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm
new file mode 100644 (file)
index 0000000..4c2a0dc
--- /dev/null
@@ -0,0 +1,24 @@
+<ul class="cbi-tabmenu">
+       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
+</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
new file mode 100644 (file)
index 0000000..fba3fa6
--- /dev/null
@@ -0,0 +1,24 @@
+<ul class="cbi-tabmenu">
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
+       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
+</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
new file mode 100644 (file)
index 0000000..cf90112
--- /dev/null
@@ -0,0 +1,24 @@
+<ul class="cbi-tabmenu">
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
+       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
+</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
new file mode 100644 (file)
index 0000000..0a12496
--- /dev/null
@@ -0,0 +1,74 @@
+<%+header%>
+
+<ul class="cbi-tabmenu">
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
+       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
+</ul>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+       XHR.poll(15, '<%=luci.dispatcher.build_url("admin", "network", "mwan", "advanced", "troubleshooting_display")%>', null,
+               function(x, mArray)
+               {
+                       var tshoot = document.getElementById('troubleshoot_text');
+                       if (mArray.versions)
+                       {
+                               var versions = '<span class="description">Software versions : </span><br /><br />';
+                               var mwanConfig = '<br /><br /><span class="description">Output of &#34;cat /etc/config/mwan3&#34; : </span><br /><br />';
+                               var netConfig = '<br /><br /><span class="description">Output of &#34;cat /etc/config/network&#34; : </span><br /><br />';
+                               var wifiConfig = '<br /><br /><span class="description">Output of &#34;cat /etc/config/wireless&#34; : </span><br /><br />';
+                               var ifconfig = '<br /><br /><span class="description">Output of &#34;ifconfig&#34; : </span><br /><br />';
+                               var ipRoute = '<br /><br /><span class="description">Output of &#34;route -n&#34; : </span><br /><br />';
+                               var ipRuleShow = '<br /><br /><span class="description">Output of &#34;ip rule show&#34; : </span><br /><br />';
+                               var routeListTable = '<br /><br /><span class="description">Output of &#34;ip route list table 1-250&#34; : </span><br /><br />';
+                               var firewallOut = '<br /><br /><span class="description">Firewall default output policy (must be ACCEPT) : </span><br /><br />';
+                               var iptables = '<br /><br /><span class="description">Output of &#34;iptables -L -t mangle -v -n&#34; : </span><br /><br />';
+                               tshoot.innerHTML = String.format(
+                                       '<pre>%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s</pre>',
+                                       versions, mArray.versions[0], mwanConfig, mArray.mwanconfig[0], netConfig, mArray.netconfig[0],
+                                       wifiConfig, mArray.wificonfig[0], ifconfig, mArray.ifconfig[0], ipRoute, mArray.routeshow[0],
+                                       ipRuleShow, mArray.iprule[0], routeListTable, mArray.routelist[0], firewallOut, mArray.firewallout[0],
+                                       iptables, mArray.iptables[0]
+                               );
+                       }
+                       else
+                       {
+                               tshoot.innerHTML = '<strong>Error collecting troubleshooting information</strong>';
+                       }
+               }
+       );
+//]]></script>
+
+<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>
+       </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;
+  }
+  .description {
+       background-color: rgb(78, 186, 241);
+  }
+</style>
+
+<%+footer%>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm
new file mode 100644 (file)
index 0000000..5077674
--- /dev/null
@@ -0,0 +1,24 @@
+<ul class="cbi-tabmenu">
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
+       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
+</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
new file mode 100644 (file)
index 0000000..99da487
--- /dev/null
@@ -0,0 +1,34 @@
+<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;
+       vertical-align: middle;
+  }
+  table th {   /* column for configuration section name */
+       padding: 0px;
+       text-align: center;
+       vertical-align: middle;
+  }
+  table tbody th {     /* column for configuration section name */
+       padding: 0px;
+       vertical-align: middle;
+  }
+  .cbi-section-node table div {        /* rows */
+       padding-top: 5px;
+  }
+  table.cbi-section-table td.cbi-section-table-cell {  /* sort buttons column */
+       text-align: center;
+  }
+  .cbi-section h3 {
+       color: rgb(85, 85, 85);
+       font-family: Trebuchet MS,Verdana,sans-serif;
+       font-style: italic;
+       font-weight: normal;
+  }
+</style>
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
new file mode 100644 (file)
index 0000000..9329b92
--- /dev/null
@@ -0,0 +1,83 @@
+<script type="text/javascript">//<![CDATA[
+       XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "mwan", "overview", "interface_status")%>', null,
+               function(x, mArray)
+               {
+                       var status = document.getElementById('mwan_status_text');
+                       if (mArray.wans)
+                       {
+                               var temp = '';
+                               for ( var i = 0; i < mArray.wans.length; i++ )
+                               {
+                                       var stat = '';
+                                       var cssc = '';
+                                       switch (mArray.wans[i].status)
+                                       {
+                                               case 'online':
+                                                       stat = 'Online (tracking active)';
+                                                       cssc = 'wanon';
+                                                       break;
+                                               case 'notMonitored':
+                                                       stat = 'Online (tracking off)';
+                                                       cssc = 'wanon';
+                                                       break;
+                                               case 'offline':
+                                                       stat = 'Offline';
+                                                       cssc = 'wanoff';
+                                                       break;
+                                               case 'notEnabled':
+                                                       stat = 'Disabled';
+                                                       cssc = 'wanoff';
+                                                       break;
+                                       }
+                                       temp += String.format(
+                                               '<span class="%s"><strong>%s (<a href="%q">%s</a>)</strong><br />%s</span>',
+                                               cssc, mArray.wans[i].name, mArray.wans[i].link, mArray.wans[i].ifname, stat
+                                       );
+                               }
+                               status.innerHTML = temp;
+                       }
+                       else
+                       {
+                               status.innerHTML = '<strong>No MWAN interfaces found</strong>';
+                       }
+               }
+       );
+//]]></script>
+
+<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>
+</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;
+       margin: auto;
+       max-width: 1044px;
+       min-width: 246px;
+       width: 100%;
+  }
+  .wanon {
+       background-color: rgb(144, 240, 144);
+  }
+  .wanoff {
+       background-color: rgb(240, 144, 144);
+  }
+  .wanon, .wanoff {
+       border-radius: 60px;
+       box-shadow: 0px 2px 5px -3px;
+       float: left;
+       margin: 8px 3px 0px 3px;
+       min-height: 30px;
+       min-width: 235px;
+       padding: 5px 10px 8px 10px;
+       text-align: center;
+  }
+</style>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm b/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm
new file mode 100644 (file)
index 0000000..b80b9f3
--- /dev/null
@@ -0,0 +1,51 @@
+<%+header%>
+
+<ul class="cbi-tabmenu">
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/overview")%>"><%:Interface Status%></a></li>
+       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/overview/overview_detailed")%>"><%:Detailed Status%></a></li>
+</ul>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+       XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "mwan", "overview", "detailed_status")%>', null,
+               function(x, mArray)
+               {
+                       var status = document.getElementById('mwan_detail_text');
+                       if (mArray.mwandetail)
+                       {
+                               status.innerHTML = String.format('<pre>%s</pre>', mArray.mwandetail[0]);
+                       }
+                       else
+                       {
+                               status.innerHTML = '<strong>No detailed status information available</strong>';
+                       }
+               }
+       );
+//]]></script>
+
+<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>
+       </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;
+  }
+</style>
+
+<%+footer%>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm b/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm
new file mode 100644 (file)
index 0000000..472c7ce
--- /dev/null
@@ -0,0 +1,122 @@
+<%+header%>
+
+<ul class="cbi-tabmenu">
+       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/overview")%>"><%:Interface Status%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/overview/overview_detailed")%>"><%:Detailed Status%></a></li>
+</ul>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+       XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "mwan", "overview", "interface_status")%>', null,
+               function(x, mArray)
+               {
+                       var statusDiv = document.getElementById('mwan_status_text');
+                       if (mArray.wans)
+                       {
+                               var interfaceStatus = '';
+                               for ( var i = 0; i < mArray.wans.length; i++ )
+                               {
+                                       var status = '';
+                                       var css = '';
+                                       switch (mArray.wans[i].status)
+                                       {
+                                               case 'online':
+                                                       status = 'Online (tracking active)';
+                                                       css = 'wanon';
+                                                       break;
+                                               case 'notMonitored':
+                                                       status = 'Online (tracking off)';
+                                                       css = 'wanon';
+                                                       break;
+                                               case 'offline':
+                                                       status = 'Offline';
+                                                       css = 'wanoff';
+                                                       break;
+                                               case 'notEnabled':
+                                                       status = 'Disabled';
+                                                       css = 'wanoff';
+                                                       break;
+                                       }
+                                       interfaceStatus += String.format(
+                                               '<span class="%s"><strong>%s (<a href="%q">%s</a>)</strong><br />%s</span>',
+                                               css, mArray.wans[i].name, mArray.wans[i].link, mArray.wans[i].ifname, status
+                                       );
+                               }
+                               statusDiv.innerHTML = interfaceStatus;
+                       }
+                       else
+                       {
+                               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 :';
+                               logs.innerHTML = String.format('<pre>%s<br /><br />%s</pre>', mwanLog, mArray.mwanlog[0]);
+                       }
+                       else
+                       {
+                               logs.innerHTML = '<strong>No MWAN systemlog history found</strong>';
+                       }
+               }
+       );
+//]]></script>
+
+<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>
+       </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>
+       </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;
+       margin: auto;
+       max-width: 1044px;
+       min-width: 246px;
+       width: 100%;
+  }
+  .wanon {
+       background-color: rgb(144, 240, 144);
+  }
+  .wanoff {
+       background-color: rgb(240, 144, 144);
+  }
+  .wanon, .wanoff {
+       border-radius: 60px;
+       box-shadow: 0px 2px 5px -3px;
+       float: left;
+       margin: 8px 3px 0px 3px;
+       min-height: 30px;
+       min-width: 235px;
+       padding: 5px 10px 8px 10px;
+       text-align: center;
+  }
+  #mwan_statuslog_text {
+       padding: 20px;
+       text-align: left;
+  }
+</style>
+
+<%+footer%>
diff --git a/applications/luci-app-mwan3/po/ja/mwan3.po b/applications/luci-app-mwan3/po/ja/mwan3.po
new file mode 100644 (file)
index 0000000..cae45b8
--- /dev/null
@@ -0,0 +1,562 @@
+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 2.0\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid "%d hour"
+msgstr "%d 時間"
+
+msgid "%d minute"
+msgstr "%d 分"
+
+msgid "%d minutes"
+msgstr "%d 分"
+
+msgid "%d second"
+msgstr "%d 秒"
+
+msgid "%d seconds"
+msgstr "%d 秒"
+
+msgid ""
+"Acceptable values: 1-100. This many Tracking IP addresses must respond for "
+"the link to be deemed up"
+msgstr ""
+"利用可能な値: 1-100。上記の追跡 IP の合計個数のうち、Up 状態と判定するために"
+"に必要な、レスポンスが返された追跡 IP アドレスの個数です。"
+
+msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
+msgstr "利用可能な値: 1-1000。空欄の場合のデフォルトは1です。"
+
+msgid "Advanced"
+msgstr "詳細設定"
+
+msgid "Check IP rules"
+msgstr "IP ルールのチェック"
+
+msgid "Check routing table"
+msgstr "ルーティング テーブルのチェック"
+
+msgid "Configuration"
+msgstr "設定"
+
+msgid "Currently Configured Interfaces"
+msgstr "設定済みインターフェース"
+
+msgid "Currently Configured Members"
+msgstr "設定済みメンバー"
+
+msgid "Currently Configured Policies"
+msgstr "設定済みポリシー"
+
+msgid "Destination address"
+msgstr "宛先アドレス"
+
+msgid "Destination port"
+msgstr "宛先ポート"
+
+msgid "Detailed Status"
+msgstr "詳細ステータス"
+
+msgid "Diagnostic Results"
+msgstr "診断結果"
+
+msgid "Diagnostics"
+msgstr "診断機能"
+
+msgid ""
+"Downed interface will be deemed up after this many successful ping tests"
+msgstr ""
+"Down 状態のインターフェースが Up 状態と判断されるまでに要する ping テストの成"
+"功回数です。"
+
+msgid "Enabled"
+msgstr "有効"
+
+msgid "Errors"
+msgstr "エラー"
+
+msgid "Failure interval"
+msgstr "障害検出 インターバル"
+
+msgid "Flush conntrack table"
+msgstr ""
+
+msgid "Flush global firewall conntrack table on interface events"
+msgstr ""
+
+msgid "Hotplug Script"
+msgstr "ホットプラグ スクリプト"
+
+msgid "Hotplug ifdown"
+msgstr "ホットプラグ ifdown"
+
+msgid "Hotplug ifup"
+msgstr "ホットプラグ ifup"
+
+msgid "IPset"
+msgstr "IPset"
+
+msgid "IPv4"
+msgstr "IPv4"
+
+msgid "IPv6"
+msgstr "IPv6"
+
+msgid "Interface"
+msgstr "インターフェース"
+
+msgid "Interface Status"
+msgstr "インターフェース ステータス"
+
+msgid "Interface down"
+msgstr "インターフェース Down"
+
+msgid "Interface up"
+msgstr "インターフェース Up"
+
+msgid "Interface will be deemed down after this many failed ping tests"
+msgstr ""
+"インターフェースが Down 状態と判断されるまでに要する ping テストの失敗回数で"
+"す。"
+
+msgid "Interfaces"
+msgstr "インターフェース"
+
+msgid "Internet Protocol"
+msgstr "インターネット プロトコル"
+
+msgid "Last resort"
+msgstr "最終手段"
+
+msgid "Load Balancing"
+msgstr "負荷分散"
+
+msgid "Loading"
+msgstr "読込中"
+
+msgid "MWAN Config"
+msgstr "MWAN 設定"
+
+msgid "MWAN Detailed Status"
+msgstr "MWAN 詳細ステータス"
+
+msgid "MWAN Interface Configuration"
+msgstr "MWAN インターフェース設定"
+
+msgid "MWAN Interface Configuration - %s"
+msgstr "MWAN インターフェース設定 - %s"
+
+msgid "MWAN Interface Diagnostics"
+msgstr "MWAN インターフェース診断"
+
+msgid "MWAN Interface Live Status"
+msgstr "MWAN インターフェース Live ステータス"
+
+msgid "MWAN Interface Systemlog"
+msgstr "MWAN インターフェース システムログ"
+
+msgid "MWAN Member Configuration"
+msgstr "MWAN メンバー設定"
+
+msgid "MWAN Member Configuration - %s"
+msgstr "MWAN メンバー設定 - %s"
+
+msgid "MWAN Policy Configuration"
+msgstr "MWAN ポリシー設定"
+
+msgid "MWAN Policy Configuration - %s"
+msgstr "MWAN ポリシー設定 - %s"
+
+msgid "MWAN Rule Configuration"
+msgstr "MWAN ルール設定"
+
+msgid "MWAN Rule Configuration - %s"
+msgstr "MWAN ルール設定 - %s"
+
+msgid "MWAN Service Control"
+msgstr "MWAN サービス コントロール"
+
+msgid ""
+"MWAN supports up to 250 physical and/or logical interfaces<br />MWAN "
+"requires that all interfaces have a unique metric configured in /etc/config/"
+"network<br />Names must match the interface name found in /etc/config/"
+"network (see advanced tab)<br />Names may contain characters A-Z, a-z, 0-9, "
+"_ and no spaces<br />Interfaces may not share the same name as configured "
+"members, policies or rules"
+msgstr ""
+"MWAN は、250個までの物理または論理、あるいは両方のインターフェースをサポート"
+"します。<br />MWAN は、全てのインターフェースが /etc/config/network で設定さ"
+"れるユニークなメトリックを持つことを必要とします。<br />下記 \"インターフェー"
+"ス\" の名前は、 /etc/config/network に存在するインターフェース名と同じでなけ"
+"ればなりません(詳細設定タブを確認)。<br />名前は A-Z, a-z, 0-9, _ を含むこ"
+"とができますが、スペースは使用できません。<br />インターフェースには、設定済"
+"みのメンバーやポリシー、ルールと同じ名前を使用することはできません。"
+
+msgid ""
+"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
+"as a portrange (eg \"1024:2048\") without quotes"
+msgstr ""
+"単一または複数のポート(例: \"22\" または \"80,443\")、あるいはポートの範囲"
+"(例: \"1024:2048\")を、クオーテーション無しで指定することができます。"
+
+msgid "Member used"
+msgstr "使用されるメンバー"
+
+msgid "Members"
+msgstr "メンバー"
+
+msgid ""
+"Members are profiles attaching a metric and weight to an MWAN interface<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Members "
+"may not share the same name as configured interfaces, policies or rules"
+msgstr ""
+"メンバーは、MWAN インターフェースのメトリックおよびウエイトを関連付けたプロ"
+"ファイルです。<br />名前は A-Z, a-z, 0-9, _ を含むことができますが、スペース"
+"は使用できません。<br />メンバーには、設定済みのインターフェースやポリシー、"
+"ルールと同じ名前を使用することはできません。"
+
+msgid "Members assigned"
+msgstr "アサイン済みメンバー"
+
+msgid "Metric"
+msgstr "メトリック"
+
+msgid ""
+"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")"
+msgstr ""
+"IPset ルールの名前です。このルールは、 /etc/dnsmasq.conf で必要です。(例: "
+"\"ipset=/youtube.com/youtube\")"
+
+msgid "Network Config"
+msgstr "ネットワーク設定"
+
+msgid "No"
+msgstr "いいえ"
+
+msgid "Overview"
+msgstr "概要"
+
+msgid "Ping count"
+msgstr "Ping 回数"
+
+msgid "Ping default gateway"
+msgstr "Ping デフォルト ゲートウェイ"
+
+msgid "Ping interval"
+msgstr "Ping インターバル"
+
+msgid "Ping interval during failure detection"
+msgstr "障害検出動作中の Ping 実行間隔です。"
+
+msgid "Ping interval during failure recovering"
+msgstr "障害復旧中の Ping 実行間隔です。"
+
+msgid "Ping size"
+msgstr "Ping サイズ"
+
+msgid "Ping timeout"
+msgstr "Ping タイムアウト"
+
+msgid "Ping tracking IP"
+msgstr "Ping トラッキング IP"
+
+msgid "Policies"
+msgstr "ポリシー"
+
+msgid ""
+"Policies are profiles grouping one or more members controlling how MWAN "
+"distributes traffic<br />Member interfaces with lower metrics are used "
+"first. Interfaces with the same metric load-balance<br />Load-balanced "
+"member interfaces distribute more traffic out those with higher weights<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
+"15 characters or less<br />Policies may not share the same name as "
+"configured interfaces, members or rules"
+msgstr ""
+"ポリシーは、MWANがどのようにトラフィックの分配を行うかを制御する、1つ以上のメ"
+"ンバーをグループ化するプロファイルです。<br />最小のメトリックを持つメンバー "
+"インターフェースが最初に使用されます。同じメトリックを持つ複数のインター"
+"フェースでは、負荷分散を行います。<br />負荷分散に設定されたメンバー インター"
+"フェースでは、ウェイトの値が大きい方により多くのトラフィックを分配します。"
+"<br />名前は A-Z, a-z, 0-9, _ を含むことができますが、スペースは使用できませ"
+"ん。また、15文字以内でなければなりません。<br />ポリシーでは、設定済みのイン"
+"ターフェースやメンバー、ルールと同じ名前を使用することはできません。"
+
+msgid "Policy assigned"
+msgstr "アサイン済みポリシー"
+
+msgid "Protocol"
+msgstr "プロトコル"
+
+msgid "Recovery interval"
+msgstr "障害復旧 インターバル"
+
+msgid "Restart MWAN"
+msgstr "MWAN の再起動"
+
+msgid "Restore default hotplug script"
+msgstr "デフォルトのホットプラグ スクリプトの復元"
+
+msgid "Restore..."
+msgstr "復元..."
+
+msgid "Rules"
+msgstr "ルール"
+
+msgid ""
+"Rules specify which traffic will use a particular MWAN policy based on IP "
+"address, port or protocol<br />Rules are matched from top to bottom. Rules "
+"below a matching rule are ignored. Traffic not matching any rule is routed "
+"using the main routing table<br />Traffic destined for known (other than "
+"default) networks is handled by the main routing table. Traffic matching a "
+"rule, but all WAN interfaces for that policy are down will be blackholed<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Rules may "
+"not share the same name as configured interfaces, members or policies"
+msgstr ""
+"ルールは IP アドレスやポート、プロトコルを基に、トラフィックがどの MWAN ポリ"
+"シーを使用するかを設定します。<br />ルールは上から下へマッチングが行われ、合"
+"致したルールより下のルールは無視されます。全てのルールに合致しないトラフィッ"
+"クは、メインのルーティング テーブルを使用してルートが決定されます。<br />既知"
+"(デフォルト以外)のネットワークへのトラフィックは、メインのルーティング テー"
+"ブルによって制御されます。ルールに合致したトラフィックでも、当該ポリシーの全 "
+"WAN インターフェースが Down 状態の場合は blackhole 状態となります。<br />名前"
+"は A-Z, a-z, 0-9, _ を含むことができますが、スペースは使用できません。<br />"
+"ルールは、設定済みのインターフェースやメンバー、ポリシーと同じ名前を使用する"
+"ことはできません。"
+
+msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
+msgstr "秒。利用可能な値: 1-1000000。空欄の場合のデフォルト値は600です。"
+
+msgid "Source address"
+msgstr "送信元アドレス"
+
+msgid "Source port"
+msgstr "送信元ポート"
+
+msgid "Start MWAN"
+msgstr "MWAN の起動"
+
+msgid "Sticky"
+msgstr "Sticky"
+
+msgid "Sticky timeout"
+msgstr "Sticky タイムアウト"
+
+msgid "Stop MWAN"
+msgstr "MWAN の停止"
+
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgstr "CIDR 表記のサポート(例: \"192.168.100.0/24\")"
+
+msgid "There are currently %d of 250 supported interfaces configured"
+msgstr "現在、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"
+msgstr ""
+"これらは、リンクの Up または Down を判定するために Ping が送信されるIP アドレ"
+"スです。常にオンラインとする場合、空欄のままにします。"
+
+msgid ""
+"This displays the metric assigned to this interface in /etc/config/network"
+msgstr ""
+"/etc/config/network で、このインターフェースに割り当てられたメトリックです。"
+
+msgid "This section allows you to modify the contents of /etc/config/mwan3"
+msgstr ""
+"このセクションでは、 /etc/config/mwan3 の内容を変更することができます。"
+
+msgid "This section allows you to modify the contents of /etc/config/network"
+msgstr ""
+"このセクションでは、 /etc/config/network の内容を変更することができます。"
+
+msgid "This section allows you to modify the contents of /etc/config/wireless"
+msgstr ""
+"このセクションでは、 /etc/config/wireless の内容を変更することができます。"
+
+msgid ""
+"This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
+"mwancustom<br />This is useful for running system commands and/or scripts "
+"based on interface ifup or ifdown hotplug events<br /><br />Notes:<br />The "
+"first line of the script must be &#34;#!/bin/sh&#34; without quotes<br /"
+">Lines beginning with # are comments and are not executed<br /><br /"
+">Available variables:<br />$ACTION is the hotplug event (ifup, ifdown)<br />"
+"$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 />これは、インターフェースの ifup または ifdown ホットプラグ "
+"イベント時にシステムコマンドまたはスクリプト、もしくはその両方を実行すること"
+"に役立ちます。<br /><br />注意:<br />スクリプトの1行目は、&#34;#!bin/sh&#34; "
+"である必要があります(クオーテーション不要)。<br /># で始まる行はコメントと"
+"して認識され、実行されません。<br /><br />利用可能な変数:<br />$ACTION - ホッ"
+"トプラグ イベント (ifup, ifdown)<br />$INTERFACE - インターフェース名(wan1, "
+"wan2, その他)<br />$DEVICE - インターフェースにアタッチされたデバイスの名前"
+"(eth0.1, eth1, その他)"
+
+msgid "Tracking IP"
+msgstr "追跡 IP"
+
+msgid "Tracking reliability"
+msgstr "追跡の信頼性"
+
+msgid "Traffic Rules"
+msgstr "トラフィック ルール"
+
+msgid ""
+"Traffic from the same source IP address that previously matched this rule "
+"within the sticky timeout period will use the same WAN interface"
+msgstr ""
+"以前このルールにマッチした同じアクセス元 IP アドレスからのトラフィックが、再"
+"度 Sticky 制限時間内にマッチした場合には、同じ WAN インターフェースが使用され"
+"ます。"
+
+msgid "Troubleshooting"
+msgstr "トラブルシューティング"
+
+msgid "Troubleshooting Data"
+msgstr "トラブルシューティング データ"
+
+msgid "View the contents of /etc/protocols for protocol descriptions"
+msgstr "プロトコルの説明については、 /etc/protocols の内容を確認してください。"
+
+msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
+msgstr ""
+"警告: %d 個のインターフェースが、最大個数の 250個 を超えて設定されています!"
+
+msgid ""
+"WARNING: Some policies have names exceeding the maximum of 15 characters!"
+msgstr ""
+"警告: 最大文字数の 15 文字を超える名前が設定されているポリシーがあります!"
+
+msgid ""
+"WARNING: some interfaces are configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+"警告: 設定を誤っているか、もしくは完全に設定されていないインターフェースがあ"
+"ります!"
+
+msgid ""
+"WARNING: some interfaces have a higher reliability requirement than there "
+"are tracking IP addresses!"
+msgstr ""
+"警告: 追跡 IP アドレスの個数より大きい追跡信頼性の値が設定されたインター"
+"フェースがあります!"
+
+msgid ""
+"WARNING: some interfaces have duplicate metrics configured in /etc/config/"
+"network!"
+msgstr ""
+"警告: /etc/config/network で、重複するメトリックを設定されているインター"
+"フェースがあります!"
+
+msgid ""
+"WARNING: some interfaces have no default route in the main routing table!"
+msgstr ""
+"警告: メインのルーティング テーブルで、デフォルト ルートを設定されていないイ"
+"ンターフェースがあります!"
+
+msgid ""
+"WARNING: some interfaces have no metric configured in /etc/config/network!"
+msgstr ""
+"警告: /etc/config/network で、メトリックを設定されていないインターフェースが"
+"あります!"
+
+msgid ""
+"WARNING: some rules have a port configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+"警告: 不適切なプロトコルが指定されている、または何も指定されていないポートを"
+"設定されたルールがあります!プロトコルを指定し直してください!"
+
+msgid ""
+"WARNING: this and other interfaces have duplicate metrics configured in /etc/"
+"config/network!"
+msgstr ""
+"警告: これと他のインターフェースで重複するメトリックが /etc/config/network に"
+"設定されています!"
+
+msgid ""
+"WARNING: this interface has a higher reliability requirement than there are "
+"tracking IP addresses!"
+msgstr ""
+"警告: このインターフェースは、追跡 IP アドレスの個数より大きい追跡信頼性の値"
+"を設定されています!"
+
+msgid "WARNING: this interface has no default route in the main routing table!"
+msgstr ""
+"警告: このインターフェースは、メインのルーティング テーブルにデフォルト ルー"
+"トが設定されていません!"
+
+msgid ""
+"WARNING: this interface has no metric configured in /etc/config/network!"
+msgstr ""
+"警告: このインターフェースは、 /etc/config/network でメトリックが設定されてい"
+"ません!"
+
+msgid ""
+"WARNING: this interface is configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+"警告: このインターフェースは /etc/config/network で設定が誤っているか、もしく"
+"は完全に設定されていません!"
+
+msgid ""
+"WARNING: this policy's name is %d characters exceeding the maximum of 15!"
+msgstr ""
+"警告: このポリシーの名前は、最大文字数 15 文字を超える %d 文字が設定されてい"
+"ます!"
+
+msgid ""
+"WARNING: this rule is incorrectly configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+"警告: このルールは不適切なプロトコルが指定されているか、または何も指定されて"
+"いません!プロトコルを指定し直してください!"
+
+msgid "Weight"
+msgstr "ウエイト"
+
+msgid ""
+"When all policy members are offline use this behavior for matched traffic"
+msgstr ""
+"ポリシーの全メンバーがオフラインの場合、合致したトラフィックに対してこのふる"
+"まいが使用されます。"
+
+msgid "Wireless Config"
+msgstr "無線設定"
+
+msgid "Yes"
+msgstr "はい"
+
+msgid "always"
+msgstr "always"
+
+msgid "blackhole (drop)"
+msgstr "blackhole (drop)"
+
+msgid "default (use main routing table)"
+msgstr "デフォルト(メインのルーティング テーブルを使用)"
+
+msgid "ifdown"
+msgstr "ifdown"
+
+msgid "ifup"
+msgstr "ifup"
+
+msgid "never"
+msgstr "never"
+
+msgid "unreachable (reject)"
+msgstr "unreachable (reject)"
diff --git a/applications/luci-app-mwan3/po/templates/mwan3.pot b/applications/luci-app-mwan3/po/templates/mwan3.pot
new file mode 100644 (file)
index 0000000..0bda248
--- /dev/null
@@ -0,0 +1,464 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "%d hour"
+msgstr ""
+
+msgid "%d minute"
+msgstr ""
+
+msgid "%d minutes"
+msgstr ""
+
+msgid "%d second"
+msgstr ""
+
+msgid "%d seconds"
+msgstr ""
+
+msgid ""
+"Acceptable values: 1-100. This many Tracking IP addresses must respond for "
+"the link to be deemed up"
+msgstr ""
+
+msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Check IP rules"
+msgstr ""
+
+msgid "Check routing table"
+msgstr ""
+
+msgid "Configuration"
+msgstr ""
+
+msgid "Currently Configured Interfaces"
+msgstr ""
+
+msgid "Currently Configured Members"
+msgstr ""
+
+msgid "Currently Configured Policies"
+msgstr ""
+
+msgid "Destination address"
+msgstr ""
+
+msgid "Destination port"
+msgstr ""
+
+msgid "Detailed Status"
+msgstr ""
+
+msgid "Diagnostic Results"
+msgstr ""
+
+msgid "Diagnostics"
+msgstr ""
+
+msgid ""
+"Downed interface will be deemed up after this many successful ping tests"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
+msgid "Errors"
+msgstr ""
+
+msgid "Failure interval"
+msgstr ""
+
+msgid "Flush conntrack table"
+msgstr ""
+
+msgid "Flush global firewall conntrack table on interface events"
+msgstr ""
+
+msgid "Hotplug Script"
+msgstr ""
+
+msgid "Hotplug ifdown"
+msgstr ""
+
+msgid "Hotplug ifup"
+msgstr ""
+
+msgid "IPset"
+msgstr ""
+
+msgid "IPv4"
+msgstr ""
+
+msgid "IPv6"
+msgstr ""
+
+msgid "Interface"
+msgstr ""
+
+msgid "Interface Status"
+msgstr ""
+
+msgid "Interface down"
+msgstr ""
+
+msgid "Interface up"
+msgstr ""
+
+msgid "Interface will be deemed down after this many failed ping tests"
+msgstr ""
+
+msgid "Interfaces"
+msgstr ""
+
+msgid "Internet Protocol"
+msgstr ""
+
+msgid "Last resort"
+msgstr ""
+
+msgid "Load Balancing"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "MWAN Config"
+msgstr ""
+
+msgid "MWAN Detailed Status"
+msgstr ""
+
+msgid "MWAN Interface Configuration"
+msgstr ""
+
+msgid "MWAN Interface Configuration - %s"
+msgstr ""
+
+msgid "MWAN Interface Diagnostics"
+msgstr ""
+
+msgid "MWAN Interface Live Status"
+msgstr ""
+
+msgid "MWAN Interface Systemlog"
+msgstr ""
+
+msgid "MWAN Member Configuration"
+msgstr ""
+
+msgid "MWAN Member Configuration - %s"
+msgstr ""
+
+msgid "MWAN Policy Configuration"
+msgstr ""
+
+msgid "MWAN Policy Configuration - %s"
+msgstr ""
+
+msgid "MWAN Rule Configuration"
+msgstr ""
+
+msgid "MWAN Rule Configuration - %s"
+msgstr ""
+
+msgid "MWAN Service Control"
+msgstr ""
+
+msgid ""
+"MWAN supports up to 250 physical and/or logical interfaces<br />MWAN "
+"requires that all interfaces have a unique metric configured in /etc/config/"
+"network<br />Names must match the interface name found in /etc/config/"
+"network (see advanced tab)<br />Names may contain characters A-Z, a-z, 0-9, "
+"_ and no spaces<br />Interfaces may not share the same name as configured "
+"members, policies or rules"
+msgstr ""
+
+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 ""
+
+msgid "Member used"
+msgstr ""
+
+msgid "Members"
+msgstr ""
+
+msgid ""
+"Members are profiles attaching a metric and weight to an MWAN interface<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Members "
+"may not share the same name as configured interfaces, policies or rules"
+msgstr ""
+
+msgid "Members assigned"
+msgstr ""
+
+msgid "Metric"
+msgstr ""
+
+msgid ""
+"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")"
+msgstr ""
+
+msgid "Network Config"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid "Ping count"
+msgstr ""
+
+msgid "Ping default gateway"
+msgstr ""
+
+msgid "Ping interval"
+msgstr ""
+
+msgid "Ping interval during failure detection"
+msgstr ""
+
+msgid "Ping interval during failure recovering"
+msgstr ""
+
+msgid "Ping size"
+msgstr ""
+
+msgid "Ping timeout"
+msgstr ""
+
+msgid "Ping tracking IP"
+msgstr ""
+
+msgid "Policies"
+msgstr ""
+
+msgid ""
+"Policies are profiles grouping one or more members controlling how MWAN "
+"distributes traffic<br />Member interfaces with lower metrics are used "
+"first. Interfaces with the same metric load-balance<br />Load-balanced "
+"member interfaces distribute more traffic out those with higher weights<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
+"15 characters or less<br />Policies may not share the same name as "
+"configured interfaces, members or rules"
+msgstr ""
+
+msgid "Policy assigned"
+msgstr ""
+
+msgid "Protocol"
+msgstr ""
+
+msgid "Recovery interval"
+msgstr ""
+
+msgid "Restart MWAN"
+msgstr ""
+
+msgid "Restore default hotplug script"
+msgstr ""
+
+msgid "Restore..."
+msgstr ""
+
+msgid "Rules"
+msgstr ""
+
+msgid ""
+"Rules specify which traffic will use a particular MWAN policy based on IP "
+"address, port or protocol<br />Rules are matched from top to bottom. Rules "
+"below a matching rule are ignored. Traffic not matching any rule is routed "
+"using the main routing table<br />Traffic destined for known (other than "
+"default) networks is handled by the main routing table. Traffic matching a "
+"rule, but all WAN interfaces for that policy are down will be blackholed<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Rules may "
+"not share the same name as configured interfaces, members or policies"
+msgstr ""
+
+msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
+msgstr ""
+
+msgid "Source address"
+msgstr ""
+
+msgid "Source port"
+msgstr ""
+
+msgid "Start MWAN"
+msgstr ""
+
+msgid "Sticky"
+msgstr ""
+
+msgid "Sticky timeout"
+msgstr ""
+
+msgid "Stop MWAN"
+msgstr ""
+
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgstr ""
+
+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 ""
+
+msgid ""
+"This displays the metric assigned to this interface in /etc/config/network"
+msgstr ""
+
+msgid "This section allows you to modify the contents of /etc/config/mwan3"
+msgstr ""
+
+msgid "This section allows you to modify the contents of /etc/config/network"
+msgstr ""
+
+msgid "This section allows you to modify the contents of /etc/config/wireless"
+msgstr ""
+
+msgid ""
+"This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
+"mwancustom<br />This is useful for running system commands and/or scripts "
+"based on interface ifup or ifdown hotplug events<br /><br />Notes:<br />The "
+"first line of the script must be &#34;#!/bin/sh&#34; without quotes<br /"
+">Lines beginning with # are comments and are not executed<br /><br /"
+">Available variables:<br />$ACTION is the hotplug event (ifup, ifdown)<br />"
+"$INTERFACE is the interface name (wan1, wan2, etc.)<br />$DEVICE is the "
+"device name attached to the interface (eth0.1, eth1, etc.)"
+msgstr ""
+
+msgid "Tracking IP"
+msgstr ""
+
+msgid "Tracking reliability"
+msgstr ""
+
+msgid "Traffic Rules"
+msgstr ""
+
+msgid ""
+"Traffic from the same source IP address that previously matched this rule "
+"within the sticky timeout period will use the same WAN interface"
+msgstr ""
+
+msgid "Troubleshooting"
+msgstr ""
+
+msgid "Troubleshooting Data"
+msgstr ""
+
+msgid "View the contents of /etc/protocols for protocol descriptions"
+msgstr ""
+
+msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
+msgstr ""
+
+msgid ""
+"WARNING: Some policies have names exceeding the maximum of 15 characters!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces are configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have a higher reliability requirement than there "
+"are tracking IP addresses!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have duplicate metrics configured in /etc/config/"
+"network!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have no default route in the main routing table!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have no metric configured in /etc/config/network!"
+msgstr ""
+
+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 ""
+
+msgid ""
+"WARNING: this interface has a higher reliability requirement than there are "
+"tracking IP addresses!"
+msgstr ""
+
+msgid "WARNING: this interface has no default route in the main routing table!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface has no metric configured in /etc/config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface is configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this policy's name is %d characters exceeding the maximum of 15!"
+msgstr ""
+
+msgid ""
+"WARNING: this rule is incorrectly configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid ""
+"When all policy members are offline use this behavior for matched traffic"
+msgstr ""
+
+msgid "Wireless Config"
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "always"
+msgstr ""
+
+msgid "blackhole (drop)"
+msgstr ""
+
+msgid "default (use main routing table)"
+msgstr ""
+
+msgid "ifdown"
+msgstr ""
+
+msgid "ifup"
+msgstr ""
+
+msgid "never"
+msgstr ""
+
+msgid "unreachable (reject)"
+msgstr ""
diff --git a/applications/luci-app-mwan3/po/zh-cn/mwan3.po b/applications/luci-app-mwan3/po/zh-cn/mwan3.po
new file mode 100644 (file)
index 0000000..b8948b3
--- /dev/null
@@ -0,0 +1,510 @@
+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 小时"
+
+msgid "%d minute"
+msgstr "%d 分钟"
+
+msgid "%d minutes"
+msgstr "%d 分钟"
+
+msgid "%d second"
+msgstr "%d 秒"
+
+msgid "%d seconds"
+msgstr "%d 秒"
+
+msgid ""
+"Acceptable values: 1-100. This many Tracking IP addresses must respond for "
+"the link to be deemed up"
+msgstr ""
+"接受的值: 1-100。这个设置项指定了当多少个IP地址能够连通时接口会被认为在线"
+
+msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
+msgstr "接受的值: 1-100。如果不填写,默认值为 1"
+
+msgid "Advanced"
+msgstr "高级"
+
+msgid "Check IP rules"
+msgstr "检查IP规则"
+
+msgid "Check routing table"
+msgstr "检查路由表"
+
+msgid "Configuration"
+msgstr "配置"
+
+msgid "Currently Configured Interfaces"
+msgstr "当前配置的接口"
+
+msgid "Currently Configured Members"
+msgstr "当前配置的成员"
+
+msgid "Currently Configured Policies"
+msgstr "当前配置的策略"
+
+msgid "Destination address"
+msgstr "目标地址"
+
+msgid "Destination port"
+msgstr "目标端口"
+
+msgid "Detailed Status"
+msgstr "详细状态"
+
+msgid "Diagnostic Results"
+msgstr "诊断结果"
+
+msgid "Diagnostics"
+msgstr "诊断"
+
+msgid ""
+"Downed interface will be deemed up after this many successful ping tests"
+msgstr "当 Ping 成功次数达到这个数值后,已经被认为离线的接口将会重新上线"
+
+msgid "Enabled"
+msgstr "启用"
+
+msgid "Errors"
+msgstr "错误"
+
+msgid "Failure interval"
+msgstr "故障检测间隔"
+
+msgid "Flush conntrack table"
+msgstr "刷新连接跟踪表"
+
+msgid "Flush global firewall conntrack table on interface events"
+msgstr "在接口事件触发时刷新全局防火墙连接跟踪表"
+
+msgid "Hotplug Script"
+msgstr "Hotplug 脚本"
+
+msgid "Hotplug ifdown"
+msgstr "Hotplug ifdown"
+
+msgid "Hotplug ifup"
+msgstr "Hotplug ifup"
+
+msgid "IPset"
+msgstr "IPset"
+
+msgid "IPv4"
+msgstr "IPv4"
+
+msgid "IPv6"
+msgstr "IPv6"
+
+msgid "Interface"
+msgstr "接口"
+
+msgid "Interface Status"
+msgstr "接口状态"
+
+msgid "Interface down"
+msgstr "接口离线"
+
+msgid "Interface up"
+msgstr "接口上线"
+
+msgid "Interface will be deemed down after this many failed ping tests"
+msgstr "当 Ping 失败次数达到这个数值后接口会被认为离线"
+
+msgid "Interfaces"
+msgstr "接口"
+
+msgid "Internet Protocol"
+msgstr "互联网协议"
+
+msgid "Last resort"
+msgstr "备用成员"
+
+msgid "Load Balancing"
+msgstr "负载均衡"
+
+msgid "Loading"
+msgstr "载入中"
+
+msgid "MWAN Config"
+msgstr "MWAN 配置文件"
+
+msgid "MWAN Detailed Status"
+msgstr "MWAN 详细状态"
+
+msgid "MWAN Interface Configuration"
+msgstr "MWAN 接口配置"
+
+msgid "MWAN Interface Configuration - %s"
+msgstr "MWAN 接口配置 - %s"
+
+msgid "MWAN Interface Diagnostics"
+msgstr "MWAN 接口诊断"
+
+msgid "MWAN Interface Live Status"
+msgstr "MWAN 接口实时状态"
+
+msgid "MWAN Interface Systemlog"
+msgstr "MWAN 接口系统日志"
+
+msgid "MWAN Member Configuration"
+msgstr "MWAN 成员配置"
+
+msgid "MWAN Member Configuration - %s"
+msgstr "MWAN 成员配置 - %s"
+
+msgid "MWAN Policy Configuration"
+msgstr "MWAN 策略配置"
+
+msgid "MWAN Policy Configuration - %s"
+msgstr "MWAN 策略配置 - %s"
+
+msgid "MWAN Rule Configuration"
+msgstr "MWAN 规则配置"
+
+msgid "MWAN Rule Configuration - %s"
+msgstr "MWAN 规则配置 - %s"
+
+msgid "MWAN Service Control"
+msgstr "MWAN 服务控制"
+
+msgid ""
+"MWAN supports up to 250 physical and/or logical interfaces<br />MWAN "
+"requires that all interfaces have a unique metric configured in /etc/config/"
+"network<br />Names must match the interface name found in /etc/config/"
+"network (see advanced tab)<br />Names may contain characters A-Z, a-z, 0-9, "
+"_ and no spaces<br />Interfaces may not share the same name as configured "
+"members, policies or rules"
+msgstr ""
+"MWAN 支持最多 250 个物理或逻辑接口。<br />MWAN 要求所有接口必须在 /etc/"
+"config/network 中设定唯一的网关跃点。<br />名称必须与 /etc/config/network 中"
+"的接口名称匹配。(可查看“高级”选项卡)<br />名称允许包括A-Z、a-z、0-9、_ 但是不"
+"能有空格。<br />接口不应该与成员、策略、规则中的任意一个设置项使用相同的名称"
+
+msgid ""
+"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
+"as a portrange (eg \"1024:2048\") without quotes"
+msgstr ""
+"可以输入一个或多个端口 (例如 \"22\" 或者 \"80,443\") 或者是一个端口范围 (例"
+"如 \"1024:2048\") 不含引号"
+
+msgid "Member used"
+msgstr "使用的成员"
+
+msgid "Members"
+msgstr "成员"
+
+msgid ""
+"Members are profiles attaching a metric and weight to an MWAN interface<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Members "
+"may not share the same name as configured interfaces, policies or rules"
+msgstr ""
+"“成员”用来设置每一个 MWAN 接口的跃点数 (即接口优先级) 和所占比重。<br />名称"
+"允许包括 A-Z、 a-、0-9、_ 但是不能有空格。<br />成员不应该与接口、策略、规则"
+"中的任意一个设置项使用相同的名称"
+
+msgid "Members assigned"
+msgstr "分配的成员"
+
+msgid "Metric"
+msgstr "跃点数"
+
+msgid ""
+"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")"
+msgstr ""
+"匹配 IPset 规则列表名称。需要先配置 /etc/dnsmasq.conf 中的 IPset 规则 (例如: "
+"\"ipset=/youtube.com/youtube\")"
+
+msgid "Network Config"
+msgstr "网络配置文件"
+
+msgid "No"
+msgstr "否"
+
+msgid "Overview"
+msgstr "概况"
+
+msgid "Ping count"
+msgstr "Ping 计数"
+
+msgid "Ping default gateway"
+msgstr "Ping 默认网关"
+
+msgid "Ping interval"
+msgstr "Ping 间隔"
+
+msgid "Ping interval during failure detection"
+msgstr "故障检测期间的 Ping 间隔"
+
+msgid "Ping interval during failure recovering"
+msgstr "故障恢复期间的 Ping 间隔"
+
+msgid "Ping size"
+msgstr "Ping 大小"
+
+msgid "Ping timeout"
+msgstr "Ping 超时"
+
+msgid "Ping tracking IP"
+msgstr "Ping 跟踪 IP"
+
+msgid "Policies"
+msgstr "策略"
+
+msgid ""
+"Policies are profiles grouping one or more members controlling how MWAN "
+"distributes traffic<br />Member interfaces with lower metrics are used "
+"first. Interfaces with the same metric load-balance<br />Load-balanced "
+"member interfaces distribute more traffic out those with higher weights<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
+"15 characters or less<br />Policies may not share the same name as "
+"configured interfaces, members or rules"
+msgstr ""
+"“策略”把成员进行分组,告诉 MWAN 如何分配“规则”中使用这一策略的流量<br />拥有"
+"较低跃点数的成员将会被优先使用。拥有相同跃点数的成员把流量进行负载均衡。<br /"
+">进行负载均衡的成员之间拥有较高比重的成员将会被分配到更多流量。<br />名称允许"
+"包括A-Z、a-z、0-9、_ 但是不能有空格。名称应该在 15 个字符以内<br />策略不应该"
+"与接口、成员、规则中的任意一个设置项使用相同的名称"
+
+msgid "Policy assigned"
+msgstr "分配的策略"
+
+msgid "Protocol"
+msgstr "通信协议"
+
+msgid "Recovery interval"
+msgstr "故障恢复间隔"
+
+msgid "Restart MWAN"
+msgstr "重启 MWAN"
+
+msgid "Restore default hotplug script"
+msgstr "恢复默认的 hotplug 脚本"
+
+msgid "Restore..."
+msgstr "恢复..."
+
+msgid "Rules"
+msgstr "规则"
+
+msgid ""
+"Rules specify which traffic will use a particular MWAN policy based on IP "
+"address, port or protocol<br />Rules are matched from top to bottom. Rules "
+"below a matching rule are ignored. Traffic not matching any rule is routed "
+"using the main routing table<br />Traffic destined for known (other than "
+"default) networks is handled by the main routing table. Traffic matching a "
+"rule, but all WAN interfaces for that policy are down will be blackholed<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Rules may "
+"not share the same name as configured interfaces, members or policies"
+msgstr ""
+"“规则”基于 IP 地址、协议、端口把流量划分到指定的“策略”中。<br />规则按照从上"
+"到下的顺序进行匹配。除了第一条能够匹配一次通信的规则以外,其它规则将被忽略。"
+"不匹配任何规则的通信将会由系统默认路由表进行。<br />来自已知的网络的转发流量"
+"由系统默认路由表接手,然后 MWAN 从中匹配出相应的流量并转移到 MWAN 自己的路由"
+"表。但是所有被划分到一个无法使用的策略的流量将会无法正常进行路由。<br />名称"
+"允许包括A-Z、a-z、0-9、_ 但是不能有空格。<br />规则不应该与接口、成员、策略中"
+"的任意一个设置项使用相同的名称"
+
+msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
+msgstr "单位为秒。接受的值: 1-1000000。留空则使用默认值 600 秒"
+
+msgid "Source address"
+msgstr "源地址"
+
+msgid "Source port"
+msgstr "源端口"
+
+msgid "Start MWAN"
+msgstr "启动 MWAN"
+
+msgid "Sticky"
+msgstr "粘滞模式"
+
+msgid "Sticky timeout"
+msgstr "粘滞超时"
+
+msgid "Stop MWAN"
+msgstr "停止 MWAN"
+
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgstr "支持 CIDR 记法 (例如: \"192.168.100.0/24\") 不含引号"
+
+msgid "There are currently %d of 250 supported interfaces configured"
+msgstr ""
+
+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 认为该接"
+"口永远在线"
+
+msgid ""
+"This displays the metric assigned to this interface in /etc/config/network"
+msgstr "这里显示了这个接口在 /etc/config/network 中配置的跃点数"
+
+msgid "This section allows you to modify the contents of /etc/config/mwan3"
+msgstr "这里允许你修改 /etc/config/mwan3 的内容"
+
+msgid "This section allows you to modify the contents of /etc/config/network"
+msgstr "这里允许你修改 /etc/config/network 的内容"
+
+msgid "This section allows you to modify the contents of /etc/config/wireless"
+msgstr "这里允许你修改 /etc/config/wireless 的内容"
+
+msgid ""
+"This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
+"mwancustom<br />This is useful for running system commands and/or scripts "
+"based on interface ifup or ifdown hotplug events<br /><br />Notes:<br />The "
+"first line of the script must be &#34;#!/bin/sh&#34; without quotes<br /"
+">Lines beginning with # are comments and are not executed<br /><br /"
+">Available variables:<br />$ACTION is the hotplug event (ifup, ifdown)<br />"
+"$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 />这可以在接口 "
+"ifup 或 ifdown Hotplug 事件时运行系统命令或脚本<br /><br />注意:<br />脚本的"
+"第一行必须是 &#34;#!/bin/sh&#34; 不含引号<br />以#开头的行是注释,不会执行"
+"<br /><br />可用变量:<br />$ACTION 是 Hotplug 事件 (ifup, ifdown)<br />"
+"$INTERFACE 是接口名称 (wan1、wan2 等)<br />$DEVICE 是连接到接口的设备名称 "
+"(eth0.1、eth1 等)"
+
+msgid "Tracking IP"
+msgstr "跟踪的 IP"
+
+msgid "Tracking reliability"
+msgstr "跟踪可靠性"
+
+msgid "Traffic Rules"
+msgstr "流量规则"
+
+msgid ""
+"Traffic from the same source IP address that previously matched this rule "
+"within the sticky timeout period will use the same WAN interface"
+msgstr ""
+"来自相同源 IP 的流量,如果已经匹配过此规则并且在粘滞超时时间内,将会使用相同"
+"的 WAN 接口"
+
+msgid "Troubleshooting"
+msgstr "故障排除"
+
+msgid "Troubleshooting Data"
+msgstr "故障排除数据"
+
+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 ""
+
+msgid ""
+"WARNING: Some policies have names exceeding the maximum of 15 characters!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces are configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have a higher reliability requirement than there "
+"are tracking IP addresses!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have duplicate metrics configured in /etc/config/"
+"network!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have no default route in the main routing table!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have no metric configured in /etc/config/network!"
+msgstr ""
+
+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 ""
+
+msgid ""
+"WARNING: this interface has a higher reliability requirement than there are "
+"tracking IP addresses!"
+msgstr ""
+
+msgid "WARNING: this interface has no default route in the main routing table!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface has no metric configured in /etc/config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface is configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this policy's name is %d characters exceeding the maximum of 15!"
+msgstr ""
+
+msgid ""
+"WARNING: this rule is incorrectly configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+
+msgid "Weight"
+msgstr "比重"
+
+msgid ""
+"When all policy members are offline use this behavior for matched traffic"
+msgstr "当所有策略成员都无法使用的时候,对使用该策略的流量使用这个操作"
+
+msgid "Wireless Config"
+msgstr "无线配置"
+
+msgid "Yes"
+msgstr "是"
+
+msgid "always"
+msgstr "总是"
+
+msgid "blackhole (drop)"
+msgstr "黑洞 (丢弃)"
+
+msgid "default (use main routing table)"
+msgstr "默认 (使用主路由表)"
+
+msgid "ifdown"
+msgstr "ifdown"
+
+msgid "ifup"
+msgstr "ifup"
+
+msgid "never"
+msgstr "从不"
+
+msgid "unreachable (reject)"
+msgstr "不可达 (拒绝)"
diff --git a/applications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak b/applications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak
new file mode 100755 (executable)
index 0000000..6e2875e
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+# to enable this script uncomment the case loop at the bottom
+# to report mwan status on interface hotplug ifup/ifdown events modify the lines in the send_alert function
+
+send_alert()
+{
+       # variable "$1" stores the MWAN status information
+       # insert your code here to send the contents of "$1"
+       echo "$1"
+}
+
+gather_event_info()
+{
+       # create event information message
+       local EVENT_INFO="Interface [ "$INTERFACE" ($DEVICE) ] on router [ "$(uci -p /var/state get system.@system[0].hostname)" ] has triggered a hotplug [ "$ACTION" ] event on "$(date +"%a %b %d %Y %T %Z")""
+
+       # get current interface, policy and rule status
+       local CURRENT_STATUS="$(/usr/sbin/mwan3 status)"
+
+       # get last 50 MWAN systemlog messages
+       local MWAN_LOG="$(echo -e "Last 50 MWAN systemlog entries. Newest entries sorted at the top:\n$(logread | grep mwan3 | tail -n 50 | sed 'x;1!H;$!d;x')")"
+
+       # pass event info to send_alert function
+       send_alert "$(echo -e "$EVENT_INFO\n\n$CURRENT_STATUS\n\n$MWAN_LOG")"
+}
+
+#case "$ACTION" in
+#      ifup)
+#              gather_event_info
+#      ;;
+#
+#      ifdown)
+#              gather_event_info
+#      ;;
+#esac
+
+exit 0
diff --git a/applications/luci-app-mwan3/root/etc/uci-defaults/60_luci-mwan3 b/applications/luci-app-mwan3/root/etc/uci-defaults/60_luci-mwan3
new file mode 100755 (executable)
index 0000000..ff9a229
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# replace existing mwan ucitrack entry
+uci -q batch <<-EOF >/dev/null
+       del ucitrack.@mwan3[-1]
+       add ucitrack mwan3
+       set ucitrack.@mwan3[-1].exec="/usr/sbin/mwan3 restart"
+       commit ucitrack
+EOF
+
+# remove LuCI cache
+rm -rf /tmp/luci-indexcache /tmp/luci-modulecache
+
+exit 0
index 1461c1d..499176c 100644 (file)
@@ -1,17 +1,17 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2014-06-21 19:36+0200\n"
-"Last-Translator: Éder <eder.grigorio@openmailbox.org>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-02-20 18:01-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"Language-Team: \n"
 
 msgid "Active MID announcements"
 msgstr ""
@@ -59,7 +59,6 @@ msgstr ""
 "Somente pode ser um endereço IPv4 ou IPv6 válidos ou um endereço 'padrão'"
 
 # 20140621: edersg: tradução
-#, fuzzy
 msgid "Can only be a valid IPv6 address or 'default'"
 msgstr ""
 "Somente pode ser um endereço IPv4 ou IPv6 válidos ou um endereço 'padrão'"
@@ -173,7 +172,6 @@ msgstr ""
 "Validade do <abbr title=\"Host and network association, Associação de "
 "equipamentos e redes\">HNA</abbr>"
 
-#, fuzzy
 msgid "HNA6 Announcements"
 msgstr ""
 "Anúncios do <abbr title=\"Host and network association, Associação de "
@@ -215,7 +213,6 @@ msgstr ""
 "Equipamentos em uma rede roteada por OLSR podem anunciar conectividade para "
 "redes externas usando mensagens HNA."
 
-#, fuzzy
 msgid ""
 "Hosts in a OLSR routed network can announce connecitivity to external "
 "networks using HNA6 messages."
@@ -496,7 +493,6 @@ msgstr ""
 "> reduzir LQ para todos os nós nesta interface em 20%: padrão 0.8"
 
 # 20140621: edersg: tradução
-#, fuzzy
 msgid ""
 "Multiply routes with the factor given here. Allowed values are between 0.01 "
 "and 1.0. It is only used when LQ-Level is greater than 0. Examples:<br /"
@@ -551,7 +547,6 @@ msgstr ""
 "OLSR - Anúncios <abbr title=\"Host and network association, Associação de "
 "equipamentos e redes\">HNA</abbr>"
 
-#, fuzzy
 msgid "OLSR - HNA6-Announcements"
 msgstr ""
 "OLSR - Anúncios <abbr title=\"Host and network association, Associação de "
@@ -654,7 +649,6 @@ msgstr ""
 "durante o funcionamento do olsrd. O padrão é 0.0.0.0, que faz com que o "
 "endereço da primeira interface seja usado."
 
-#, fuzzy
 msgid ""
 "Sets the main IP (originator ip) of the router. This IP will NEVER change "
 "during the uptime of olsrd. Default is ::, which triggers usage of the IP of "
@@ -857,7 +851,6 @@ msgstr ""
 "and network association, Associação de equipamentos e redes\">HNA</abbr> "
 "local de 0.0.0.0/0, ::ffff:0:0/96 ou 2000::/3. O padrão é \"ambos\"."
 
-#, fuzzy
 msgid ""
 "Which kind of uplink is exported to the other mesh nodes. An uplink is "
 "detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default "
index 1bbee83..7865881 100644 (file)
@@ -7,192 +7,721 @@ require("luci.model.uci")
 
 local knownParams = {
        --
-       --      Widget                  Name                                                    Default(s)                                                                                                              Description     Option(s)
-       --
+       --Widget
+       --      Name
+       --      Default(s)
+       --      Description
+       --      Option(s)
 
        { "Service", {
-               -- initialisation and daemon options
-               { ListValue,    "verb",                                                 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },                                               translate("Set output verbosity") },
-               { Flag,                 "mlock",                                                0,                                                                                                                              translate("Disable Paging") },
-               { Flag,                 "disable_occ",                                  0,                                                                                                                              translate("Disable options consistency check") },
-       --      { Value,                "user",                                                 "root",                                                                                                                 translate("Set UID to user") },
-       --      { Value,                "group",                                                "root",                                                                                                                 translate("Set GID to group") },
-               { Value,                "cd",                                                   "/etc/openvpn",                                                                                                 translate("Change to directory before initialization") },
-               { Value,                "chroot",                                               "/var/run",                                                                                                             translate("Chroot to directory after initialization") },
-       --      { Value,                "daemon",                                               "Instance-Name",                                                                                                translate("Daemonize after initialization") },
-       --      { Value,                "syslog",                                               "Instance-Name",                                                                                                translate("Output to syslog and do not daemonize") },
-               { Flag,                 "passtos",                                              0,                                                                                                                              translate("TOS passthrough (applies to IPv4 only)") },
-       --      { Value,                "inetd",                                                "nowait Instance-Name",                                                                                 translate("Run as an inetd or xinetd server") },
-               { Value,                "log",                                                  "/var/log/openvpn.log",                                                                                 translate("Write log to file") },
-               { Value,                "log_append",                                   "/var/log/openvpn.log",                                                                                 translate("Append log to file") },
-               { Flag,                 "suppress_timestamps",                  0,                                                                                                                              translate("Don't log timestamps") },
-       --      { Value,                "writepid",                                             "/var/run/openvpn.pid",                                                                                 translate("Write process ID to file") },
-               { Value,                "nice",                                                 0,                                                                                                                              translate("Change process priority") },
-               { Flag,                 "fast_io",                                              0,                                                                                                                              translate("Optimize TUN/TAP/UDP writes") },
-               { Value,                "echo",                                                 "some params echoed to log",                                                                    translate("Echo parameters to log") },
-               { ListValue,    "remap_usr1",                                   { "SIGHUP", "SIGTERM" },                                                                                translate("Remap SIGUSR1 signals") },
-               { Value,                "status",                                               "/var/run/openvpn.status 5",                                                                    translate("Write status to file every n seconds") },
-               { Value,                "status_version",                               { 1, 2 },                                                                                                               translate("Status file format version") },      -- status
-               { Value,                "mute",                                                 5,                                                                                                                              translate("Limit repeated log messages") },
-
-               { Value,                "up",                                                   "/usr/bin/ovpn-up",                                                                                             translate("Shell cmd to execute after tun device open") },
-               { Value,                "up_delay",                                             5,                                                                                                                              translate("Delay tun/tap open and up script execution") },
-               { Value,                "down",                                                 "/usr/bin/ovpn-down",                                                                                   translate("Shell cmd to run after tun device close") },
-               { Flag,                 "down_pre",                                             0,                                                                                                                              translate("Call down cmd/script before TUN/TAP close") },
-               { Flag,                 "up_restart",                                   0,                                                                                                                              translate("Run up/down scripts for all restarts") },
-               { Value,                "route_up",                                             "/usr/bin/ovpn-routeup",                                                                                translate("Execute shell cmd after routes are added") },
-               { Value,                "ipchange",                                             "/usr/bin/ovpn-ipchange",                                                                               translate("Execute shell command on remote ip change"), { mode="p2p" } },
-               { DynamicList,  "setenv",                                               { "VAR1 value1", "VAR2 value2" },                                                               translate("Pass environment variables to script") },
-               { Value,                "tls_verify",                                   "/usr/bin/ovpn-tlsverify",                                                                              translate("Shell command to verify X509 name") },
-               { Value,                "client_connect",                               "/usr/bin/ovpn-clientconnect",                                                                  translate("Run script cmd on client connection") },
-               { Flag,                 "client_disconnect",                    0,                                                                                                                              translate("Run script cmd on client disconnection") },
-               { Value,                "learn_address",                                "/usr/bin/ovpn-learnaddress",                                                                   translate("Executed in server mode whenever an IPv4 address/route or MAC address is added to OpenVPN's internal routing table") },
-               { Value,                "auth_user_pass_verify",                "/usr/bin/ovpn-userpass via-env",                                                               translate("Executed in server mode on new client connections, when the client is still untrusted") },
-               { ListValue,    "script_security",                              { 0, 1, 2, 3 },                                                                                                 translate("Policy level over usage of external programs and scripts") },
+       -- initialisation and daemon options
+               { ListValue,
+                       "verb",
+                       { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },
+                       translate("Set output verbosity") },
+               { Flag,
+                       "mlock",
+                       0,
+                       translate("Disable Paging") },
+               { Flag,
+                       "disable_occ",
+                       0,
+                       translate("Disable options consistency check") },
+       --      { Value,
+       --              "user",
+       --              "root",
+       --              translate("Set UID to user") },
+       --      { Value,
+       --              "group",
+       --              "root",
+       --              translate("Set GID to group") },
+               { Value,
+                       "cd",
+                       "/etc/openvpn",
+                       translate("Change to directory before initialization") },
+               { Value,
+                       "chroot",
+                       "/var/run",
+                       translate("Chroot to directory after initialization") },
+       --      { Value,
+       --              "daemon",
+       --              "Instance-Name",
+       --              translate("Daemonize after initialization") },
+       --      { Value,
+       --              "syslog",
+       --              "Instance-Name",
+       --              translate("Output to syslog and do not daemonize") },
+               { Flag,
+                       "passtos",
+                       0,
+                       translate("TOS passthrough (applies to IPv4 only)") },
+       --      { Value,
+       --              "inetd",
+       --              "nowait Instance-Name",
+       --              translate("Run as an inetd or xinetd server") },
+               { Value,
+                       "log",
+                       "/var/log/openvpn.log",
+                       translate("Write log to file") },
+               { Value,
+                       "log_append",
+                       "/var/log/openvpn.log",
+                       translate("Append log to file") },
+               { Flag,
+                       "suppress_timestamps",
+                       0,
+                       translate("Don't log timestamps") },
+       --      { Value,
+       --              "writepid",
+       --              "/var/run/openvpn.pid",
+       --              translate("Write process ID to file") },
+               { Value,
+                       "nice",
+                       0,
+                       translate("Change process priority") },
+               { Flag,
+                       "fast_io",
+                       0,
+                       translate("Optimize TUN/TAP/UDP writes") },
+               { Value,
+                       "echo",
+                       "some params echoed to log",
+                       translate("Echo parameters to log") },
+               { ListValue,
+                       "remap_usr1",
+                       { "SIGHUP", "SIGTERM" },
+                       translate("Remap SIGUSR1 signals") },
+               { Value,
+                       "status",
+                       "/var/run/openvpn.status 5",
+                       translate("Write status to file every n seconds") },
+               { Value,
+                       "status_version",
+                       { 1, 2 },
+                       translate("Status file format version") },      -- status
+               { Value,
+                       "mute",
+                       5,
+                       translate("Limit repeated log messages") },
+               { Value,
+                       "up",
+                       "/usr/bin/ovpn-up",
+                       translate("Shell cmd to execute after tun device open") },
+               { Value,
+                       "up_delay",
+                       5,
+                       translate("Delay tun/tap open and up script execution") },
+               { Value,
+                       "down",
+                       "/usr/bin/ovpn-down",
+                       translate("Shell cmd to run after tun device close") },
+               { Flag,
+                       "down_pre",
+                       0,
+                       translate("Call down cmd/script before TUN/TAP close") },
+               { Flag,
+                       "up_restart",
+                       0,
+                       translate("Run up/down scripts for all restarts") },
+               { Value,
+                       "route_up",
+                       "/usr/bin/ovpn-routeup",
+                       translate("Execute shell cmd after routes are added") },
+               { Value,
+                       "ipchange",
+                       "/usr/bin/ovpn-ipchange",
+                       translate("Execute shell command on remote ip change"),
+                       { mode="p2p" } },
+               { DynamicList,
+                       "setenv",
+                       { "VAR1 value1", "VAR2 value2" },
+                       translate("Pass environment variables to script") },
+               { Value,
+                       "tls_verify",
+                       "/usr/bin/ovpn-tlsverify",
+                       translate("Shell command to verify X509 name") },
+               { Value,
+                       "client_connect",
+                       "/usr/bin/ovpn-clientconnect",
+                       translate("Run script cmd on client connection") },
+               { Flag,
+                       "client_disconnect",
+                       0,
+                       translate("Run script cmd on client disconnection") },
+               { Value,
+                       "learn_address",
+                       "/usr/bin/ovpn-learnaddress",
+                       translate("Executed in server mode whenever an IPv4 address/route or MAC address is added to OpenVPN's internal routing table") },
+               { Value,
+                       "auth_user_pass_verify",
+                       "/usr/bin/ovpn-userpass via-env",
+                       translate("Executed in server mode on new client connections, when the client is still untrusted") },
+               { ListValue,
+                       "script_security",
+                       { 0, 1, 2, 3 },
+                       translate("Policy level over usage of external programs and scripts") },
        } },
 
        { "Networking", {
-               -- socket config
-               { ListValue,    "mode",                                                 { "p2p", "server" },                                                                                    translate("Major mode") },
-               { Value,                "local",                                                "0.0.0.0",                                                                                                              translate("Local host name or ip address") },
-               { Value,                "port",                                                 1194,                                                                                                                   translate("TCP/UDP port # for both local and remote") },
-               { Value,                "lport",                                                1194,                                                                                                                   translate("TCP/UDP port # for local (default=1194)") },
-               { Value,                "rport",                                                1194,                                                                                                                   translate("TCP/UDP port # for remote (default=1194)") },
-               { Flag,                 "float",                                                0,                                                                                                                              translate("Allow remote to change its IP or port") },
-               { Flag,                 "nobind",                                               0,                                                                                                                              translate("Do not bind to local address and port") },
-
-               { Value,                "dev",                                                  "tun0",                                                                                                                 translate("tun/tap device") },
-               { ListValue,    "dev_type",                                             { "tun", "tap" },                                                                                               translate("Type of used device") },
-               { Value,                "dev_node",                                             "/dev/net/tun",                                                                                                 translate("Use tun/tap device node") },
-               { Flag,                 "tun_ipv6",                                             0,                                                                                                                              translate("Make tun device IPv6 capable") },
-
-               { Value,                "ifconfig",                                             "10.200.200.3 10.200.200.1",                                                                    translate("Set tun/tap adapter parameters") },
-               { Flag,                 "ifconfig_noexec",                              0,                                                                                                                              translate("Don't actually execute ifconfig") },
-               { Flag,                 "ifconfig_nowarn",                              0,                                                                                                                              translate("Don't warn on ifconfig inconsistencies") },
-
-               { DynamicList,  "route",                                                "10.123.0.0 255.255.0.0",                                                                               translate("Add route after establishing connection") },
-               { Value,                "route_gateway",                                "10.234.1.1",                                                                                                   translate("Specify a default gateway for routes") },
-               { Value,                "route_delay",                                  0,                                                                                                                              translate("Delay n seconds after connection") },
-               { Flag,                 "route_noexec",                                 0,                                                                                                                              translate("Don't add routes automatically") },
-               { Flag,                 "route_nopull",                                 0,                                                                                                                              translate("Don't pull routes automatically") },
-
-               { ListValue,    "mtu_disc",                                             { "yes", "maybe", "no" },                                                                               translate("Enable Path MTU discovery") },
-               { Flag,                 "mtu_test",                                             0,                                                                                                                              translate("Empirically measure MTU") },
-               { ListValue,                    "comp_lzo",                             { "yes", "no", "adaptive" },                                                                                                                            translate("Use fast LZO compression") },
-               { Flag,                 "comp_noadapt",                                 0,                                                                                                                              translate("Don't use adaptive lzo compression"),        { comp_lzo=1 } },
-               { Value,                "link_mtu",                                             1500,                                                                                                                   translate("Set TCP/UDP MTU") },
-               { Value,                "tun_mtu",                                              1500,                                                                                                                   translate("Set tun/tap device MTU") },
-               { Value,                "tun_mtu_extra",                                1500,                                                                                                                   translate("Set tun/tap device overhead") },
-               { Value,                "fragment",                                             1500,                                                                                                                   translate("Enable internal datagram fragmentation"),    { proto="udp" } },
-               { Value,                "mssfix",                                               1500,                                                                                                                   translate("Set upper bound on TCP MSS"),        { proto="udp" } },
-               { Value,                "sndbuf",                                               65536,                                                                                                                  translate("Set the TCP/UDP send buffer size") },
-               { Value,                "rcvbuf",                                               65536,                                                                                                                  translate("Set the TCP/UDP receive buffer size") },
-               { Value,                "txqueuelen",                                   100,                                                                                                                    translate("Set tun/tap TX queue length") },
-               { Value,                "shaper",                                               10240,                                                                                                                  translate("Shaping for peer bandwidth") },
-
-               { Value,                "inactive",                                             240,                                                                                                                    translate("tun/tap inactivity timeout") },
-               { Value,                "keepalive",                                    "10 60",                                                                                                                translate("Helper directive to simplify the expression of --ping and --ping-restart in server mode configurations") },
-               { Value,                "ping",                                                 30,                                                                                                                             translate("Ping remote every n seconds over TCP/UDP port") },
-               { Value,                "ping_exit",                                    120,                                                                                                                    translate("Remote ping timeout") },
-               { Value,                "ping_restart",                                 60,                                                                                                                             translate("Restart after remote ping timeout") },
-               { Flag,                 "ping_timer_rem",                               0,                                                                                                                              translate("Only process ping timeouts if routes exist") },
-
-               { Flag,                 "persist_tun",                                  0,                                                                                                                              translate("Keep tun/tap device open on restart") },
-               { Flag,                 "persist_key",                                  0,                                                                                                                              translate("Don't re-read key on restart") },
-               { Flag,                 "persist_local_ip",                             0,                                                                                                                              translate("Keep local IP address on restart") },
-               { Flag,                 "persist_remote_ip",                    0,                                                                                                                              translate("Keep remote IP address on restart") },
-
-               -- management channel
-               { Value,                "management",                                   "127.0.0.1 31194 /etc/openvpn/mngmt-pwds",                                              translate("Enable management interface on <em>IP</em> <em>port</em>") },
-               { Flag,                 "management_query_passwords",   0,                                                                                                                              translate("Query management channel for private key") },        -- management
-               { Flag,                 "management_hold",                              0,                                                                                                                              translate("Start OpenVPN in a hibernating state") },    -- management
-               { Value,                "management_log_cache",                 100,                                                                                                                    translate("Number of lines for log file history") },    -- management
-               { ListValue,    "topology",                                             { "net30", "p2p", "subnet" },                                                                   translate("'net30', 'p2p', or 'subnet'"),       {dev_type="tun" } },
+       -- socket config
+               { ListValue,
+                       "mode",
+                       { "p2p", "server" },
+                       translate("Major mode") },
+               { Value,
+                       "local",
+                       "0.0.0.0",
+                       translate("Local host name or ip address") },
+               { Value,
+                       "port",
+                       1194,
+                       translate("TCP/UDP port # for both local and remote") },
+               { Value,
+                       "lport",
+                       1194,
+                       translate("TCP/UDP port # for local (default=1194)") },
+               { Value,
+                       "rport",
+                       1194,
+                       translate("TCP/UDP port # for remote (default=1194)") },
+               { Flag,
+                       "float",
+                       0,
+                       translate("Allow remote to change its IP or port") },
+               { Flag,
+                       "nobind",
+                       0,
+                       translate("Do not bind to local address and port") },
+               { Value,
+                       "dev",
+                       "tun0",
+                       translate("tun/tap device") },
+               { ListValue,
+                       "dev_type",
+                       { "tun", "tap" },
+                       translate("Type of used device") },
+               { Value,
+                       "dev_node",
+                       "/dev/net/tun",
+                       translate("Use tun/tap device node") },
+               { Flag,
+                       "tun_ipv6",
+                       0,
+                       translate("Make tun device IPv6 capable") },
+               { Value,
+                       "ifconfig",
+                       "10.200.200.3 10.200.200.1",
+                       translate("Set tun/tap adapter parameters") },
+               { Flag,
+                       "ifconfig_noexec",
+                       0,
+                       translate("Don't actually execute ifconfig") },
+               { Flag,
+                       "ifconfig_nowarn",
+                       0,
+                       translate("Don't warn on ifconfig inconsistencies") },
+               { DynamicList,
+                       "route",
+                       "10.123.0.0 255.255.0.0",
+                       translate("Add route after establishing connection") },
+               { Value,
+                       "route_gateway",
+                       "10.234.1.1",
+                       translate("Specify a default gateway for routes") },
+               { Value,
+                       "route_delay",
+                       0,
+                       translate("Delay n seconds after connection") },
+               { Flag,
+                       "route_noexec",
+                       0,
+                       translate("Don't add routes automatically") },
+               { Flag,
+                       "route_nopull",
+                       0,
+                       translate("Don't pull routes automatically") },
+               { ListValue,
+                       "mtu_disc",
+                       { "yes", "maybe", "no" },
+                       translate("Enable Path MTU discovery") },
+               { Flag,
+                       "mtu_test",
+                       0,
+                       translate("Empirically measure MTU") },
+               { ListValue,
+                       "comp_lzo",
+                       { "yes", "no", "adaptive" },
+                       translate("Use fast LZO compression") },
+               { Flag,
+                       "comp_noadapt",
+                       0,
+                       translate("Don't use adaptive lzo compression"),
+                       { comp_lzo=1 } },
+               { Value,
+                       "link_mtu",
+                       1500,
+                       translate("Set TCP/UDP MTU") },
+               { Value,
+                       "tun_mtu",
+                       1500,
+                       translate("Set tun/tap device MTU") },
+               { Value,
+                       "tun_mtu_extra",
+                       1500,
+                       translate("Set tun/tap device overhead") },
+               { Value,
+                       "fragment",
+                       1500,
+                       translate("Enable internal datagram fragmentation"),
+                       { proto="udp" } },
+               { Value,
+                       "mssfix",
+                       1500,
+                       translate("Set upper bound on TCP MSS"),
+                       { proto="udp" } },
+               { Value,
+                       "sndbuf",
+                       65536,
+                       translate("Set the TCP/UDP send buffer size") },
+               { Value,
+                       "rcvbuf",
+                       65536,
+                       translate("Set the TCP/UDP receive buffer size") },
+               { Value,
+                       "txqueuelen",
+                       100,
+                       translate("Set tun/tap TX queue length") },
+               { Value,
+                       "shaper",
+                       10240,
+                       translate("Shaping for peer bandwidth") },
+               { Value,
+                       "inactive",
+                       240,
+                       translate("tun/tap inactivity timeout") },
+               { Value,
+                       "keepalive",
+                       "10 60",
+                       translate("Helper directive to simplify the expression of --ping and --ping-restart in server mode configurations") },
+               { Value,
+                       "ping",
+                       30,
+                       translate("Ping remote every n seconds over TCP/UDP port") },
+               { Value,
+                       "ping_exit",
+                       120,
+                       translate("Remote ping timeout") },
+               { Value,
+                       "ping_restart",
+                       60,
+                       translate("Restart after remote ping timeout") },
+               { Flag,
+                       "ping_timer_rem",
+                       0,
+                       translate("Only process ping timeouts if routes exist") },
+               { Flag,
+                       "persist_tun",
+                       0,
+                       translate("Keep tun/tap device open on restart") },
+               { Flag,
+                       "persist_key",
+                       0,
+                       translate("Don't re-read key on restart") },
+               { Flag,
+                       "persist_local_ip",
+                       0,
+                       translate("Keep local IP address on restart") },
+               { Flag,
+                       "persist_remote_ip",
+                       0,
+                       translate("Keep remote IP address on restart") },
+       -- management channel
+               { Value,
+                       "management",
+                       "127.0.0.1 31194 /etc/openvpn/mngmt-pwds",
+                       translate("Enable management interface on <em>IP</em> <em>port</em>") },
+       -- management
+               { Flag,
+                       "management_query_passwords",
+                       0,
+                       translate("Query management channel for private key") },
+       -- management
+               { Flag,
+                       "management_hold",
+                       0,
+                       translate("Start OpenVPN in a hibernating state") },
+       -- management
+               { Value,
+                       "management_log_cache",
+                       100,
+                       translate("Number of lines for log file history") },
+               { ListValue,
+                       "topology",
+                       { "net30", "p2p", "subnet" },
+                       translate("'net30', 'p2p', or 'subnet'"),
+                       {dev_type="tun" } },
        } },
 
        { "VPN", {
-               { Value,                "server",                                               "10.200.200.0 255.255.255.0",                                                                   translate("Configure server mode"),     { server_mode="1" } },
-               { Value,                "server_bridge",                                "10.200.200.1 255.255.255.0 10.200.200.200 10.200.200.250",             translate("Configure server bridge"),   { server_mode="1" } },
-               { DynamicList,  "push",                                                 { "redirect-gateway", "comp-lzo" },                                                             translate("Push options to peer"),      { server_mode="1" } },
-               { Flag,                 "push_reset",                                   0,                                                                                                                              translate("Don't inherit global push options"), { server_mode="1" } },
-               { Flag,                 "disable",                                              0,                                                                                                                              translate("Client is disabled"),        { server_mode="1" } },
-               { Value,                "ifconfig_pool",                                "10.200.200.100 10.200.200.150 255.255.255.0",                                  translate("Set aside a pool of subnets"),       { server_mode="1" } },
-               { Value,                "ifconfig_pool_persist",                "/etc/openvpn/ipp.txt 600",                                                                             translate("Persist/unpersist ifconfig-pool"),   { server_mode="1" } },
---             { Flag,                 "ifconfig_pool_linear",                 0,                                                                                                                              translate("Use individual addresses rather than /30 subnets"),  { server_mode="1" } }, -- deprecated and replaced by --topology p2p
-               { Value,                "ifconfig_push",                                "10.200.200.1 255.255.255.255",                                                                 translate("Push an ifconfig option to remote"), { server_mode="1" } },
-               { Value,                "iroute",                                               "10.200.200.0 255.255.255.0",                                                                   translate("Route subnet to client"),    { server_mode="1" } },
-               { Flag,                 "client_to_client",                             0,                                                                                                                              translate("Allow client-to-client traffic"),    { server_mode="1" } },
-               { Flag,                 "duplicate_cn",                                 0,                                                                                                                              translate("Allow multiple clients with same certificate"),      { server_mode="1" } },
-               { Value,                "client_config_dir",                    "/etc/openvpn/ccd",                                                                                             translate("Directory for custom client config files"),  { server_mode="1" } },
-               { Flag,                 "ccd_exclusive",                                0,                                                                                                                              translate("Refuse connection if no custom client config"),      { server_mode="1" } },
-               { Value,                "tmp_dir",                                              "/var/run/openvpn",                                                                                             translate("Temporary directory for client-connect return file"),        { server_mode="1" } },
-               { Value,                "hash_size",                                    "256 256",                                                                                                              translate("Set size of real and virtual address hash tables"),  { server_mode="1" } },
-               { Value,                "bcast_buffers",                                256,                                                                                                                    translate("Number of allocated broadcast buffers"),     { server_mode="1" } },
-               { Value,                "tcp_queue_limit",                              64,                                                                                                                             translate("Maximum number of queued TCP output packets"),       { server_mode="1" } },
-               { Value,                "max_clients",                                  10,                                                                                                                             translate("Allowed maximum of connected clients"),      { server_mode="1" } },
-               { Value,                "max_routes_per_client",                256,                                                                                                                    translate("Allowed maximum of internal"),       { server_mode="1" } },
-               { Value,                "connect_freq",                                 "3 10",                                                                                                                 translate("Allowed maximum of new connections"),        { server_mode="1" } },
-               { Flag,                 "client_cert_not_required",             0,                                                                                                                              translate("Don't require client certificate"),  { server_mode="1" } },
-               { Flag,                 "username_as_common_name",              0,                                                                                                                              translate("Use username as common name"),       { server_mode="1" } },
-               { Flag,                 "client",                                               0,                                                                                                                              translate("Configure client mode"),     { server_mode="0" }, { server_mode="" } },
-               { Flag,                 "pull",                                                 0,                                                                                                                              translate("Accept options pushed from server"), { client="1" } },
-               { Value,                "auth_user_pass",                               "/etc/openvpn/userpass.txt",                                                                    translate("Authenticate using username/password"),      { client="1" } },
-               { ListValue,    "auth_retry",                                   { "none", "nointeract", "interact" },                                                   translate("Handling of authentication failures"),       { client="1" } },
-               { Value,                "explicit_exit_notify",                 1,                                                                                                                              translate("Send notification to peer on disconnect"),   { client="1" } },
-               { DynamicList,  "remote",                                               "1.2.3.4",                                                                                                              translate("Remote host name or ip address"),    { client="1" } },
-               { Flag,                 "remote_random",                                1,                                                                                                                              translate("Randomly choose remote server"),     { client="1" } },
-               { ListValue,    "proto",                                                { "udp", "tcp-client", "tcp-server" },                                                  translate("Use protocol"),      { client="1" } },
-               { Value,                "connect_retry",                                5,                                                                                                                              translate("Connection retry interval"), { proto="tcp-client" }, { client="1" } },
-               { Value,                "http_proxy",                                   "192.168.1.100 8080",                                                                                   translate("Connect to remote host through an HTTP proxy"),      { client="1" } },
-               { Flag,                 "http_proxy_retry",                             0,                                                                                                                              translate("Retry indefinitely on HTTP proxy errors"),   { client="1" } },
-               { Value,                "http_proxy_timeout",                   5,                                                                                                                              translate("Proxy timeout in seconds"),  { client="1" } },
-               { DynamicList,  "http_proxy_option",                    { "VERSION 1.0", "AGENT OpenVPN/2.0.9" },                                               translate("Set extended HTTP proxy options"),   { client="1" } },
-               { Value,                "socks_proxy",                                  "192.168.1.200 1080",                                                                                   translate("Connect through Socks5 proxy"),      { client="1" } },
-               { Value,                "socks_proxy_retry",                    5,                                                                                                                              translate("Retry indefinitely on Socks proxy errors"),  { client="1" } },       -- client && socks_proxy
-               { Value,                "resolv_retry",                                 "infinite",                                                                                                             translate("If hostname resolve fails, retry"),  { client="1" } },
-               { ListValue,    "redirect_gateway",                             { "", "local", "def1", "local def1" },                                                  translate("Automatically redirect default route"),      { client="1" } },
+               { Value,
+                       "server",
+                       "10.200.200.0 255.255.255.0",
+                       translate("Configure server mode"),
+                       { client="0" }, { client="" } },
+               { Value,
+                       "server_bridge",
+                       "10.200.200.1 255.255.255.0 10.200.200.200 10.200.200.250",
+                       translate("Configure server bridge"),
+                       { client="0" }, { client="" } },
+               { DynamicList,
+                       "push",
+                       { "redirect-gateway", "comp-lzo" },
+                       translate("Push options to peer"),
+                       { client="0" }, { client="" } },
+               { Flag,
+                       "push_reset",
+                       0,
+                       translate("Don't inherit global push options"),
+                       { client="0" }, { client="" } },
+               { Flag,
+                       "disable",
+                       0,
+                       translate("Client is disabled"),
+                       { client="0" }, { client="" } },
+               { Value,
+                       "ifconfig_pool",
+                       "10.200.200.100 10.200.200.150 255.255.255.0",
+                       translate("Set aside a pool of subnets"),
+                       { client="0" }, { client="" } },
+               { Value,
+                       "ifconfig_pool_persist",
+                       "/etc/openvpn/ipp.txt 600",
+                       translate("Persist/unpersist ifconfig-pool"),
+                       { client="0" }, { client="" } },
+       -- deprecated and replaced by --topology p2p
+       --      { Flag,
+       --              "ifconfig_pool_linear",
+       --              0,
+       --              translate("Use individual addresses rather than /30 subnets"),
+       --              { client="0" }, { client="" } },
+               { Value,
+                       "ifconfig_push",
+                       "10.200.200.1 255.255.255.255",
+                       translate("Push an ifconfig option to remote"),
+                       { client="0" }, { client="" } },
+               { Value,
+                       "iroute",
+                       "10.200.200.0 255.255.255.0",
+                       translate("Route subnet to client"),
+                       { client="0" }, { client="" } },
+               { Flag,
+                       "client_to_client",
+                       0,
+                       translate("Allow client-to-client traffic"),
+                       { client="0" }, { client="" } },
+               { Flag,
+                       "duplicate_cn",
+                       0,
+                       translate("Allow multiple clients with same certificate"),
+                       { client="0" }, { client="" } },
+               { Value,
+                       "client_config_dir",
+                       "/etc/openvpn/ccd",
+                       translate("Directory for custom client config files"),
+                       { client="0" }, { client="" } },
+               { Flag,
+                       "ccd_exclusive",
+                       0,
+                       translate("Refuse connection if no custom client config"),
+                       { client="0" }, { client="" } },
+               { Value,
+                       "tmp_dir",
+                       "/var/run/openvpn",
+                       translate("Temporary directory for client-connect return file"),
+                       { client="0" }, { client="" } },
+               { Value,
+                       "hash_size",
+                       "256 256",
+                       translate("Set size of real and virtual address hash tables"),
+                       { client="0" }, { client="" } },
+               { Value,
+                       "bcast_buffers",
+                       256,
+                       translate("Number of allocated broadcast buffers"),
+                       { client="0" }, { client="" } },
+               { Value,
+                       "tcp_queue_limit",
+                       64,
+                       translate("Maximum number of queued TCP output packets"),
+                       { client="0" }, { client="" } },
+               { Value,
+                       "max_clients",
+                       10,
+                       translate("Allowed maximum of connected clients"),
+                       { client="0" }, { client="" } },
+               { Value,
+                       "max_routes_per_client",
+                       256,
+                       translate("Allowed maximum of internal"),
+                       { client="0" }, { client="" } },
+               { Value,
+                       "connect_freq",
+                       "3 10",
+                       translate("Allowed maximum of new connections"),
+                       { client="0" }, { client="" } },
+               { Flag,
+                       "client_cert_not_required",
+                       0,
+                       translate("Don't require client certificate"),
+                       { client="0" }, { client="" } },
+               { Flag,
+                       "username_as_common_name",
+                       0,
+                       translate("Use username as common name"),
+                       { client="0" }, { client="" } },
+               { Flag,
+                       "client",
+                       0,
+                       translate("Configure client mode") },
+               { Flag,
+                       "pull",
+                       0,
+                       translate("Accept options pushed from server"),
+                       { client="1" } },
+               { Value,
+                       "auth_user_pass",
+                       "/etc/openvpn/userpass.txt",
+                       translate("Authenticate using username/password"),
+                       { client="1" } },
+               { ListValue,
+                       "auth_retry",
+                       { "none", "nointeract", "interact" },
+                       translate("Handling of authentication failures"),
+                       { client="1" } },
+               { Value,
+                       "explicit_exit_notify",
+                       1,
+                       translate("Send notification to peer on disconnect"),
+                       { client="1" } },
+               { DynamicList,
+                       "remote",
+                       "1.2.3.4",
+                       translate("Remote host name or ip address"),
+                       { client="1" } },
+               { Flag,
+                       "remote_random",
+                       0,
+                       translate("Randomly choose remote server"),
+                       { client="1" } },
+               { ListValue,
+                       "proto",
+                       { "udp", "tcp-client", "tcp-server" },
+                       translate("Use protocol"),
+                       { client="1" } },
+               { Value,
+                       "connect_retry",
+                       5,
+                       translate("Connection retry interval"),
+                       { proto="tcp-client" }, { client="1" } },
+               { Value,
+                       "http_proxy",
+                       "192.168.1.100 8080",
+                       translate("Connect to remote host through an HTTP proxy"),
+                       { client="1" } },
+               { Flag,
+                       "http_proxy_retry",
+                       0,
+                       translate("Retry indefinitely on HTTP proxy errors"),
+                       { client="1" } },
+               { Value,
+                       "http_proxy_timeout",
+                       5,
+                       translate("Proxy timeout in seconds"),
+                       { client="1" } },
+               { DynamicList,
+                       "http_proxy_option",
+                       { "VERSION 1.0", "AGENT OpenVPN/2.0.9" },
+                       translate("Set extended HTTP proxy options"),
+                       { client="1" } },
+               { Value,
+                       "socks_proxy",
+                       "192.168.1.200 1080",
+                       translate("Connect through Socks5 proxy"),
+                       { client="1" } },
+       -- client && socks_proxy
+               { Value,
+                       "socks_proxy_retry",
+                       5,
+                       translate("Retry indefinitely on Socks proxy errors"),
+                       { client="1" } },
+               { Value,
+                       "resolv_retry",
+                       "infinite",
+                       translate("If hostname resolve fails, retry"),
+                       { client="1" } },
+               { ListValue,
+                       "redirect_gateway",
+                       { "", "local", "def1", "local def1" },
+                       translate("Automatically redirect default route"),
+                       { client="1" } },
        } },
 
        { "Cryptography", {
-               { FileUpload,   "secret",                                               "/etc/openvpn/secret.key",                                                                      translate("Enable Static Key encryption mode (non-TLS)") },
-               { Value,                "auth",                                                 "SHA1",                                                                                                                 translate("HMAC authentication for packets") }, -- parse
-               { Value,                "cipher",                                               "BF-CBC",                                                                                                               translate("Encryption cipher for packets") }, -- parse
-               { Value,                "keysize",                                              1024,                                                                                                                   translate("Size of cipher key") }, -- parse
-               { Value,                "engine",                                               "dynamic",                                                                                                              translate("Enable OpenSSL hardware crypto engines") }, -- parse
-               { Flag,                 "no_replay",                                    0,                                                                                                                              translate("Disable replay protection") },
-               { Value,                "replay_window",                                "64 15",                                                                                                                translate("Replay protection sliding window size") },
-               { Flag,                 "mute_replay_warnings",                 0,                                                                                                                              translate("Silence the output of replay warnings") },
-               { Value,                "replay_persist",                               "/var/run/openvpn-replay-state",                                                                translate("Persist replay-protection state") },
-               { Flag,                 "no_iv",                                                0,                                                                                                                              translate("Disable cipher initialisation vector") },
-               { Flag,                 "tls_server",                                   0,                                                                                                                              translate("Enable TLS and assume server role"), { tls_client="" }, { tls_client="0" } },
-               { Flag,                 "tls_client",                                   0,                                                                                                                              translate("Enable TLS and assume client role"), { tls_server="" }, { tls_server="0" } },
-               { FileUpload,   "ca",                                                   "/etc/easy-rsa/keys/ca.crt",                                                                    translate("Certificate authority") },
-               { FileUpload,   "dh",                                                   "/etc/easy-rsa/keys/dh1024.pem",                                                                translate("Diffie Hellman parameters") },
-               { FileUpload,   "cert",                                                 "/etc/easy-rsa/keys/some-client.crt",                                                   translate("Local certificate") },
-               { FileUpload,   "key",                                                  "/etc/easy-rsa/keys/some-client.key",                                                   translate("Local private key") },
-               { FileUpload,   "pkcs12",                                               "/etc/easy-rsa/keys/some-client.pk12",                                                  translate("PKCS#12 file containing keys") },
-               { ListValue,    "key_method",                                   { 1, 2 },                                                                                                               translate("Enable TLS and assume client role") },
-               { Value,                "tls_cipher",                                   "DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:DES-CBC3-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:AES128-SHA:RC4-SHA:RC4-MD5:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DES-CBC-SHA:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA:EXP-RC2-CBC-MD5:EXP-RC4-MD5",
-                                                                                                                                                                                                                                               translate("TLS cipher") },
-               { Value,                "tls_timeout",                                  2,                                                                                                                              translate("Retransmit timeout on TLS control channel") },
-               { Value,                "reneg_bytes",                                  1024,                                                                                                                   translate("Renegotiate data chan. key after bytes") },
-               { Value,                "reneg_pkts",                                   100,                                                                                                                    translate("Renegotiate data chan. key after packets") },
-               { Value,                "reneg_sec",                                    3600,                                                                                                                   translate("Renegotiate data chan. key after seconds") },
-               { Value,                "hand_window",                                  60,                                                                                                                             translate("Timeframe for key exchange") },
-               { Value,                "tran_window",                                  3600,                                                                                                                   translate("Key transition window") },
-               { Flag,                 "single_session",                               0,                                                                                                                              translate("Allow only one session") },
-               { Flag,                 "tls_exit",                                             0,                                                                                                                              translate("Exit on TLS negotiation failure") },
-               { Value,                "tls_auth",                                             "/etc/openvpn/tlsauth.key",                                                                     translate("Additional authentication over TLS") },
-               --{ Value,              "askpass",                                              "[file]",                                                                                                               translate("Get PEM password from controlling tty before we daemonize") },
-               { Flag,                 "auth_nocache",                                 0,                                                                                                                              translate("Don't cache --askpass or --auth-user-pass passwords") },
-               { Value,                "tls_remote",                                   "remote_x509_name",                                                                                             translate("Only accept connections from given X509 name") },
-               { ListValue,    "ns_cert_type",                                 { "client", "server" },                                                                                 translate("Require explicit designation on certificate") },
-               { ListValue,    "remote_cert_tls",                              { "client", "server" },                                                                                 translate("Require explicit key usage on certificate") },
-               { Value,                "crl_verify",                                   "/etc/easy-rsa/keys/crl.pem",                                                                   translate("Check peer certificate against a CRL") },
-               { Value,        "tls_version_min",              "1.0",                                                                                                                  translate("The lowest supported TLS version") },
-               { Value,        "tls_version_max",              "1.2",                                                                                                                  translate("The highest supported TLS version") },
-               { Value,        "key_direction",                "1",                                                                                                                    translate("The key direction for 'tls-auth' and 'secret' options") },
-       } }
+               { FileUpload,
+                       "secret",
+                       "/etc/openvpn/secret.key",
+                       translate("Enable Static Key encryption mode (non-TLS)") },
+       -- parse
+               { Value,
+                       "auth",
+                       "SHA1",
+                       translate("HMAC authentication for packets") },
+       -- parse
+               { Value,
+                       "cipher",
+                       "BF-CBC",
+                       translate("Encryption cipher for packets") },
+       -- parse
+               { Value,
+                       "keysize",
+                       1024,
+                       translate("Size of cipher key") },
+       -- parse
+               { Value,
+                       "engine",
+                       "dynamic",
+                       translate("Enable OpenSSL hardware crypto engines") },
+               { Flag,
+                       "no_replay",
+                       0,
+                       translate("Disable replay protection") },
+               { Value,
+                       "replay_window",
+                       "64 15",
+                       translate("Replay protection sliding window size") },
+               { Flag,
+                       "mute_replay_warnings",
+                       0,
+                       translate("Silence the output of replay warnings") },
+               { Value,
+                       "replay_persist",
+                       "/var/run/openvpn-replay-state",
+                       translate("Persist replay-protection state") },
+               { Flag,
+                       "no_iv",
+                       0,
+                       translate("Disable cipher initialisation vector") },
+               { Flag,
+                       "tls_server",
+                       0,
+                       translate("Enable TLS and assume server role"),
+                       { tls_client="" }, { tls_client="0" } },
+               { Flag,
+                       "tls_client",
+                       0,
+                       translate("Enable TLS and assume client role"),
+                       { tls_server="" }, { tls_server="0" } },
+               { FileUpload,
+                       "ca",
+                       "/etc/easy-rsa/keys/ca.crt",
+                       translate("Certificate authority") },
+               { FileUpload,
+                       "dh",
+                       "/etc/easy-rsa/keys/dh1024.pem",
+                       translate("Diffie Hellman parameters") },
+               { FileUpload,
+                       "cert",
+                       "/etc/easy-rsa/keys/some-client.crt",
+                       translate("Local certificate") },
+               { FileUpload,
+                       "key",
+                       "/etc/easy-rsa/keys/some-client.key",
+                       translate("Local private key") },
+               { FileUpload,
+                       "pkcs12",
+                       "/etc/easy-rsa/keys/some-client.pk12",
+                       translate("PKCS#12 file containing keys") },
+               { ListValue,
+                       "key_method",
+                       { 1, 2 },
+                       translate("Enable TLS and assume client role") },
+               { Value,
+                       "tls_cipher",
+                       "DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:DES-CBC3-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:AES128-SHA:RC4-SHA:RC4-MD5:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DES-CBC-SHA:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA:EXP-RC2-CBC-MD5:EXP-RC4-MD5",
+                       translate("TLS cipher") },
+               { Value,
+                       "tls_timeout",
+                       2,
+                       translate("Retransmit timeout on TLS control channel") },
+               { Value,
+                       "reneg_bytes",
+                       1024,
+                       translate("Renegotiate data chan. key after bytes") },
+               { Value,
+                       "reneg_pkts",
+                       100,
+                       translate("Renegotiate data chan. key after packets") },
+               { Value,
+                       "reneg_sec",
+                       3600,
+                       translate("Renegotiate data chan. key after seconds") },
+               { Value,
+                       "hand_window",
+                       60,
+                       translate("Timeframe for key exchange") },
+               { Value,
+                       "tran_window",
+                       3600,
+                       translate("Key transition window") },
+               { Flag,
+                       "single_session",
+                       0,
+                       translate("Allow only one session") },
+               { Flag,
+                       "tls_exit",
+                       0,
+                       translate("Exit on TLS negotiation failure") },
+               { Value,
+                       "tls_auth",
+                       "/etc/openvpn/tlsauth.key",
+                       translate("Additional authentication over TLS") },
+       --      { Value,
+       --              "askpass",
+       --              "[file]",
+       --              translate("Get PEM password from controlling tty before we daemonize") },
+               { Flag,
+                       "auth_nocache",
+                       0,
+                       translate("Don't cache --askpass or --auth-user-pass passwords") },
+               { Value,
+                       "tls_remote",
+                       "remote_x509_name",
+                       translate("Only accept connections from given X509 name") },
+               { ListValue,
+                       "ns_cert_type",
+                       { "client", "server" },
+                       translate("Require explicit designation on certificate") },
+               { ListValue,
+                       "remote_cert_tls",
+                       { "client", "server" },
+                       translate("Require explicit key usage on certificate") },
+               { Value,
+                       "crl_verify",
+                       "/etc/easy-rsa/keys/crl.pem",
+                       translate("Check peer certificate against a CRL") },
+               { Value,
+                       "tls_version_min",
+                       "1.0",
+                       translate("The lowest supported TLS version") },
+               { Value,
+                       "tls_version_max",
+                       "1.2",
+                       translate("The highest supported TLS version") },
+               { Value,
+                       "key_direction",
+                       "1",
+                       translate("The key direction for 'tls-auth' and 'secret' options") },
+       } }
 }
 
 
index aaa1979..3f651c0 100644 (file)
@@ -24,7 +24,7 @@ local basicParams = {
        { ListValue,"comp_lzo",{"yes","no","adaptive"}, translate("Use fast LZO compression") },
        { Value,"keepalive","10 60", translate("Helper directive to simplify the expression of --ping and --ping-restart in server mode configurations") },
 
-       { ListValue,"proto",{ "udp", "udp6", "tcp", "tcp6" }, translate("Use protocol") },
+       { ListValue,"proto",{ "udp", "tcp-client", "tcp-server" }, translate("Use protocol") },
 
        { Flag,"client",0, translate("Configure client mode") },
        { Flag,"client_to_client",0, translate("Allow client-to-client traffic") },
index 916370e..84b0540 100644 (file)
@@ -1,17 +1,17 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2014-03-29 23:19+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-02-20 18:04-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"Language-Team: \n"
 
 msgid "%s"
 msgstr "%s"
@@ -154,7 +154,7 @@ msgid "Don't log timestamps"
 msgstr "Não registar a data/hora"
 
 msgid "Don't pull routes automatically"
-msgstr ""
+msgstr "Não puxe as rotas automaticamente"
 
 msgid "Don't re-read key on restart"
 msgstr "Não reler a chave entre os reinícios"
@@ -505,13 +505,13 @@ msgid "Temporary directory for client-connect return file"
 msgstr "Diretório temporário para arquivo de retorno de conexão-cliente"
 
 msgid "The highest supported TLS version"
-msgstr ""
+msgstr "A mais alta versão suporta do TLS"
 
 msgid "The key direction for 'tls-auth' and 'secret' options"
-msgstr ""
+msgstr "A direção da chave para as opções 'tls-auth' e 'secret'"
 
 msgid "The lowest supported TLS version"
-msgstr ""
+msgstr "A mais baixa versão suporta do TLS"
 
 msgid "Timeframe for key exchange"
 msgstr "Janela temporal para troca de chaves"
index 899b4d2..3904ac4 100644 (file)
@@ -1,17 +1,17 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-19 19:35+0200\n"
-"PO-Revision-Date: 2013-10-10 06:09+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
+"PO-Revision-Date: 2017-04-14 17:26-0600\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
 "Language-Team: QQ Group 75543259 <axishero@foxmail.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"
+"X-Generator: Poedit 2.0.1\n"
 
 msgid "%s"
 msgstr "%s"
@@ -498,13 +498,13 @@ msgid "Temporary directory for client-connect return file"
 msgstr "客户端连接返回文件的临时目录"
 
 msgid "The highest supported TLS version"
-msgstr ""
+msgstr "最高支持的 TLS 版本"
 
 msgid "The key direction for 'tls-auth' and 'secret' options"
 msgstr ""
 
 msgid "The lowest supported TLS version"
-msgstr ""
+msgstr "最低支持的 TLS 版本"
 
 msgid "Timeframe for key exchange"
 msgstr "密钥交换时间表"
diff --git a/applications/luci-app-privoxy/po/pt-br/privoxy.po b/applications/luci-app-privoxy/po/pt-br/privoxy.po
new file mode 100644 (file)
index 0000000..8d3eee2
--- /dev/null
@@ -0,0 +1,516 @@
+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 ""
+"A URL to be displayed in the error page that users will see if access to an "
+"untrusted page is denied."
+msgstr ""
+"A URL a ser exibida na página de erro que os usuários verão se o acesso a "
+"uma página não confiável é negado."
+
+msgid ""
+"A URL to documentation about the local Privoxy setup, configuration or "
+"policies."
+msgstr ""
+"A URL para a documentação sobre o Privoxy local, configuração ou políticas."
+
+msgid "A directory where Privoxy can create temporary files."
+msgstr "Um diretório onde Privoxy pode criar arquivos temporários."
+
+msgid "Access Control"
+msgstr "Controle de Acesso"
+
+msgid "Actions that are applied to all sites and maybe overruled later on."
+msgstr ""
+"Ações que são aplicadas a todos as páginas e talvez descartado mais tarde."
+
+msgid "An alternative directory where the templates are loaded from."
+msgstr "Um diretório alternativo de onde os modelos são carregados."
+
+msgid "An email address to reach the Privoxy administrator."
+msgstr "Um endereço de e-mail para alcançar o administrador do Privoxy."
+
+msgid ""
+"Assumed server-side keep-alive timeout (in seconds) if not specified by the "
+"server."
+msgstr ""
+"Tempo limite, em segundos, da manutenção da conexão (keep-alive) do servidor "
+"se não for especificado."
+
+msgid "Boot delay"
+msgstr "Atraso de iniciação"
+
+msgid "CGI user interface"
+msgstr "Interface de usuário CGI"
+
+msgid "Common Log Format"
+msgstr "Formato de registros (log) comum"
+
+msgid ""
+"Configure here the routing of HTTP requests through a chain of multiple "
+"proxies. Note that parent proxies can severely decrease your privacy level. "
+"Also specified here are SOCKS proxies."
+msgstr ""
+"Configure aqui o encaminhamento de pedidos HTTP através de uma cadeia de "
+"múltiplos proxies. Note-se que proxies pai pode diminuir muito o nível de "
+"privacidade. Também serão aceitos proxies SOCKS."
+
+msgid "Debug GIF de-animation"
+msgstr "Depurar de-animação GIF"
+
+msgid "Debug force feature"
+msgstr "Recurso de depuração forçado"
+
+msgid "Debug redirects"
+msgstr "Redirecionamentos de depuração"
+
+msgid "Debug regular expression filters"
+msgstr "Depuração de filtros de expressão regular"
+
+msgid "Delay (in seconds) during system boot before Privoxy start"
+msgstr ""
+"Atraso (em segundos) durante a inicialização do sistema antes do Privoxy "
+"iniciar"
+
+msgid "Directory does not exist!"
+msgstr "O diretório não existe!"
+
+msgid "Disabled == Transparent Proxy Mode"
+msgstr "Desativado == Modo Proxy Transparente"
+
+msgid "Documentation"
+msgstr "Documentação"
+
+msgid "During delay ifup-events are not monitored !"
+msgstr "Durante a espera, eventos ifup não serão monitorados!"
+
+msgid "Enable proxy authentication forwarding"
+msgstr "Habilitar o encaminhamento de autenticação de proxy"
+
+msgid ""
+"Enable/Disable autostart of Privoxy on system startup and interface events"
+msgstr ""
+"Ativar/Desativar a iniciação automática do Privoxy junto com a iniciação do "
+"sistema ou eventos de interface"
+
+msgid "Enable/Disable filtering when Privoxy starts."
+msgstr "Ativar / Desativar filtragem quando Privoxy iniciar."
+
+msgid "Enabled"
+msgstr "Habilitado"
+
+msgid ""
+"Enabling this option is NOT recommended if there is no parent proxy that "
+"requires authentication!"
+msgstr ""
+"A ativação dessa opção não é recomendado se não houver nenhum proxy pai que "
+"requer autenticação!"
+
+msgid "File '%s' not found inside Configuration Directory"
+msgstr "O arquivo '%s' não foi encontrado dentro do Diretório de Configuração"
+
+msgid "File not found or empty"
+msgstr "Arquivo não encontrado ou vazio"
+
+msgid "Files and Directories"
+msgstr "Arquivos e diretórios"
+
+msgid "For help use link at the relevant option"
+msgstr "Para ajuda, use o link na respectiva opção"
+
+msgid "Forwarding"
+msgstr "Encaminhando"
+
+msgid ""
+"If enabled, Privoxy hides the 'go there anyway' link. The user obviously "
+"should not be able to bypass any blocks."
+msgstr ""
+"Se ativado, Privoxy esconde o link \"ir lá de qualquer maneira\". O usuário, "
+"obviamente, não deve ser capaz de contornar qualquer bloqueio."
+
+msgid ""
+"If you intend to operate Privoxy for more users than just yourself, it might "
+"be a good idea to let them know how to reach you, what you block and why you "
+"do that, your policies, etc."
+msgstr ""
+"Se você pretende operar Privoxy para mais usuários do que apenas a si mesmo, "
+"pode ser uma boa ideia para que eles saibam como falar com você, o que você "
+"bloquear e por que você faz isso, as suas políticas, etc."
+
+msgid "Invalid email address"
+msgstr "Endereço de e-mail inválido"
+
+msgid "It is NOT recommended for the casual user."
+msgstr "Não é recomendado para o usuário casual."
+
+msgid "Location of the Privoxy User Manual."
+msgstr "Localização do Manual do Usuário do Privoxy."
+
+msgid "Log File Viewer"
+msgstr "Visualizador de arquivo de registros (log)"
+
+msgid "Log all data read from the network"
+msgstr "Registrar todos os dados lidos da rede"
+
+msgid "Log all data written to the network"
+msgstr "Registrar todos os dados gravados na rede"
+
+msgid "Log the applying actions"
+msgstr "Registrar as ações aplicadas"
+
+msgid ""
+"Log the destination for each request Privoxy let through. See also 'Debug "
+"1024'."
+msgstr ""
+"Registrar o destino para cada pedido que o Privoxy deixou passar. Consulte "
+"também 'Debug 1024'."
+
+msgid ""
+"Log the destination for requests Privoxy didn't let through, and the reason "
+"why."
+msgstr ""
+"Registrar o destino para os pedidos que o Privoxy não deixou passar, e a "
+"razão pela qual."
+
+msgid "Logging"
+msgstr "Registrando (logging)"
+
+msgid "Main actions file"
+msgstr "Arquivo principal de ações"
+
+msgid "Mandatory Input: No Data given!"
+msgstr "Entrada obrigatória: Dados não foram informados!"
+
+msgid "Mandatory Input: No Directory given!"
+msgstr "Entrada obrigatória: Nenhum Diretório foi informado!"
+
+msgid "Mandatory Input: No File given!"
+msgstr "Entrada obrigatória: Nenhum Arquivo foi informado!"
+
+msgid "Mandatory Input: No Port given!"
+msgstr "Entrada obrigatória: Nenhuma Porta foi informado!"
+
+msgid "Mandatory Input: No files given!"
+msgstr "Entrada obrigatória: Nenhum Arquivo foi informado!"
+
+msgid "Mandatory Input: No valid IPv4 address or host given!"
+msgstr ""
+"Entrada obrigatória: Nenhum endereço IPv4 ou nome de equipamento válido foi "
+"fornecido!"
+
+msgid "Mandatory Input: No valid IPv6 address given!"
+msgstr "Entrada obrigatória: Nenhum endereço IPv6 válido foi informado!"
+
+msgid "Mandatory Input: No valid Port given!"
+msgstr "Entrada obrigatória: Nenhuma porta válida foi informada!"
+
+msgid "Maximum number of client connections that will be served."
+msgstr "O número máximo de conexões de cliente que será aceito."
+
+msgid "Maximum size (in KB) of the buffer for content filtering."
+msgstr "Tamanho máximo (em KB) do buffer para filtragem de conteúdo."
+
+msgid "Miscellaneous"
+msgstr "Diversos"
+
+msgid "NOT installed"
+msgstr "NÃO instalado"
+
+msgid "No trailing '/', please."
+msgstr "Sem '/' final, por favor."
+
+msgid "Non-fatal errors - *we highly recommended enabling this*"
+msgstr "Erros não fatais - *é altamente recomendado ativar isto*"
+
+msgid ""
+"Number of seconds after which a socket times out if no data is received."
+msgstr ""
+"Número de segundos após o qual uma conexão expira se nenhum dado for "
+"recebido."
+
+msgid ""
+"Number of seconds after which an open connection will no longer be reused."
+msgstr ""
+"Número de segundos após o qual uma conexão aberta deixará de ser reutilizada."
+
+msgid ""
+"Only when using 'external filters', Privoxy has to create temporary files."
+msgstr ""
+"Somente quando for usado os \"filtros externos\". O Privoxy tem que criar "
+"arquivos temporários."
+
+msgid "Please install current version !"
+msgstr "Por favor, instale a versão atual!"
+
+msgid "Please press [Read] button"
+msgstr "Por favor, pressione o botão [Ler]"
+
+msgid "Please read Privoxy manual for details!"
+msgstr "Por favor, leia o manual do Privoxy para mais detalhes!"
+
+msgid "Please update to the current version!"
+msgstr "Por favor, atualize para a versão atual!"
+
+msgid "Privoxy WEB proxy"
+msgstr "Privoxy Web Proxy"
+
+msgid ""
+"Privoxy can (and normally does) use a number of other files for additional "
+"configuration, help and logging. This section of the configuration file "
+"tells Privoxy where to find those other files."
+msgstr ""
+"Privoxy pode (e normalmente o faz) utilizar uma série de outros arquivos de "
+"configuração, ajuda e de registros. Esta seção do arquivo de configuração "
+"informa o Privoxy onde encontrar os outros arquivos."
+
+msgid ""
+"Privoxy is a non-caching web proxy with advanced filtering capabilities for "
+"enhancing privacy, modifying web page data and HTTP headers, controlling "
+"access, and removing ads and other obnoxious Internet junk."
+msgstr ""
+"Privoxy é um proxy web sem cache com capacidades avançadas de filtragem para "
+"aumentar a privacidade, modificar dados de páginas web e cabeçalhos HTTP, "
+"controlar o acesso e remover anúncios e outras porcarias detestável da "
+"Internet."
+
+msgid "Read / Reread log file"
+msgstr "Ler / Ler novamente o arquivo de registros (log)"
+
+msgid "Show I/O status"
+msgstr "Mostrar status de Entrada/Saída"
+
+msgid "Show each connection status"
+msgstr "Mostrar cada estado de conexão"
+
+msgid "Show header parsing"
+msgstr "Mostrar análise do cabeçalho"
+
+msgid "Software package '%s' is not installed."
+msgstr "O pacote de software '%s' não está instalado."
+
+msgid "Software package '%s' is outdated."
+msgstr "O pacote '%' está desatualizado."
+
+msgid "Start"
+msgstr "Iniciar"
+
+msgid "Start / Stop"
+msgstr "Iniciar / Parar"
+
+msgid "Start/Stop Privoxy WEB Proxy"
+msgstr "Inicia / Para o Privoxy Web Proxy"
+
+msgid "Startup banner and warnings."
+msgstr "Mensagens e avisos iniciais."
+
+msgid "Syntax:"
+msgstr "Sintaxe:"
+
+msgid "Syntax: Client header names delimited by spaces."
+msgstr "Sintaxe: nomes de cabeçalho do cliente delimitados por espaços."
+
+msgid "Syntax: target_pattern http_parent[:port]"
+msgstr "Sintaxe: padrão_alvo http_superior[:porta]"
+
+msgid "Syntax: target_pattern socks_proxy[:port] http_parent[:port]"
+msgstr "Sintaxe: padrão_alvo proxy_socks[:porta] http_superior[:porta]"
+
+msgid "System"
+msgstr "Sistema"
+
+msgid ""
+"The actions file(s) to use. Multiple actionsfile lines are permitted, and "
+"are in fact recommended!"
+msgstr ""
+"O(s) arquivo(s) ações a ser usado. Várias linhas no arquivo são permitidas, "
+"e são, de fato, recomendadas!"
+
+msgid ""
+"The address and TCP port on which Privoxy will listen for client requests."
+msgstr ""
+"O endereço e porta TCP em que Privoxy vai esperar por pedidos dos clientes."
+
+msgid ""
+"The compression level that is passed to the zlib library when compressing "
+"buffered content."
+msgstr ""
+"O nível de compressão que é passada para a biblioteca zlib ao comprimir o "
+"conteúdo em buffer."
+
+msgid ""
+"The directory where all logging takes place (i.e. where the logfile is "
+"located)."
+msgstr ""
+"O diretório onde todos os registros ocorrem (ex: onde o arquivo de log está "
+"localizado)."
+
+msgid "The directory where the other configuration files are located."
+msgstr "O diretório onde os outros arquivos de configuração estão localizados."
+
+msgid ""
+"The filter files contain content modification rules that use regular "
+"expressions."
+msgstr ""
+"Os arquivos de filtro contêm regras de modificação de conteúdo que usam "
+"expressões regulares."
+
+msgid "The hostname shown on the CGI pages."
+msgstr "O nome da máquina mostrado nas páginas de CGI."
+
+msgid "The log file to use. File name, relative to log directory."
+msgstr ""
+"O arquivo de registros a ser usado. O nome do arquivo, relativo ao diretório "
+"de log."
+
+msgid "The order in which client headers are sorted before forwarding them."
+msgstr ""
+"A ordem em que os cabeçalhos dos clientes são classificados antes de "
+"encaminhá-los."
+
+msgid ""
+"The status code Privoxy returns for pages blocked with +handle-as-empty-"
+"document."
+msgstr ""
+"O código de status Privoxy retorna para páginas bloqueadas com +handle-as-"
+"empty-document."
+
+msgid ""
+"The trust mechanism is an experimental feature for building white-lists and "
+"should be used with care."
+msgstr ""
+"O mecanismo de confiança é um recurso experimental para a construção de "
+"listas de destinos confiáveis e deve ser usado com cuidado."
+
+msgid ""
+"The value of this option only matters if the experimental trust mechanism "
+"has been activated."
+msgstr ""
+"O valor desta opção só importa se o mecanismo de confiança experimental foi "
+"ativado."
+
+msgid ""
+"This option is only there for debugging purposes. It will drastically reduce "
+"performance."
+msgstr ""
+"Esta opção só está lá para fins de depuração. Ele irá reduzir drasticamente "
+"o desempenho."
+
+msgid ""
+"This option will be removed in future releases as it has been obsoleted by "
+"the more general header taggers."
+msgstr ""
+"Esta opção será removida em versões futuras, uma vez que ficou obsoleta "
+"pelos marcadores de cabeçalho mais genéricos."
+
+msgid ""
+"This tab controls the security-relevant aspects of Privoxy's configuration."
+msgstr ""
+"Esta guia controla os aspectos da configuração do Privoxy relevantes para a "
+"segurança."
+
+msgid ""
+"Through which SOCKS proxy (and optionally to which parent HTTP proxy) "
+"specific requests should be routed."
+msgstr ""
+"Através de qual Proxy SOCKS (e, opcionalmente, para o qual proxy HTTP "
+"superior) pedidos específicos devem ser encaminhados."
+
+msgid "To which parent HTTP proxy specific requests should be routed."
+msgstr ""
+"Para qual proxy HTTP superior os pedidos específicos devem ser encaminhados."
+
+msgid "User customizations"
+msgstr "Personalizações do usuário"
+
+msgid "Value is not a number"
+msgstr "O valor não é um número"
+
+msgid "Value not between 0 and 300"
+msgstr "Valor não está entre 0 e 300"
+
+msgid "Value not between 0 and 9"
+msgstr "Valor não está entre 0 e 9"
+
+msgid "Value not between 1 and 4096"
+msgstr "Valor não entre 1 e 4096"
+
+msgid "Value not greater 0 or empty"
+msgstr "Valor não é maior que 0 ou vazio"
+
+msgid "Value range 1 to 4096, no entry defaults to 4096"
+msgstr "Faixa do valor de 1 até 4096. Se vazio, será 4096"
+
+msgid "Version"
+msgstr "Versão"
+
+msgid "Version Information"
+msgstr "Informação da Versão"
+
+msgid "Whether intercepted requests should be treated as valid."
+msgstr "Se as solicitações interceptados deve ser tratadas como válidas."
+
+msgid ""
+"Whether or not Privoxy recognizes special HTTP headers to change toggle "
+"state."
+msgstr ""
+"Se o Privoxy deve reconhecer cabeçalhos HTTP especiais para mudar de "
+"alternância do estado."
+
+msgid "Whether or not buffered content is compressed before delivery."
+msgstr "Se o conteúdo em buffer é comprimido antes da entrega."
+
+msgid ""
+"Whether or not outgoing connections that have been kept alive should be "
+"shared between different incoming connections."
+msgstr ""
+"Se as conexões de saída que foram mantidas vivas devem ser compartilhadas "
+"entre diferentes conexões de entrada."
+
+msgid "Whether or not pipelined requests should be served."
+msgstr "Se os pedidos de pipeline deve ser aceitos."
+
+msgid "Whether or not proxy authentication through Privoxy should work."
+msgstr "Se a autenticação de proxy através do Privoxy deve funcionar."
+
+msgid "Whether or not the web-based actions file editor may be used."
+msgstr "Se o editor de arquivos de ações baseadas na web deve ser utilizado."
+
+msgid "Whether or not the web-based toggle feature may be used."
+msgstr "Se deve ser usado o recurso de alternância baseado na web."
+
+msgid "Whether requests to Privoxy's CGI pages can be blocked or redirected."
+msgstr ""
+"Se as solicitações para páginas CGI do Privoxy podem ser bloqueadas ou "
+"redirecionadas."
+
+msgid ""
+"Whether the CGI interface should stay compatible with broken HTTP clients."
+msgstr ""
+"Se a interface CGI deve se manter compatível com clientes HTTP mal "
+"implementados."
+
+msgid "Whether to run only one server thread."
+msgstr "Se deseja executar o servidor como apenas uma thread."
+
+msgid "Who can access what."
+msgstr "Quem pode acessar o quê."
+
+msgid "installed"
+msgstr "instalado"
+
+msgid "or higher"
+msgstr "ou maior"
+
+msgid "required"
+msgstr "necessário"
diff --git a/applications/luci-app-radicale/po/pt-br/radicale.po b/applications/luci-app-radicale/po/pt-br/radicale.po
new file mode 100644 (file)
index 0000000..67bf586
--- /dev/null
@@ -0,0 +1,432 @@
+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 ""
+"'AUTO' selects the highest protocol version that client and server support."
+msgstr "'AUTO' seleciona a versão mais alto protocolo que o cliente e o servidor suportar."
+
+msgid ""
+"'Hostname:Port' or 'IPv4:Port' or '[IPv6]:Port' Radicale should listen on"
+msgstr "'NomeDoEquipamento:porta' ou 'IPv4:Porta' ou '[IPv6]:Porta' em que o Radicale deve escutar"
+
+msgid "AUTO"
+msgstr "AUTO"
+
+msgid "Access-Control-Allow-Headers"
+msgstr "Access-Control-Allow-Headers"
+
+msgid "Access-Control-Allow-Methods"
+msgstr "Access-Control-Allow-Methods"
+
+msgid "Access-Control-Allow-Origin"
+msgstr "Access-Control-Allow-Origin"
+
+msgid "Access-Control-Expose-Headers"
+msgstr "Access-Control-Expose-Headers"
+
+msgid "Additional HTTP headers"
+msgstr "Additional HTTP headers"
+
+msgid "Address:Port"
+msgstr "Endereço: Porta"
+
+#, fuzzy
+msgid "Authentication"
+msgstr "Autenticação"
+
+msgid ""
+"Authentication login is matched against the 'user' key, and collection's "
+"path is matched against the 'collection' key."
+msgstr "O nome do usuário na autenticação é comparado com a chave do 'user', e o caminho da coleção é comparado com a chave 'coleção'."
+
+msgid "Authentication method"
+msgstr "Método de autenticação"
+
+msgid "Authentication method to allow access to Radicale server."
+msgstr "Método de autenticação para permitir o acesso ao servidor Radicale."
+
+msgid "Auto-start"
+msgstr "Iniciar automaticamente"
+
+msgid "Boot delay"
+msgstr "Atraso na iniciação"
+
+msgid "CalDAV/CardDAV"
+msgstr "CalDAV/CardDAV"
+
+msgid ""
+"Calendars and address books are available for both local and remote access, "
+"possibly limited through authentication policies."
+msgstr "Agendas e contados estão disponíveis tanto para acesso local como remoto, possivelmente limitado através das políticas de autenticação."
+
+msgid "Certificate file"
+msgstr "Arquivo do certificado"
+
+msgid ""
+"Change here the encoding Radicale will use instead of 'UTF-8' for responses "
+"to the client and/or to store data inside collections."
+msgstr "Mude aqui a codificação que o Radicale usará em vez de 'UTF-8' para respostas a clientes ou para armazenar dados dentro das coleções."
+
+msgid "Ciphers"
+msgstr "Cifras"
+
+msgid "Console Log level"
+msgstr "Nível de detalhamento dos registros (log)"
+
+msgid "Control the access to data collections."
+msgstr "Controlar o acesso às coleções de dados."
+
+#, fuzzy
+msgid "Critical"
+msgstr "Crítico"
+
+msgid ""
+"Cross-origin resource sharing (CORS) is a mechanism that allows restricted "
+"resources (e.g. fonts, JavaScript, etc.) on a web page to be requested from "
+"another domain outside the domain from which the resource originated."
+msgstr "O compartilhamento de recursos de origem cruzada (CORS) é um mecanismo que permite que os recursos de acesso restrito (por exemplo, fontes, JavaScript, etc.) em uma página web ser solicitado de outro domínio fora do domínio a partir do qual o recurso foi originado."
+
+msgid "Custom"
+msgstr "Personalizadas"
+
+msgid "Database"
+msgstr "Banco de Dados"
+
+#, fuzzy
+msgid "Debug"
+msgstr "Depuração"
+
+msgid "Delay (in seconds) during system boot before Radicale start"
+msgstr "Atraso (em segundos) durante a inicialização do sistema antes do Radicale iniciar"
+
+#, fuzzy
+msgid "Directory"
+msgstr "Diretório"
+
+msgid "Directory not exists/found !"
+msgstr "O diretório não foi encontrado!"
+
+msgid "Directory required !"
+msgstr "O diretório é necessário!"
+
+msgid "Directory where the rotating log-files are stored"
+msgstr "O diretório onde os registros(log) rotativos são armazenados"
+
+msgid "During delay ifup-events are not monitored !"
+msgstr "Durante a espera, eventos ifup não serão monitorados!"
+
+msgid "Enable HTTPS"
+msgstr "Ativar HTTPS"
+
+msgid ""
+"Enable/Disable auto-start of Radicale on system start-up and interface events"
+msgstr "Ativar/Desativar iniciação automática do Radicale na iniciação do sistema e em eventos de interface"
+
+msgid "Encoding"
+msgstr "Codificação"
+
+msgid "Encoding for responding requests."
+msgstr "Codificação para responder pedidos."
+
+msgid "Encoding for storing local collections."
+msgstr "Codificação para armazenar coleções locais."
+
+msgid "Encryption method"
+msgstr "Método de criptografia"
+
+#, fuzzy
+msgid "Error"
+msgstr "Erro"
+
+msgid "File '%s' not found !"
+msgstr "Arquivo '%s' não encontrado!"
+
+msgid "File Log level"
+msgstr "Nível de detalhamento dos registos(log) em arquivos"
+
+msgid "File not found !"
+msgstr "Arquivo não encontrado!"
+
+msgid "File-system"
+msgstr "Sistema de arquivos"
+
+msgid ""
+"For example, for the 'user' key, '.+' means 'authenticated user' and '.*' "
+"means 'anybody' (including anonymous users)."
+msgstr "Por exemplo, para a chave 'user', '.+' Significa 'usuário autenticado' e '.*' Significa 'qualquer um' (incluindo usuários anônimos)."
+
+msgid "Full access for Owner only"
+msgstr "Acesso completo somente para o proprietário"
+
+msgid "Full access for authenticated Users"
+msgstr "Acesso completo para usuários autenticados"
+
+msgid "Full access for everybody (including anonymous)"
+msgstr "Acesso completo para todos (incluindo anônimo)"
+
+msgid "Full path and file name of certificate"
+msgstr "Caminho completo e nome do arquivo do certificado"
+
+msgid "Full path and file name of private key"
+msgstr "Caminho e arquivo nome completo da chave privada"
+
+#, fuzzy
+msgid "Info"
+msgstr "Informações"
+
+msgid "Keep in mind to use the correct hashing algorithm !"
+msgstr "Fique atento para usar o algoritmo de resumo digital(hash) correto!"
+
+msgid "Leading or ending slashes are trimmed from collection's path."
+msgstr "Barras inicias e finais serão removidas do caminho da coleção."
+
+msgid "Log-backup Count"
+msgstr "Contagem Registro(log) de Backup"
+
+msgid "Log-file Viewer"
+msgstr "Visualizador de Arquivo de Registros(log)"
+
+msgid "Log-file directory"
+msgstr "Diretório do arquivo de registros(log)"
+
+msgid "Log-file size"
+msgstr "Tamanho do arquivo de registros(log)"
+
+#, fuzzy
+msgid "Logging"
+msgstr "Registrando os eventos"
+
+msgid "Logon message"
+msgstr "Mensagem de entrada"
+
+msgid "Maximum size of each rotation log-file."
+msgstr "Tamanho máximo para a rotação do arquivo de registros(log)"
+
+msgid "Message displayed in the client when a password is needed."
+msgstr "Mensagem exibida para o cliente quando uma senha é necessária."
+
+#, fuzzy
+msgid "NOT installed"
+msgstr "NÃO instalado"
+
+#, fuzzy
+msgid "None"
+msgstr "Nada"
+
+msgid "Number of backup files of log to create."
+msgstr "Número de backups dos arquivos de registros(log) a serem criados."
+
+msgid "OPTIONAL: See python's ssl module for available ciphers"
+msgstr "Opcional: veja o módulo SSL do python para conhecer as cifras disponíveis"
+
+msgid "One or more missing/invalid fields on tab"
+msgstr "Um ou campos inválidos/ausentes na aba"
+
+msgid "Owner allow write, authenticated users allow read"
+msgstr "O proprietário pode escrever, os usuários autenticados podem ler"
+
+msgid "Path/File required !"
+msgstr "O caminho/arquivo é necessário!"
+
+msgid ""
+"Place here the 'user:password' pairs for your users which should have access "
+"to Radicale."
+msgstr "Coloque aqui os pares 'usuário:senha' para os seus usuários que devem ter acesso a Radicale."
+
+msgid "Please install current version !"
+msgstr "Por favor, instale a versão atual!"
+
+msgid "Please press [Reload] button below to reread the file."
+msgstr "Por favor, pressione o botão [Recarregar] abaixo para reler o arquivo."
+
+msgid "Please update to current version !"
+msgstr "Por favor, atualize para a versão atual!"
+
+msgid "Port numbers below 1024 (Privileged ports) are not supported"
+msgstr "Os porta abaixo de 1024 (portas privilegiadas) não são suportadas"
+
+msgid "Private key file"
+msgstr "Arquivo da chave privada"
+
+msgid "Radicale CalDAV/CardDAV Server"
+msgstr "Radicale Servidor CalDAV/CardDAV"
+
+msgid "Radicale uses '/etc/radicale/rights' as regexp-based file."
+msgstr "Radicale usa o '/etc/radicale/rights' como arquivo baseado em expressão regular."
+
+msgid "Radicale uses '/etc/radicale/users' as htpasswd file."
+msgstr "Radicale usa o '/etc/radicale/users' como o arquivo htpasswd."
+
+msgid "Read only!"
+msgstr "Somente leitura!"
+
+msgid "RegExp file"
+msgstr "Arquivo de expressões regulares"
+
+msgid "Reload"
+msgstr "Recarregar"
+
+msgid "Response Encoding"
+msgstr "Codificação da Resposta"
+
+msgid "Rights"
+msgstr "Direitos"
+
+msgid "Rights are based on a regexp-based file"
+msgstr "Os direitos são baseados em um arquivo baseado em expressões regulares"
+
+msgid "Rights backend"
+msgstr "Serviço de Direitos"
+
+msgid "SHA-1"
+msgstr "SHA-1"
+
+msgid "SSL Protocol"
+msgstr "Protocolo SSL"
+
+#, fuzzy
+msgid "Save"
+msgstr "Salvar"
+
+msgid "Section names are only used for naming the rule."
+msgstr "Os nomes das seção são usados ​​apenas para nomear a regra."
+
+#, fuzzy
+msgid "Server"
+msgstr "Servidor"
+
+msgid "Setting this parameter to '0' will disable rotation of log-file."
+msgstr "Definindo este parâmetro para '0' irá desativar a rotação dos arquivos de registros(log)."
+
+msgid "Software package '%s' is not installed."
+msgstr "O pacote de software '%s' não está instalado."
+
+msgid "Software package '%s' is outdated."
+msgstr "O pacote '%' está desatualizado."
+
+#, fuzzy
+msgid "Software update required"
+msgstr "A atualização do software é necessária"
+
+#, fuzzy
+msgid "Start"
+msgstr "Iniciar"
+
+#, fuzzy
+msgid "Start / Stop"
+msgstr "Iniciar / Parar"
+
+msgid "Start/Stop Radicale server"
+msgstr "Iniciar/Parar o servidor Radicale"
+
+msgid "Storage"
+msgstr "Armazenamento"
+
+msgid "Storage Encoding"
+msgstr "Codificação do Armazenamento"
+
+msgid "Storage backend"
+msgstr "Serviço de armazenamento"
+
+msgid "Syslog Log level"
+msgstr "Nível de detalhamento do serviço de registro (syslog)"
+
+#, fuzzy
+msgid "System"
+msgstr "Sistema"
+
+msgid ""
+"The Radicale Project is a complete CalDAV (calendar) and CardDAV (contact) "
+"server solution."
+msgstr "O Projeto Radicale é uma solução completa de CalDAV (agenda) e CardDAV (contatos)."
+
+msgid ""
+"They can be viewed and edited by calendar and contact clients on mobile "
+"phones or computers."
+msgstr "Eles podem ser visualizados e editados pelos clientes de agenda e de contatos em telefones celulares ou computadores."
+
+msgid "To edit the file follow this link!"
+msgstr "Para editar o arquivo, siga este link!"
+
+msgid "To view latest log file follow this link!"
+msgstr "Para visualizar mais recente arquivo de registros(log), siga este link!"
+
+msgid "Value is not a number"
+msgstr "O valor não é um número"
+
+msgid "Value is not an Integer >= 0 !"
+msgstr "O valor não é um número natural (>=0)!"
+
+msgid "Value not between 0 and 300"
+msgstr "Valor não está entre 0 e 300"
+
+msgid "Value required ! Integer >= 0 !"
+msgstr "O valor é necessário! Número natural (>=0)!"
+
+#, fuzzy
+msgid "Version"
+msgstr "Versão"
+
+#, fuzzy
+msgid "Version Information"
+msgstr "Informação da Versão"
+
+msgid ""
+"WARNING: Only 'File-system' is documented and tested by Radicale development"
+msgstr "AVISO: Apenas 'Sistema de Arquivos "está documentado e testado pelo desenvolvimento do Radicale"
+
+#, fuzzy
+msgid "Warning"
+msgstr "Alerta"
+
+msgid ""
+"You can also get groups from the user regex in the collection with {0}, {1}, "
+"etc."
+msgstr "Você também pode obter grupos a partir da expressão regular do usuário na coleção com {0}, {1} , etc."
+
+msgid ""
+"You can use Python's ConfigParser interpolation values %(login)s and "
+"%(path)s."
+msgstr "Você pode usar a interpolação de valores %(login)s e %(path)s do ConfigParser do Python."
+
+msgid "crypt"
+msgstr "cifrar"
+
+msgid "custom"
+msgstr "personalizado"
+
+msgid "htpasswd file"
+msgstr "arquivo htpasswd"
+
+#, fuzzy
+msgid "installed"
+msgstr "instalado"
+
+msgid "no valid path given!"
+msgstr "Nenhum caminho válido foi informado!"
+
+#, fuzzy
+msgid "or higher"
+msgstr "ou maior"
+
+msgid "plain"
+msgstr "plano"
+
+#, fuzzy
+msgid "required"
+msgstr "necessário"
+
+msgid "salted SHA-1"
+msgstr "SHA-1 com salto"
+
index 721191a..68a5b3a 100644 (file)
@@ -13,9 +13,10 @@ s:tab("template", translate("Edit Template"))
 s:taboption("general", Value, "name", translate("Hostname"))
 s:taboption("general", Value, "description", translate("Description"))
 s:taboption("general", Value, "workgroup", translate("Workgroup"))
-s:taboption("general", Value, "homes", translate("Share home-directories"),
+h = s:taboption("general", Flag, "homes", translate("Share home-directories"),
         translate("Allow system users to reach their home directories via " ..
                 "network shares"))
+h.rmempty = false
 
 tmpl = s:taboption("template", Value, "_tmpl",
        translate("Edit the template that is used for generating the samba configuration."), 
@@ -53,6 +54,12 @@ ro.rmempty = false
 ro.enabled = "yes"
 ro.disabled = "no"
 
+br = s:option(Flag, "browseable", translate("Browseable"))
+br.rmempty = false
+br.default = "yes"
+br.enabled = "yes"
+br.disabled = "no"
+
 go = s:option(Flag, "guest_ok", translate("Allow guests"))
 go.rmempty = false
 go.enabled = "yes"
index 0668b1b..fadcbdf 100644 (file)
@@ -26,6 +26,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr "Usuaris permesos"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "Crea màscara"
 
index fefb7ff..4a00124 100644 (file)
@@ -22,6 +22,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr "Povolení uživatelé"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "Vytvořit masku"
 
index a5ceb05..1bcac0c 100644 (file)
@@ -24,6 +24,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr "Legitimierte Benutzer"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "Berechtigungsmaske für neue Dateien"
 
index 7cc722d..9a15ad1 100644 (file)
@@ -22,6 +22,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr ""
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr ""
 
index f524c14..94cfdb5 100644 (file)
@@ -22,6 +22,9 @@ msgstr "Allow system users to reach their home directories via network shares"
 msgid "Allowed users"
 msgstr "Allowed users"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "Create mask"
 
index 950a817..c14ebd2 100644 (file)
@@ -24,6 +24,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr "Usuarios permitidos"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "Crear máscara"
 
index 8877900..ff040b5 100644 (file)
@@ -24,6 +24,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr "Utilisateurs autorisés"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "Maque de création"
 
index dd21a4a..620f56c 100644 (file)
@@ -17,6 +17,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr ""
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr ""
 
index 64d1e22..38a9a08 100644 (file)
@@ -22,6 +22,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr "Engedélyezett felhasználók"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "Létrehozási maszk"
 
index 4645782..a2bb9b6 100644 (file)
@@ -24,6 +24,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr "Utenti ammessi"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "Mask di creazione dei file"
 
index c527507..9f338de 100644 (file)
@@ -22,6 +22,9 @@ msgstr "sambaを介してユーザーのホームディレクトリへのアク
 msgid "Allowed users"
 msgstr "許可されたユーザー"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "マスクの作成"
 
index e29133e..de4ed7c 100644 (file)
@@ -16,6 +16,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr ""
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr ""
 
index 1c5c807..7059d77 100644 (file)
@@ -13,6 +13,9 @@ msgstr "Tillat systembrukere å nå sine hjemmekataloger via nettverks mapper."
 msgid "Allowed users"
 msgstr "Tillatte brukere"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "Opprett Maske"
 
index 7482622..bf54e78 100644 (file)
@@ -23,6 +23,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr "Użytkownicy z prawem dostępu"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "Utwórz maskę"
 
index a753152..43ea3b9 100644 (file)
@@ -24,6 +24,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr "Usuários permitidos"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "Máscara de criação"
 
index 4c5a2cd..6d4f003 100644 (file)
@@ -24,6 +24,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr "Utilizadores Permitidos"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "Criar Máscara"
 
index 4bc3415..78c55e4 100644 (file)
@@ -23,6 +23,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr "Utilizatori acceptati"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "Creaza masca"
 
index 82906e3..4823dc4 100644 (file)
@@ -25,6 +25,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr "Разрешённые пользователи"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "Создать маску"
 
index 66ec9e0..2c511c8 100644 (file)
@@ -17,6 +17,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr ""
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr ""
 
index b83dec5..549a69c 100644 (file)
@@ -18,6 +18,9 @@ msgstr "Tillåt systemanvändare att nå deras hem-mappar via nätverksdelningar
 msgid "Allowed users"
 msgstr "Tillåtna användare"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "Skapa mask"
 
index d91400b..9e4ab7f 100644 (file)
@@ -10,6 +10,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr ""
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr ""
 
index fda2f6e..486768f 100644 (file)
@@ -17,6 +17,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr ""
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr ""
 
index 6f2a920..077315e 100644 (file)
@@ -23,6 +23,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr "Дозволені користувачі"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "Створити маску"
 
index 4e5638d..c5f6e02 100644 (file)
@@ -28,6 +28,9 @@ msgstr ""
 msgid "Allowed users"
 msgstr "Người sử dụng được cho phép"
 
+msgid "Browseable"
+msgstr ""
+
 #, fuzzy
 msgid "Create mask"
 msgstr "Tạo Mask"
index 4ff671b..2294b61 100644 (file)
@@ -22,6 +22,9 @@ msgstr "允许系统用户通过网络共享访问他们的主目录"
 msgid "Allowed users"
 msgstr "允许用户"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "创建权限"
 
index 6ec99ee..bfa2d7d 100644 (file)
@@ -20,6 +20,9 @@ msgstr "允許系統使用者透過網路分享家目錄"
 msgid "Allowed users"
 msgstr "允許使用者"
 
+msgid "Browseable"
+msgstr ""
+
 msgid "Create mask"
 msgstr "建立權限"
 
@@ -70,7 +73,9 @@ msgid ""
 "your samba configuration will be generated. Values enclosed by pipe symbols "
 "('|') should not be changed. They get their values from the 'General "
 "Settings' tab."
-msgstr "建立Samba設定的 \"/etc/samba/smb.conf.template\" 檔案內容。被('|')包圍的值可以在基本設定中進行設定"
+msgstr ""
+"建立Samba設定的 \"/etc/samba/smb.conf.template\" 檔案內容。被('|')包圍的值可"
+"以在基本設定中進行設定"
 
 msgid "Workgroup"
 msgstr "工作群組"
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
new file mode 100644 (file)
index 0000000..f2b18e3
--- /dev/null
@@ -0,0 +1,97 @@
+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-shairplay/po/pt-br/shairplay.po b/applications/luci-app-shairplay/po/pt-br/shairplay.po
new file mode 100644 (file)
index 0000000..c7d0ab1
--- /dev/null
@@ -0,0 +1,54 @@
+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"
+"X-Poedit-Bookmarks: -1,5,-1,-1,-1,-1,-1,-1,-1,-1\n"
+
+msgid "AO Device ID"
+msgstr "Identificador do dispositivo AO"
+
+msgid "AO Device Name"
+msgstr "Nome do dispositivo AO"
+
+msgid "AO Driver"
+msgstr "Driver do AO"
+
+msgid "Airport Name"
+msgstr "Nome do Airport"
+
+msgid "Default"
+msgstr "Padrão"
+
+msgid "Enabled"
+msgstr "Habilitado"
+
+msgid "HW Address"
+msgstr "Endereço de Hardware"
+
+msgid "Password"
+msgstr "Senha"
+
+msgid "Port"
+msgstr "Porta"
+
+msgid "Respawn"
+msgstr "Redisparar"
+
+msgid "Shairplay"
+msgstr "Shairplay"
+
+msgid ""
+"Shairplay is a simple AirPlay server implementation, here you can configure "
+"the settings."
+msgstr ""
+"Shairplay é uma implementação simples de um servidor AirPlay. Aqui você pode "
+"configurá-lo."
diff --git a/applications/luci-app-simple-adblock/Makefile b/applications/luci-app-simple-adblock/Makefile
new file mode 100644 (file)
index 0000000..d7be685
--- /dev/null
@@ -0,0 +1,16 @@
+# 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:=Simple Adblock Web UI
+LUCI_DEPENDS:=+simple-adblock
+LUCI_PKGARCH:=all
+PKG_RELEASE:=2
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua b/applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua
new file mode 100644 (file)
index 0000000..46125b3
--- /dev/null
@@ -0,0 +1,7 @@
+module("luci.controller.simpleadblock", package.seeall)
+function index()
+       if not nixio.fs.access("/etc/config/simple-adblock") then
+               return
+       end
+       entry({"admin", "services", "simpleadblock"}, cbi("simpleadblock"), _("Simple AdBlock"))
+end
diff --git a/applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua b/applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua
new file mode 100644 (file)
index 0000000..214f298
--- /dev/null
@@ -0,0 +1,79 @@
+m = Map("simple-adblock", translate("Simple AdBlock Settings"))
+s = m:section(NamedSection, "config", "simple-adblock")
+
+-- General options
+e = s:option(Flag, "enabled", translate("Enable/start service"))
+e.rmempty  = false
+
+function e.cfgvalue(self, section)
+       return self.map:get(section, "enabled") == "1" and luci.sys.init.enabled("simple-adblock") and self.enabled or self.disabled
+end
+
+function e.write(self, section, value)
+       if value == "1" then
+               luci.sys.call("/etc/init.d/simple-adblock enable >/dev/null")
+               luci.sys.call("/etc/init.d/simple-adblock start >/dev/null")
+       else
+               luci.sys.call("/etc/init.d/simple-adblock stop >/dev/null")
+       end
+       return Flag.write(self, section, value)
+end
+
+o2 = s:option(ListValue, "verbosity", translate("Output Verbosity Setting"),translate("Controls system log and console output verbosity"))
+o2:value("0", translate("Suppress output"))
+o2:value("1", translate("Some output"))
+o2:value("2", translate("Verbose output"))
+o2.rmempty = false
+o2.default = 2
+
+o3 = s:option(ListValue, "force_dns", translate("Force Router DNS"), translate("Forces Router DNS use on local devices, also known as DNS Hijacking"))
+o3:value("0", translate("Let local devices use their own DNS servers if set"))
+o3:value("1", translate("Force Router DNS server to all local devices"))
+o3.rmempty = false
+o3.default = 1
+
+
+local sysfs_path = "/sys/class/leds/"
+local leds = {}
+if nixio.fs.access(sysfs_path) then
+       leds = nixio.util.consume((nixio.fs.dir(sysfs_path)))
+end
+if #leds ~= 0 then
+       o3 = s:option(Value, "led", translate("LED to indicate status"), translate("Pick the LED not already used in ")
+               .. [[<a href="]] .. luci.dispatcher.build_url("admin/system/leds") .. [[">]]
+               .. translate("System LED Configuration") .. [[</a>]])
+       o3.rmempty = true
+       o3:value("", translate("none"))
+       for k, v in ipairs(leds) do
+               o3:value(v)
+       end
+end
+
+
+s2 = m:section(NamedSection, "config", "simple-adblock")
+-- Whitelisted Domains
+d1 = s2:option(DynamicList, "whitelist_domain", translate("Whitelisted Domains"), translate("Individual domains to be whitelisted"))
+d1.addremove = false
+d1.optional = false
+
+-- Blacklisted Domains
+d3 = s2:option(DynamicList, "blacklist_domain", translate("Blacklisted Domains"), translate("Individual domains to be blacklisted"))
+d3.addremove = false
+d3.optional = false
+
+-- Whitelisted Domains URLs
+d2 = s2:option(DynamicList, "whitelist_domains_url", translate("Whitelisted Domain URLs"), translate("URLs to lists of domains to be whitelisted"))
+d2.addremove = false
+d2.optional = false
+
+-- Blacklisted Domains URLs
+d4 = s2:option(DynamicList, "blacklist_domains_url", translate("Blacklisted Domain URLs"), translate("URLs to lists of domains to be blacklisted"))
+d4.addremove = false
+d4.optional = false
+
+-- Blacklisted Hosts URLs
+d5 = s2:option(DynamicList, "blacklist_hosts_url", translate("Blacklisted Hosts URLs"), translate("URLs to lists of hosts to be blacklisted"))
+d5.addremove = false
+d5.optional = false
+
+return m
diff --git a/applications/luci-app-simple-adblock/po/ja/simple-adblock.po b/applications/luci-app-simple-adblock/po/ja/simple-adblock.po
new file mode 100644 (file)
index 0000000..7926595
--- /dev/null
@@ -0,0 +1,93 @@
+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.12\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid "Blacklisted Domain URLs"
+msgstr "ドメイン ブラックリストのURL"
+
+msgid "Blacklisted Domains"
+msgstr "ブラックリスト ドメイン"
+
+msgid "Blacklisted Hosts URLs"
+msgstr "hosts ブラックリストのURL"
+
+msgid "Controls system log and console output verbosity"
+msgstr "システム ログとコンソール出力の冗長性を設定します。"
+
+msgid "Enable/start service"
+msgstr "サービスの有効化/開始"
+
+msgid "Force Router DNS"
+msgstr "ルーターDNSの強制"
+
+msgid "Force Router DNS server to all local devices"
+msgstr "全ローカル デバイスにルーター DNSサーバーの使用を強制"
+
+msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
+msgstr ""
+"ローカル デバイスに対し、ルーター上のDNSサーバーの使用を強制します。これは、"
+"DNS ハイジャックとしても知られています。"
+
+msgid "Individual domains to be blacklisted"
+msgstr "ブラックリストに登録する、個々のドメインです。"
+
+msgid "Individual domains to be whitelisted"
+msgstr "ホワイトリストに登録する、個々のドメインです。"
+
+msgid "LED to indicate status"
+msgstr "ステータスを表示するLED"
+
+msgid "Let local devices use their own DNS servers if set"
+msgstr "DNSサーバーの使用を強制しない"
+
+msgid "Output Verbosity Setting"
+msgstr "出力詳細度の設定"
+
+msgid "Pick the LED not already used in"
+msgstr "右の設定で既に使用されていないLEDを選択します:"
+
+msgid "Simple AdBlock"
+msgstr "Simple AdBlock"
+
+msgid "Simple AdBlock Settings"
+msgstr "Simple AdBlock 設定"
+
+msgid "Some output"
+msgstr "軽量出力"
+
+msgid "Suppress output"
+msgstr "出力の抑制"
+
+msgid "System LED Configuration"
+msgstr "LED 設定"
+
+msgid "URLs to lists of domains to be blacklisted"
+msgstr "ブラックリストに登録するドメインのリストのURLです。"
+
+msgid "URLs to lists of domains to be whitelisted"
+msgstr "ホワイトリストに登録するドメインのリストのURLです。"
+
+msgid "URLs to lists of hosts to be blacklisted"
+msgstr "ブラックリストに登録するドメインが列挙された、hostsファイルのURLです。"
+
+msgid "Verbose output"
+msgstr "詳細出力"
+
+msgid "Whitelisted Domain URLs"
+msgstr "ドメイン ホワイトリストのURL"
+
+msgid "Whitelisted Domains"
+msgstr "ホワイトリスト ドメイン"
+
+msgid "none"
+msgstr "なし"
diff --git a/applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po b/applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po
new file mode 100644 (file)
index 0000000..6dbbf8b
--- /dev/null
@@ -0,0 +1,86 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "Blacklisted Domain URLs"
+msgstr "Endereço com lista de Domínio para a Lista Negra"
+
+msgid "Blacklisted Domains"
+msgstr "Domínios para a Lista Negra"
+
+msgid "Blacklisted Hosts URLs"
+msgstr "Endereços de Hosts para a Lista Negra"
+
+msgid "Controls system log and console output verbosity"
+msgstr ""
+"Controla o sistema de registro e o detalhamento das mensagens de saída do "
+"console"
+
+msgid "Enable/start service"
+msgstr "Habilitar/Iniciar o serviço"
+
+msgid "Force Router DNS"
+msgstr "Forçar o DNS do Roteador"
+
+msgid "Force Router DNS server to all local devices"
+msgstr "Forçar o servidor de DNS do Roteador para todos os dispositivos locais"
+
+msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
+msgstr ""
+"Forçar o uso do DNS do Roteador nos dispositivos locais, também conhecido "
+"como redirecionamento de DNS"
+
+msgid "Individual domains to be blacklisted"
+msgstr "Domínios individuais para serem incluídos na Lista Negra"
+
+msgid "Individual domains to be whitelisted"
+msgstr "Domínios individuais para serem incluídos na Lista Branca"
+
+msgid "LED to indicate status"
+msgstr "LED para indicar o estado"
+
+msgid "Let local devices use their own DNS servers if set"
+msgstr ""
+"Deixe que os dispositivos locais usem seus próprios servidores de DNS, se "
+"definidos"
+
+msgid "Output Verbosity Setting"
+msgstr "Definição do detalhamento do registro"
+
+msgid "Pick the LED not already used in"
+msgstr "Escolha um LED não usando em"
+
+msgid "Simple AdBlock"
+msgstr "Simple AdBlock"
+
+msgid "Simple AdBlock Settings"
+msgstr "Configuração do Simple AdBlock"
+
+msgid "Some output"
+msgstr "Pouco detalhado"
+
+msgid "Suppress output"
+msgstr "Suprimir"
+
+msgid "System LED Configuration"
+msgstr "Configuração do LED"
+
+msgid "URLs to lists of domains to be blacklisted"
+msgstr "Endereço da lista dos domínios para a Lista Negra"
+
+msgid "URLs to lists of domains to be whitelisted"
+msgstr "Endereço da lista dos domínios para a Lista Branca"
+
+msgid "URLs to lists of hosts to be blacklisted"
+msgstr "Endereço da lista dos hosts para a Lista Negra"
+
+msgid "Verbose output"
+msgstr "Detalhado"
+
+msgid "Whitelisted Domain URLs"
+msgstr "Endereço com lista de domínio para a Lista Branca"
+
+msgid "Whitelisted Domains"
+msgstr "Domínios para a Lista Branca"
+
+msgid "none"
+msgstr "Nenhum"
diff --git a/applications/luci-app-simple-adblock/po/pt/simple-adblock.po b/applications/luci-app-simple-adblock/po/pt/simple-adblock.po
new file mode 100644 (file)
index 0000000..6dbbf8b
--- /dev/null
@@ -0,0 +1,86 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "Blacklisted Domain URLs"
+msgstr "Endereço com lista de Domínio para a Lista Negra"
+
+msgid "Blacklisted Domains"
+msgstr "Domínios para a Lista Negra"
+
+msgid "Blacklisted Hosts URLs"
+msgstr "Endereços de Hosts para a Lista Negra"
+
+msgid "Controls system log and console output verbosity"
+msgstr ""
+"Controla o sistema de registro e o detalhamento das mensagens de saída do "
+"console"
+
+msgid "Enable/start service"
+msgstr "Habilitar/Iniciar o serviço"
+
+msgid "Force Router DNS"
+msgstr "Forçar o DNS do Roteador"
+
+msgid "Force Router DNS server to all local devices"
+msgstr "Forçar o servidor de DNS do Roteador para todos os dispositivos locais"
+
+msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
+msgstr ""
+"Forçar o uso do DNS do Roteador nos dispositivos locais, também conhecido "
+"como redirecionamento de DNS"
+
+msgid "Individual domains to be blacklisted"
+msgstr "Domínios individuais para serem incluídos na Lista Negra"
+
+msgid "Individual domains to be whitelisted"
+msgstr "Domínios individuais para serem incluídos na Lista Branca"
+
+msgid "LED to indicate status"
+msgstr "LED para indicar o estado"
+
+msgid "Let local devices use their own DNS servers if set"
+msgstr ""
+"Deixe que os dispositivos locais usem seus próprios servidores de DNS, se "
+"definidos"
+
+msgid "Output Verbosity Setting"
+msgstr "Definição do detalhamento do registro"
+
+msgid "Pick the LED not already used in"
+msgstr "Escolha um LED não usando em"
+
+msgid "Simple AdBlock"
+msgstr "Simple AdBlock"
+
+msgid "Simple AdBlock Settings"
+msgstr "Configuração do Simple AdBlock"
+
+msgid "Some output"
+msgstr "Pouco detalhado"
+
+msgid "Suppress output"
+msgstr "Suprimir"
+
+msgid "System LED Configuration"
+msgstr "Configuração do LED"
+
+msgid "URLs to lists of domains to be blacklisted"
+msgstr "Endereço da lista dos domínios para a Lista Negra"
+
+msgid "URLs to lists of domains to be whitelisted"
+msgstr "Endereço da lista dos domínios para a Lista Branca"
+
+msgid "URLs to lists of hosts to be blacklisted"
+msgstr "Endereço da lista dos hosts para a Lista Negra"
+
+msgid "Verbose output"
+msgstr "Detalhado"
+
+msgid "Whitelisted Domain URLs"
+msgstr "Endereço com lista de domínio para a Lista Branca"
+
+msgid "Whitelisted Domains"
+msgstr "Domínios para a Lista Branca"
+
+msgid "none"
+msgstr "Nenhum"
diff --git a/applications/luci-app-simple-adblock/po/templates/simple-adblock.pot b/applications/luci-app-simple-adblock/po/templates/simple-adblock.pot
new file mode 100644 (file)
index 0000000..4cfff96
--- /dev/null
@@ -0,0 +1,80 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Blacklisted Domain URLs"
+msgstr ""
+
+msgid "Blacklisted Domains"
+msgstr ""
+
+msgid "Blacklisted Hosts URLs"
+msgstr ""
+
+msgid "Controls system log and console output verbosity"
+msgstr ""
+
+msgid "Enable/start service"
+msgstr ""
+
+msgid "Force Router DNS"
+msgstr ""
+
+msgid "Force Router DNS server to all local devices"
+msgstr ""
+
+msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
+msgstr ""
+
+msgid "Individual domains to be blacklisted"
+msgstr ""
+
+msgid "Individual domains to be whitelisted"
+msgstr ""
+
+msgid "LED to indicate status"
+msgstr ""
+
+msgid "Let local devices use their own DNS servers if set"
+msgstr ""
+
+msgid "Output Verbosity Setting"
+msgstr ""
+
+msgid "Pick the LED not already used in"
+msgstr ""
+
+msgid "Simple AdBlock"
+msgstr ""
+
+msgid "Simple AdBlock Settings"
+msgstr ""
+
+msgid "Some output"
+msgstr ""
+
+msgid "Suppress output"
+msgstr ""
+
+msgid "System LED Configuration"
+msgstr ""
+
+msgid "URLs to lists of domains to be blacklisted"
+msgstr ""
+
+msgid "URLs to lists of domains to be whitelisted"
+msgstr ""
+
+msgid "URLs to lists of hosts to be blacklisted"
+msgstr ""
+
+msgid "Verbose output"
+msgstr ""
+
+msgid "Whitelisted Domain URLs"
+msgstr ""
+
+msgid "Whitelisted Domains"
+msgstr ""
+
+msgid "none"
+msgstr ""
diff --git a/applications/luci-app-simple-adblock/root/etc/uci-defaults/40_luci-simple-adblock b/applications/luci-app-simple-adblock/root/etc/uci-defaults/40_luci-simple-adblock
new file mode 100644 (file)
index 0000000..3b7137e
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+uci -q batch <<-EOF >/dev/null
+       delete ucitrack.@simple-adblock[-1]
+       add ucitrack simple-adblock
+       set ucitrack.@simple-adblock[-1].init=simple-adblock
+       commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
diff --git a/applications/luci-app-squid/Makefile b/applications/luci-app-squid/Makefile
new file mode 100644 (file)
index 0000000..82802c0
--- /dev/null
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Squid LuCI Interface
+LUCI_DEPENDS:=+luci-mod-admin-full +squid
+
+PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-squid/luasrc/controller/squid.lua b/applications/luci-app-squid/luasrc/controller/squid.lua
new file mode 100644 (file)
index 0000000..09946a1
--- /dev/null
@@ -0,0 +1,21 @@
+--[[
+
+LuCI Squid module
+
+Copyright (C) 2015, OpenWrt.org
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
+
+]]--
+
+module("luci.controller.squid", package.seeall)
+
+function index()
+       entry({"admin", "services", "squid"}, cbi("squid"), _("Squid"))
+end
diff --git a/applications/luci-app-squid/luasrc/model/cbi/squid.lua b/applications/luci-app-squid/luasrc/model/cbi/squid.lua
new file mode 100644 (file)
index 0000000..0ac554a
--- /dev/null
@@ -0,0 +1,67 @@
+--[[
+
+LuCI Squid module
+
+Copyright (C) 2015, OpenWrt.org
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
+
+]]--
+
+local fs = require "nixio.fs"
+local sys = require "luci.sys"
+require "ubus"
+
+m = Map("squid", translate("Squid"))
+m.on_after_commit = function() luci.sys.call("/etc/init.d/squid restart") end
+
+s = m:section(TypedSection, "squid")
+s.anonymous = true
+s.addremove = false
+
+s:tab("general", translate("General Settings"))
+
+http_port = s:taboption("general", Value, "http_port", translate("Port"))
+http_port.datatype = "portrange"
+http_port.placeholder = "0-65535"
+
+visible_hostname = s:taboption("general", Value, "visible_hostname", translate("Visible Hostname"))
+visible_hostname.datatype="string"
+visible_hostname.placeholder = "OpenWrt"
+
+coredump_dir = s:taboption("general", Value, "coredump_dir", translate("Coredump files directory"))
+coredump_dir.datatype="string"
+coredump_dir.placeholder = "/tmp/squid"
+
+s:tab("advanced", translate("Advanced Settings"))
+
+squid_config_file = s:taboption("advanced", TextValue, "_data", "")
+squid_config_file.wrap = "off"
+squid_config_file.rows = 25
+squid_config_file.rmempty = false
+
+function squid_config_file.cfgvalue()
+       local uci = require "luci.model.uci".cursor_state()
+       local file = uci:get("squid", "squid", "config_file")
+       if file then
+               return fs.readfile(file) or ""
+       else
+               return ""
+       end
+end
+
+function squid_config_file.write(self, section, value)
+    if value then
+               local uci = require "luci.model.uci".cursor_state()
+               local file = uci:get("squid", "squid", "config_file")
+       fs.writefile(file, value:gsub("\r\n", "\n"))
+    end
+end
+
+return m
index 36c5554..1bc0714 100644 (file)
@@ -24,6 +24,7 @@ function index()
                s_network       = _("Network plugins"),
 
                conntrack       = _("Conntrack"),
+               contextswitch   = _("Context Switches"),
                cpu                     = _("Processor"),
                cpufreq         = _("CPU Frequency"),
                csv                     = _("CSV Output"),
@@ -58,7 +59,7 @@ function index()
        -- our collectd menu
        local collectd_menu = {
                output  = { "csv", "network", "rrdtool", "unixsock" },
-               general = { "cpu", "cpufreq", "df", "disk", "email",
+               general = { "contextswitch", "cpu", "cpufreq", "df", "disk", "email",
                        "entropy", "exec", "irq", "load", "memory",
                        "nut", "processes", "sensors", "thermal", "uptime" },
                network = { "conntrack", "dns", "interface", "iptables",
diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua
new file mode 100644 (file)
index 0000000..7ae6b24
--- /dev/null
@@ -0,0 +1,14 @@
+-- Licensed to the public under the Apache License 2.0.
+
+m = Map("luci_statistics",
+       translate("CPU Context Switches Plugin Configuration"),
+       translate("This plugin collects statistics about the processor context switches."))
+
+-- collectd_contextswitch config section
+s = m:section( NamedSection, "collectd_contextswitch", "luci_statistics" )
+
+-- collectd_contextswitch.enable
+enable = s:option( Flag, "enable", translate("Enable this plugin") )
+enable.default = 0
+
+return m
index 806b054..5176a19 100644 (file)
@@ -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/definitions/contextswitch.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/contextswitch.lua
new file mode 100644 (file)
index 0000000..6826e12
--- /dev/null
@@ -0,0 +1,23 @@
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.statistics.rrdtool.definitions.contextswitch",package.seeall)
+
+function rrdargs( graph, plugin, plugin_instance, dtype )
+
+       return {
+               title = "%H: Context switches",
+               alt_autoscale = true,
+               vlabel = "Switches/s",
+               number_format = "%5.0lf",
+               data = {
+                       types = { "contextswitch" },
+                       sources = {
+                               contextswitch = { "value" }
+                       },
+                       options = {
+                               contextswitch = { color = "0000ff", title = "Context switches", noarea=true, overlay=true }
+                       }
+               }
+       }
+end
+
index d48441a..62d0545 100644 (file)
@@ -5,28 +5,30 @@ module("luci.statistics.rrdtool.definitions.processes", package.seeall)
 
 function rrdargs( graph, plugin, plugin_instance, dtype )
 
+    if  plugin_instance == "" then
        return {
-               {
                        title = "%H: Processes",
                        vlabel = "Processes/s",
                        data = {
                                instances = {
                                        ps_state = {
-                                               "sleeping", "running", "paging", "blocked", "stopped", "zombies"
+                                               "sleeping", "running", "paging",
+                                               "blocked", "stopped", "zombies"
                                        }
                                },
 
                                options = {
-                                       ps_state_sleeping = { color = "0000ff" },
-                                       ps_state_running  = { color = "008000" },
-                                       ps_state_paging   = { color = "ffff00" },
-                                       ps_state_blocked  = { color = "ff5000" },
-                                       ps_state_stopped  = { color = "555555" },
-                                       ps_state_zombies  = { color = "ff0000" }
+                                       ps_state_sleeping = { color = "0000ff", title = "Sleeping" },
+                                       ps_state_running  = { color = "008000", title = "Running" },
+                                       ps_state_paging   = { color = "ffff00", title = "Paging" },
+                                       ps_state_blocked  = { color = "ff5000", title = "Blocked" },
+                                       ps_state_stopped  = { color = "555555", title = "Stopped" },
+                                       ps_state_zombies  = { color = "ff0000", title = "Zombies" }
                                }
                        }
-               },
-
+       }
+    else
+       return {
                {
                        title = "%H: CPU time used by %pi",
                        vlabel = "Jiffies",
@@ -38,11 +40,13 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
                                options = {
                                        ps_cputime__user = {
                                                color   = "0000ff",
+                                               title   = "User",
                                                overlay = true
                                        },
 
                                        ps_cputime__syst = {
                                                color   = "ff0000",
+                                               title   = "System",
                                                overlay = true
                                        }
                                }
@@ -59,15 +63,15 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
                                },
 
                                options = {
-                                       ps_count__threads   = { color = "00ff00" },
-                                       ps_count__processes = { color = "0000bb" }
+                                       ps_count__threads   = { color = "00ff00", title = "Threads" },
+                                       ps_count__processes = { color = "0000bb", title = "Processes" }
                                }
                        }
                },
 
                {
                        title = "%H: Page faults in %pi",
-                       vlabel = "Pagefaults",
+                       vlabel = "Page faults",
                        detail = true,
                        data = {
                                sources = {
@@ -75,14 +79,14 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
                                },
 
                                options = {
-                                       ps_pagefaults__minflt = { color = "ff0000" },
-                                       ps_pagefaults__majflt = { color = "ff5500" }
+                                       ps_pagefaults__minflt = { color = "0000ff", title = "Minor" },
+                                       ps_pagefaults__majflt = { color = "ff0000", title = "Major" }
                                }
                        }
                },
 
                {
-                       title = "%H: Virtual memory size of %pi",
+                       title = "%H: Resident segment size (RSS) of %pi",
                        vlabel = "Bytes",
                        detail = true,
                        number_format = "%5.1lf%sB",
@@ -90,9 +94,24 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
                                types = { "ps_rss" },
 
                                options = {
-                                       ps_rss = { color = "0000ff" }
+                                       ps_rss = { color = "0000ff", title = "Resident segment" }
+                               }
+                       }
+               },
+
+               {
+                       title = "%H: Virtual memory size (VSZ) of %pi",
+                       vlabel = "Bytes",
+                       detail = true,
+                       number_format = "%5.1lf%sB",
+                       data = {
+                               types = { "ps_vm" },
+
+                               options = {
+                                       ps_vm = { color = "0000ff", title = "Virtual memory" }
                                }
                        }
                }
        }
+    end
 end
index b6a98a0..33d5051 100644 (file)
@@ -39,6 +39,9 @@ msgstr "Directori base"
 msgid "Basic monitoring"
 msgstr "Monitoreig bàsic"
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -90,6 +93,9 @@ msgstr "Conntrack"
 msgid "Conntrack Plugin Configuration"
 msgstr "Configuració del connector Conntrack"
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr "Configuració del connector DF"
 
@@ -696,6 +702,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index b4a936a..8498316 100644 (file)
@@ -35,6 +35,9 @@ msgstr "Základní adresář"
 msgid "Basic monitoring"
 msgstr "Základní sledování"
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -86,6 +89,9 @@ msgstr "Conntrack"
 msgid "Conntrack Plugin Configuration"
 msgstr "Nastavení pluginu Conntrack"
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr "Nastavení pluginu DF"
 
@@ -682,6 +688,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index ef29176..196433e 100644 (file)
@@ -37,6 +37,9 @@ msgstr "Basisverzeichnis"
 msgid "Basic monitoring"
 msgstr "Schnittstellen einfach überwachen"
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -88,6 +91,9 @@ msgstr "Conntrack"
 msgid "Conntrack Plugin Configuration"
 msgstr "Conntrack Plugin Einstellungen"
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr "DF Plugin Konfiguration"
 
@@ -701,6 +707,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index 9b530c0..da54cda 100644 (file)
@@ -38,6 +38,9 @@ msgstr "Κατάλογος βάσης"
 msgid "Basic monitoring"
 msgstr ""
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -89,6 +92,9 @@ msgstr "Conntrack"
 msgid "Conntrack Plugin Configuration"
 msgstr ""
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr ""
 
@@ -642,6 +648,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index 3e9c829..d9ab59c 100644 (file)
@@ -37,6 +37,9 @@ msgstr "Base Directory"
 msgid "Basic monitoring"
 msgstr "Basic monitoring"
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -88,6 +91,9 @@ msgstr ""
 msgid "Conntrack Plugin Configuration"
 msgstr ""
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr "DF Plugin Configuration"
 
@@ -684,6 +690,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index 2db483c..18c2581 100644 (file)
@@ -37,6 +37,9 @@ msgstr "Directorio Base"
 msgid "Basic monitoring"
 msgstr "Monitorización básica"
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -88,6 +91,9 @@ msgstr "Seguimiento"
 msgid "Conntrack Plugin Configuration"
 msgstr "Configuración del seguimiento"
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr "Configuración del plugin DF"
 
@@ -697,6 +703,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index d4190d3..b657bd3 100644 (file)
@@ -37,6 +37,9 @@ msgstr "Répertoire de base"
 msgid "Basic monitoring"
 msgstr "Surveillance de base"
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -88,6 +91,9 @@ msgstr ""
 msgid "Conntrack Plugin Configuration"
 msgstr ""
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr "Configuration du greffon DF"
 
@@ -690,6 +696,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index e27d219..6f40a47 100644 (file)
@@ -37,6 +37,9 @@ msgstr ""
 msgid "Basic monitoring"
 msgstr ""
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -85,6 +88,9 @@ msgstr ""
 msgid "Conntrack Plugin Configuration"
 msgstr ""
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr ""
 
@@ -637,6 +643,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index 4767442..979c72f 100644 (file)
@@ -35,6 +35,9 @@ msgstr "Alapkönyvtár"
 msgid "Basic monitoring"
 msgstr "Általános figyelés"
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -86,6 +89,9 @@ msgstr "Conntrack"
 msgid "Conntrack Plugin Configuration"
 msgstr "Conntrack bővítmény beállítása"
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr "DF bővítmény beállítása"
 
@@ -684,6 +690,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index 3c50ac3..b0ae3d6 100644 (file)
@@ -37,6 +37,9 @@ msgstr ""
 msgid "Basic monitoring"
 msgstr ""
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -88,6 +91,9 @@ msgstr ""
 msgid "Conntrack Plugin Configuration"
 msgstr ""
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr ""
 
@@ -647,6 +653,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index 2a3ffe5..690d920 100644 (file)
@@ -37,6 +37,9 @@ msgstr "ベース・ディレクトリ"
 msgid "Basic monitoring"
 msgstr "基本モニタリング"
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr "CPU 周波数"
 
@@ -87,6 +90,9 @@ msgstr "Conntrack"
 msgid "Conntrack Plugin Configuration"
 msgstr "Conntrack プラグイン設定"
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr "DF プラグイン設定"
 
@@ -699,6 +705,9 @@ msgstr "サーマル"
 msgid "Thermal Plugin Configuration"
 msgstr "サーマル プラグイン設定"
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 "このプラグインは、プロセッサー周波数スケーリングについての統計を収集します。"
index 2a04776..582314c 100644 (file)
@@ -34,6 +34,9 @@ msgstr ""
 msgid "Basic monitoring"
 msgstr ""
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -82,6 +85,9 @@ msgstr ""
 msgid "Conntrack Plugin Configuration"
 msgstr ""
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr ""
 
@@ -634,6 +640,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index 3e3a8e1..d37bc48 100644 (file)
@@ -28,6 +28,9 @@ msgstr "Hoved Katalog"
 msgid "Basic monitoring"
 msgstr "Enkel overvåking"
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -79,6 +82,9 @@ msgstr ""
 msgid "Conntrack Plugin Configuration"
 msgstr ""
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr "DF plugin konfigurasjon"
 
@@ -672,6 +678,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index 474b673..bf2ec93 100644 (file)
@@ -38,6 +38,9 @@ msgstr "Główny katalog"
 msgid "Basic monitoring"
 msgstr "Podstawowy monitoring"
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -89,6 +92,9 @@ msgstr "Conntrack"
 msgid "Conntrack Plugin Configuration"
 msgstr "Konfiguracja wtyczki Conntrack"
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr "Konfiguracja wtyczki DF"
 
@@ -692,6 +698,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index 44f53f0..74c4a26 100644 (file)
@@ -1,17 +1,17 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2014-03-15 22:12+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-02-22 18:27-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"Language-Team: \n"
 
 msgid "Action (target)"
 msgstr "Ação (destino)"
@@ -29,7 +29,7 @@ msgid "Add notification command"
 msgstr "Adicionar o comando de notificação"
 
 msgid "Aggregate number of connected users"
-msgstr ""
+msgstr "Numero agregado de usuários conectados"
 
 msgid "Base Directory"
 msgstr "Diretório Base"
@@ -37,11 +37,14 @@ msgstr "Diretório Base"
 msgid "Basic monitoring"
 msgstr "Monitoramento básico"
 
-msgid "CPU Frequency"
+msgid "CPU Context Switches Plugin Configuration"
 msgstr ""
 
+msgid "CPU Frequency"
+msgstr "Frequência da CPU"
+
 msgid "CPU Frequency Plugin Configuration"
-msgstr ""
+msgstr "Configuração do Plugin da Frequência da CPU"
 
 msgid "CPU Plugin Configuration"
 msgstr "Configuração do plugin CPU"
@@ -88,6 +91,9 @@ msgstr "Conntrack"
 msgid "Conntrack Plugin Configuration"
 msgstr "Configuração do Plugin do Conntrack"
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr "Configuração do plugin DF"
 
@@ -134,16 +140,16 @@ msgid "Email"
 msgstr "Email"
 
 msgid "Empty value = monitor all"
-msgstr ""
+msgstr "Valor vazio = monitore todos"
 
 msgid "Enable this plugin"
 msgstr "Habilitar este plugin"
 
 msgid "Entropy"
-msgstr ""
+msgstr "Entropia"
 
 msgid "Entropy Plugin Configuration"
-msgstr ""
+msgstr "Configuração do Plugin de Entropia"
 
 msgid "Exec"
 msgstr "Exec"
@@ -165,13 +171,13 @@ msgstr ""
 "Encaminhamento entre o endereço de escuta e os endereços dos servidores"
 
 msgid "Gather compression statistics"
-msgstr ""
+msgstr "Obter estatísticas sobre a compressão"
 
 msgid "General plugins"
-msgstr ""
+msgstr "Plugins Gerais"
 
 msgid "Generate a separate graph for each logged user"
-msgstr ""
+msgstr "Gerar um gráfico separado para cada usuário conectado"
 
 msgid "Graphs"
 msgstr "Gráficos"
@@ -204,6 +210,7 @@ msgstr ""
 
 msgid "Hold Ctrl to select multiple items or to deselect entries."
 msgstr ""
+"Segure o Ctrl para selecionar múltiplos itens ou para retirar entradas. "
 
 msgid "Host"
 msgstr "Equipamento"
@@ -259,6 +266,8 @@ msgid ""
 "Max values for a period can be used instead of averages when not using 'only "
 "average RRAs'"
 msgstr ""
+"Valores máximos para um período podem ser usados em vez de médias quando não "
+"estiver usando 'somente RRAs de médias'"
 
 msgid "Maximum allowed connections"
 msgstr "Máximo de conexões permitidas"
@@ -276,10 +285,10 @@ msgid "Monitor all local listen ports"
 msgstr "Monitorar todas as portas locais"
 
 msgid "Monitor all sensors"
-msgstr ""
+msgstr "Monitorar todas os sensores"
 
 msgid "Monitor device(s) / thermal zone(s)"
-msgstr ""
+msgstr "Dispositivo(s) de monitoramento / zona(s) térmica(s)"
 
 msgid "Monitor devices"
 msgstr "Monitorar dispositivos"
@@ -336,6 +345,9 @@ msgid ""
 "Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
 "directory and all its parent directories need to be world readable."
 msgstr ""
+"Nota: como as páginas são renderizadas pelo usuário 'nobody', os arquivos * ."
+"rrd, o diretório de armazenamento e todos os seus diretórios superiores "
+"precisam ser legíveis a todos."
 
 msgid "Number of threads for data collection"
 msgstr "Número de threads para o coletor de dados"
@@ -350,13 +362,13 @@ msgid "Only create average RRAs"
 msgstr "Somente criar RRAs de média"
 
 msgid "OpenVPN"
-msgstr ""
+msgstr "OpenVPN"
 
 msgid "OpenVPN Plugin Configuration"
-msgstr ""
+msgstr "Configuração do Plugin do OpenVPN"
 
 msgid "OpenVPN status files"
-msgstr ""
+msgstr "Arquivos de estado do OpenVPN"
 
 msgid "Options"
 msgstr "Opções"
@@ -416,13 +428,13 @@ msgid "Seconds"
 msgstr "Segundos"
 
 msgid "Sensor list"
-msgstr ""
+msgstr "Lista de sensores"
 
 msgid "Sensors"
-msgstr ""
+msgstr "Sensores"
 
 msgid "Sensors Plugin Configuration"
-msgstr ""
+msgstr "Configuração do Plugin de Sensores"
 
 msgid "Server host"
 msgstr "Endereço do servidor"
@@ -431,13 +443,13 @@ msgid "Server port"
 msgstr "Porta do servidor"
 
 msgid "Setup"
-msgstr ""
+msgstr "Configuração"
 
 msgid "Shaping class monitoring"
 msgstr "Monitoramento das Classes de Shaping"
 
 msgid "Show max values instead of averages"
-msgstr ""
+msgstr "Mostrar valores máximos em vez de médias"
 
 msgid "Socket file"
 msgstr "Arquivo do socket"
@@ -461,10 +473,10 @@ msgid "Specifies what information to collect about the global topology."
 msgstr "Especifica quais informações serão coletadas sobre a topologia global."
 
 msgid "Splash Leases"
-msgstr ""
+msgstr "Concessões do Splash"
 
 msgid "Splash Leases Plugin Configuration"
-msgstr ""
+msgstr "Configuração do Plugin das Concessões do Splash"
 
 msgid "Statistics"
 msgstr "Estatística"
@@ -513,6 +525,7 @@ msgid ""
 "The OpenVPN plugin gathers information about the current vpn connection "
 "status."
 msgstr ""
+"O plugin OpenVPN reúne informações sobre o status atual da conexão VPN."
 
 msgid ""
 "The conntrack plugin collects statistics about the number of tracked "
@@ -565,7 +578,7 @@ msgstr ""
 "Plugin::Collectd mas pode ser utilizado de outras maneiras também."
 
 msgid "The entropy plugin collects statistics about the available entropy."
-msgstr ""
+msgstr "O plugin de entropia coleta estatísticas sobre a entropia disponível."
 
 msgid ""
 "The exec plugin starts external commands to read values from or to notify "
@@ -656,17 +669,24 @@ msgid ""
 "The sensors plugin uses the Linux Sensors framework to gather environmental "
 "statistics."
 msgstr ""
+"O plugin de sensores usa a estrutura de sensores do Linux para coletar "
+"estatísticas ambientais."
 
 msgid ""
 "The splash leases plugin uses libuci to collect statistics about splash "
 "leases."
 msgstr ""
+"O plug-in de concessões splash usa o libuci para coletar estatísticas sobre "
+"concessões de splash."
 
 msgid ""
 "The statistics package uses <a href=\"https://collectd.org/\">Collectd</a> "
 "to gather data and <a href=\"http://oss.oetiker.ch/rrdtool/\">RRDtool</a> to "
 "render diagram images."
 msgstr ""
+"O pacote de estatísticas usa <a href=\"https://collectd.org/\"> Collectd </"
+"a> para coletar dados e <a href=\"http://oss.oetiker.ch/rrdtool/\">RRDtool</"
+"a>  para desenhar os gráficos."
 
 msgid ""
 "The tcpconns plugin collects informations about open tcp connections on "
@@ -680,6 +700,9 @@ msgid ""
 "read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be "
 "read, e.g. thermal_zone1 )"
 msgstr ""
+"O plugin térmico monitorará a temperatura do sistema. Os dados são "
+"tipicamente lidos de /sys/class/thermal/*/temp ('*' indica o dispositivo "
+"térmico a ser lido, ex:, thermal_zone1)"
 
 msgid ""
 "The unixsock plugin creates a unix socket which can be used to read "
@@ -690,15 +713,22 @@ msgstr ""
 
 msgid "The uptime plugin collects statistics about the uptime of the system."
 msgstr ""
+"O plugin de tempo de atividade coleta estatísticas sobre o tempo de "
+"atividade do sistema."
 
 msgid "Thermal"
-msgstr ""
+msgstr "Térmico"
 
 msgid "Thermal Plugin Configuration"
+msgstr "Configuração do Plugin Térmico"
+
+msgid "This plugin collects statistics about the processor context switches."
 msgstr ""
 
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
+"Este plugin coleta as estatísticas sobre o escalonamento da frequência do "
+"processador."
 
 msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
@@ -732,13 +762,13 @@ msgid "Unixsock Plugin Configuration"
 msgstr "Configuração do plugin Unixsock"
 
 msgid "Uptime"
-msgstr ""
+msgstr "Tempo de atividade"
 
 msgid "Uptime Plugin Configuration"
-msgstr ""
+msgstr "Configuração do Plugin de Tempo de Atividade"
 
 msgid "Use improved naming schema"
-msgstr ""
+msgstr "Use um esquema de nomeação melhorado"
 
 msgid "Used PID file"
 msgstr "Arquivo PID usado"
@@ -758,6 +788,8 @@ msgstr "Configuração do Plugin iwinfo da Rede Sem Fio (Wireless)"
 msgid ""
 "You can install additional collectd-mod-* plugins to enable more statistics."
 msgstr ""
+"Você pode instalar plugins adicionais (collectd-mod-*) para habilitar mais "
+"estatísticas."
 
 msgid "e.g. br-ff"
 msgstr "ex: br-ff"
index 1913d77..79c7bd0 100644 (file)
@@ -37,6 +37,9 @@ msgstr "Diretório Base"
 msgid "Basic monitoring"
 msgstr "Monitoramento básico"
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -88,6 +91,9 @@ msgstr ""
 msgid "Conntrack Plugin Configuration"
 msgstr ""
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr "Configuração do plugin DF"
 
@@ -690,6 +696,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index 008cc88..c5dfcfe 100644 (file)
@@ -38,6 +38,9 @@ msgstr "Directorul de baza"
 msgid "Basic monitoring"
 msgstr ""
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -89,6 +92,9 @@ msgstr ""
 msgid "Conntrack Plugin Configuration"
 msgstr ""
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr ""
 
@@ -643,6 +649,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index cb14847..3a418de 100644 (file)
@@ -39,6 +39,9 @@ msgstr "Базовая директория"
 msgid "Basic monitoring"
 msgstr "Базовая статистика"
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -89,6 +92,9 @@ msgstr "Отслеживание подключения (Conntrack)"
 msgid "Conntrack Plugin Configuration"
 msgstr "Настройка плагина Conntrack"
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr "Конфигурация модуля DF"
 
@@ -688,6 +694,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index 1d1f013..6dba7d0 100644 (file)
@@ -32,6 +32,9 @@ msgstr ""
 msgid "Basic monitoring"
 msgstr ""
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -80,6 +83,9 @@ msgstr ""
 msgid "Conntrack Plugin Configuration"
 msgstr ""
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr ""
 
@@ -632,6 +638,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index b6d562b..bef0f2d 100644 (file)
@@ -33,6 +33,9 @@ msgstr "Basmapp"
 msgid "Basic monitoring"
 msgstr "Standardövervakning"
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -84,6 +87,9 @@ msgstr ""
 msgid "Conntrack Plugin Configuration"
 msgstr ""
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr "Konfiguration av insticksprogrammet DF"
 
@@ -637,6 +643,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index 1b83826..c57a85b 100644 (file)
@@ -25,6 +25,9 @@ msgstr ""
 msgid "Basic monitoring"
 msgstr ""
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -73,6 +76,9 @@ msgstr ""
 msgid "Conntrack Plugin Configuration"
 msgstr ""
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr ""
 
@@ -625,6 +631,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index a30b0b9..6d7056f 100644 (file)
@@ -33,6 +33,9 @@ msgstr ""
 msgid "Basic monitoring"
 msgstr ""
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -81,6 +84,9 @@ msgstr ""
 msgid "Conntrack Plugin Configuration"
 msgstr ""
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr ""
 
@@ -633,6 +639,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index 13e52d9..de17a3c 100644 (file)
@@ -38,6 +38,9 @@ msgstr ""
 msgid "Basic monitoring"
 msgstr ""
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -86,6 +89,9 @@ msgstr ""
 msgid "Conntrack Plugin Configuration"
 msgstr ""
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr ""
 
@@ -638,6 +644,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index a5fd33d..bdb7f1a 100644 (file)
@@ -38,6 +38,9 @@ msgstr "Thư mục Cơ sở"
 msgid "Basic monitoring"
 msgstr "Monitoring căn bản"
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -89,6 +92,9 @@ msgstr ""
 msgid "Conntrack Plugin Configuration"
 msgstr ""
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr "Cấu hình DF plugin"
 
@@ -690,6 +696,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index 4e6ee4b..d55398a 100644 (file)
@@ -2,16 +2,17 @@
 #  generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-07-23 02:08+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2017-04-15 21:41-0600\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
 "Language-Team: none\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"
+"X-Generator: Poedit 2.0.1\n"
+"POT-Creation-Date: \n"
 
 #. %H: Wireless - Signal Noise Ratio
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1
@@ -36,12 +37,12 @@ msgstr "信号强度"
 #. %H: Wireless - Signal Quality
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5
 msgid "stat_dg_title_wireless__signal_quality"
-msgstr "无线信号质量"
+msgstr "%H: 无线 - 信号质量"
 
 #. n
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6
 msgid "stat_dg_label_wireless__signal_quality"
-msgstr "无线信号质量"
+msgstr "n"
 
 #. Signal Quality
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7
@@ -51,7 +52,7 @@ msgstr "信号质量"
 #. %H: ICMP Roundtrip Times
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8
 msgid "stat_dg_title_ping"
-msgstr "ping"
+msgstr "%H: ICMP 往返时间"
 
 #. ms
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9
@@ -61,299 +62,299 @@ msgstr "响应"
 #. %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10
 msgid "stat_ds_ping"
-msgstr "ping"
+msgstr "%di"
 
 #. %H: Firewall - Processed Packets
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11
 msgid "stat_dg_title_iptables__ipt_packets"
-msgstr "iptables包"
+msgstr "%H: 防火墙 - 已处理的数据包"
 
 #. Packets/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12
 msgid "stat_dg_label_iptables__ipt_packets"
-msgstr ""
+msgstr "Packets/s"
 
 #. Chain \"%di\"
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13
 msgid "stat_ds_ipt_packets"
-msgstr ""
+msgstr "Chain \\\"%di\\\""
 
 #. %H: Netlink - Transfer on %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14
 msgid "stat_dg_title_netlink__if_octets"
-msgstr ""
+msgstr "%H: Netlink - %pi 上的数据传输"
 
 #. Bytes/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15
 msgid "stat_dg_label_netlink__if_octets"
-msgstr ""
+msgstr "字节/秒"
 
 #. Bytes (%ds)
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16
 msgid "stat_ds_if_octets"
-msgstr ""
+msgstr "字节 (%ds)"
 
 #. %H: Netlink - Packets on %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17
 msgid "stat_dg_title_netlink__if_packets"
-msgstr ""
+msgstr "%H: Netlink - %pi 的数据包"
 
 #. Packets/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18
 msgid "stat_dg_label_netlink__if_packets"
-msgstr ""
+msgstr "Packets/s"
 
 #. Processed (%ds)
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19
 msgid "stat_ds_if_packets"
-msgstr ""
+msgstr "已处理 (%ds)"
 
 #. Dropped   (%ds)
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20
 msgid "stat_ds_if_dropped"
-msgstr ""
+msgstr "丢弃 (%ds)"
 
 #. Errors    (%ds)
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21
 msgid "stat_ds_if_errors"
-msgstr ""
+msgstr "错误 (%ds)"
 
 #. %H: Netlink - Multicast on %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22
 msgid "stat_dg_title_netlink__if_multicast"
-msgstr ""
+msgstr "%H: Netlink - %pi 上的多播"
 
 #. Packets/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23
 msgid "stat_dg_label_netlink__if_multicast"
-msgstr ""
+msgstr "Packets/s"
 
 #. Packets
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24
 msgid "stat_ds_if_multicast"
-msgstr ""
+msgstr "数据包"
 
 #. %H: Netlink - Collisions on %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25
 msgid "stat_dg_title_netlink__if_collisions"
-msgstr ""
+msgstr "%H: Netlink - %pi 上的 Collisions"
 
 #. Collisions/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26
 msgid "stat_dg_label_netlink__if_collisions"
-msgstr ""
+msgstr "Collisions/s"
 
 #. Collisions
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27
 msgid "stat_ds_if_collisions"
-msgstr ""
+msgstr "Collisions"
 
 #. %H: Netlink - Errors on %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28
 msgid "stat_dg_title_netlink__if_tx_errors"
-msgstr ""
+msgstr "%H: Netlink - %pi 上发生的错误"
 
 #. Errors/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29
 msgid "stat_dg_label_netlink__if_tx_errors"
-msgstr ""
+msgstr "错误/秒"
 
 #. %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30
 msgid "stat_ds_if_tx_errors"
-msgstr ""
+msgstr "%di"
 
 #. %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31
 msgid "stat_ds_if_rx_errors"
-msgstr ""
+msgstr "%di"
 
 #. %H: Processes
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32
 msgid "stat_dg_title_processes"
-msgstr ""
+msgstr "%H: 进程"
 
 #. Processes/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33
 msgid "stat_dg_label_processes"
-msgstr ""
+msgstr "进程/秒"
 
 #. %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34
 msgid "stat_ds_ps_state"
-msgstr ""
+msgstr "%di"
 
 #. %H: Process %pi - used cpu time
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35
 msgid "stat_dg_title_processes__ps_cputime"
-msgstr ""
+msgstr "%H: 进程 %s - 占用的 CPU 时间"
 
 #. Jiffies
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36
 msgid "stat_dg_label_processes__ps_cputime"
-msgstr ""
+msgstr "Jiffies"
 
 #. system
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37
 msgid "stat_ds_ps_cputime__syst"
-msgstr ""
+msgstr "系统"
 
 #. user
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38
 msgid "stat_ds_ps_cputime__user"
-msgstr ""
+msgstr "用户"
 
 #. %H: Process %pi - threads and processes
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39
 msgid "stat_dg_title_processes__ps_count"
-msgstr ""
+msgstr "%H: 进程 %pi - 进程与线程"
 
 #. Count
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40
 msgid "stat_dg_label_processes__ps_count"
-msgstr ""
+msgstr ""
 
 #. %ds
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41
 msgid "stat_ds_ps_count"
-msgstr ""
+msgstr "%ds"
 
 #. %H: Process %pi - page faults
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42
 msgid "stat_dg_title_processes__ps_pagefaults"
-msgstr ""
+msgstr "%H: 进程 %pi - 分页错误"
 
 #. Pagefaults
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43
 msgid "stat_dg_label_processes__ps_pagefaults"
-msgstr ""
+msgstr "分页错误"
 
 #. page faults
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44
 msgid "stat_ds_ps_pagefaults"
-msgstr ""
+msgstr "分页错误"
 
 #. %H: Process %pi - virtual memory size
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45
 msgid "stat_dg_title_processes__ps_rss"
-msgstr ""
+msgstr "%H: 进程 %pi - 虚拟内存大小"
 
 #. Bytes
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46
 msgid "stat_dg_label_processes__ps_rss"
-msgstr ""
+msgstr "字节"
 
 #. virtual memory
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47
 msgid "stat_ds_ps_rss"
-msgstr ""
+msgstr "虚拟内存"
 
 #. %H: Usage on Processor #%pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48
 msgid "stat_dg_title_cpu"
-msgstr ""
+msgstr "%H: 对处理器 #%pi 的占用"
 
 #. %
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49
 msgid "stat_dg_label_cpu"
-msgstr ""
+msgstr "%"
 
 #. %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50
 msgid "stat_ds_cpu"
-msgstr ""
+msgstr "%di"
 
 #. %H: Transfer on %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51
 msgid "stat_dg_title_interface__if_octets"
-msgstr ""
+msgstr "%H: %di 上的数据传输情况"
 
 #. Bytes/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52
 msgid "stat_dg_label_interface__if_octets"
-msgstr ""
+msgstr "字节/秒"
 
 #. %H: Packets on %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53
 msgid "stat_dg_title_interface__if_packets"
-msgstr ""
+msgstr "%H: %di 上的数据包"
 
 #. Packets/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54
 msgid "stat_dg_label_interface__if_packets"
-msgstr ""
+msgstr "Packets/s"
 
 #. %H: TCP-Connections to Port %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55
 msgid "stat_dg_title_tcpconns"
-msgstr ""
+msgstr "%H: 到端口 %pi 的 TCP 连接"
 
 #. Connections/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56
 msgid "stat_dg_label_tcpconns"
-msgstr ""
+msgstr "连接/秒"
 
 #. %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57
 msgid "stat_ds_tcp_connections"
-msgstr ""
+msgstr "%di"
 
 #. %H: Disk Space Usage on %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58
 msgid "stat_dg_title_df"
-msgstr ""
+msgstr "%H: %di 上的磁盘占用情况"
 
 #. Bytes
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59
 msgid "stat_dg_label_df"
-msgstr ""
+msgstr "字节"
 
 #. %ds
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60
 msgid "stat_ds_df__free"
-msgstr ""
+msgstr "%ds"
 
 #. %ds
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61
 msgid "stat_ds_df__used"
-msgstr ""
+msgstr "%ds"
 
 #. %H: Interrupts
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62
 msgid "stat_dg_title_irq"
-msgstr ""
+msgstr "%H: 中断"
 
 #. Issues/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63
 msgid "stat_dg_label_irq"
-msgstr ""
+msgstr "Issues/s"
 
 #. IRQ %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64
 msgid "stat_ds_irq"
-msgstr ""
+msgstr "IRQ %di"
 
 #. %H: System Load
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65
 msgid "stat_dg_title_load"
-msgstr ""
+msgstr "%H: 系统负载"
 
 #. Load
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66
 msgid "stat_dg_label_load"
-msgstr ""
+msgstr "负载"
 
 #. 1 min
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67
 msgid "stat_ds_load__shortterm"
-msgstr ""
+msgstr "1 分钟"
 
 #. 5 min
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68
 msgid "stat_ds_load__midterm"
-msgstr ""
+msgstr "5 分钟"
 
 #. 15 min
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69
 msgid "stat_ds_load__longterm"
-msgstr ""
+msgstr "15 分钟"
index a55f73f..46cf59f 100644 (file)
@@ -1,17 +1,17 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2014-06-13 15:04+0200\n"
-"Last-Translator: phantasm131 <phantasm131@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-04-15 21:46-0600\n"
+"Last-Translator: liushuyu <liushuyu011@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: Pootle 2.0.6\n"
+"X-Generator: Poedit 2.0.1\n"
+"Language-Team: \n"
 
 msgid "Action (target)"
 msgstr "动作(目标)"
@@ -37,11 +37,14 @@ msgstr "基本目录"
 msgid "Basic monitoring"
 msgstr "基本监控"
 
-msgid "CPU Frequency"
+msgid "CPU Context Switches Plugin Configuration"
 msgstr ""
 
+msgid "CPU Frequency"
+msgstr "CPU 频率"
+
 msgid "CPU Frequency Plugin Configuration"
-msgstr ""
+msgstr "CPU 频率插件配置"
 
 msgid "CPU Plugin Configuration"
 msgstr "CPU插件配置"
@@ -87,6 +90,9 @@ msgstr "Conntrack"
 msgid "Conntrack Plugin Configuration"
 msgstr "Conntrack插件设置"
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr "DF插件设置"
 
@@ -133,16 +139,16 @@ msgid "Email"
 msgstr "电子邮件"
 
 msgid "Empty value = monitor all"
-msgstr ""
+msgstr "留空 = 监控所有"
 
 msgid "Enable this plugin"
 msgstr "启用该插件"
 
 msgid "Entropy"
-msgstr ""
+msgstr ""
 
 msgid "Entropy Plugin Configuration"
-msgstr ""
+msgstr "熵值插件配置"
 
 msgid "Exec"
 msgstr "Exec"
@@ -166,7 +172,7 @@ msgid "Gather compression statistics"
 msgstr ""
 
 msgid "General plugins"
-msgstr ""
+msgstr "通用插件"
 
 msgid "Generate a separate graph for each logged user"
 msgstr ""
@@ -198,7 +204,7 @@ msgid ""
 msgstr "在这里,你可以定义各种监控iptables规则临界值。"
 
 msgid "Hold Ctrl to select multiple items or to deselect entries."
-msgstr ""
+msgstr "按住 Ctrl 键来选择或取消选择多个项目。"
 
 msgid "Host"
 msgstr "主机"
@@ -269,10 +275,10 @@ msgid "Monitor all local listen ports"
 msgstr "监测所有本地监听端口"
 
 msgid "Monitor all sensors"
-msgstr ""
+msgstr "监控所有传感器"
 
 msgid "Monitor device(s) / thermal zone(s)"
-msgstr ""
+msgstr "监控设备/温感区域"
 
 msgid "Monitor devices"
 msgstr "监测设备"
@@ -329,6 +335,8 @@ msgid ""
 "Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
 "directory and all its parent directories need to be world readable."
 msgstr ""
+"注意:由于页面是以 'nobody' 身份生成的,因此 *.rrd 文件以及包含此文件的所有父"
+"目录必须全局可读。"
 
 msgid "Number of threads for data collection"
 msgstr "收集程序使用线程数"
@@ -343,13 +351,13 @@ msgid "Only create average RRAs"
 msgstr "仅创建平均RRAs"
 
 msgid "OpenVPN"
-msgstr ""
+msgstr "OpenVPN"
 
 msgid "OpenVPN Plugin Configuration"
-msgstr ""
+msgstr "OpenVPN 插件配置"
 
 msgid "OpenVPN status files"
-msgstr ""
+msgstr "OpenVPN 状态文件"
 
 msgid "Options"
 msgstr "选项"
@@ -409,13 +417,13 @@ msgid "Seconds"
 msgstr "秒"
 
 msgid "Sensor list"
-msgstr ""
+msgstr "传感器列表"
 
 msgid "Sensors"
-msgstr ""
+msgstr "传感器"
 
 msgid "Sensors Plugin Configuration"
-msgstr ""
+msgstr "传感器插件配置"
 
 msgid "Server host"
 msgstr "服务器主机"
@@ -424,7 +432,7 @@ msgid "Server port"
 msgstr "服务器端口"
 
 msgid "Setup"
-msgstr ""
+msgstr "设置"
 
 msgid "Shaping class monitoring"
 msgstr "整形类监控"
@@ -503,7 +511,7 @@ msgstr "OLSRd插件通过txtinfo获取meshed网络信息。"
 msgid ""
 "The OpenVPN plugin gathers information about the current vpn connection "
 "status."
-msgstr ""
+msgstr "OpenVPN 插件可以获取 VPN 连接当前状态"
 
 msgid ""
 "The conntrack plugin collects statistics about the number of tracked "
@@ -629,6 +637,9 @@ msgid ""
 "to gather data and <a href=\"http://oss.oetiker.ch/rrdtool/\">RRDtool</a> to "
 "render diagram images."
 msgstr ""
+"Statistics 软件包使用 <a href=\"https://collectd.org/\">Collectd</a> 来收集数"
+"据,并用 <a href=\"http://oss.oetiker.ch/rrdtool/\">RRDtool</a> 生成统计图"
+"表。"
 
 msgid ""
 "The tcpconns plugin collects informations about open tcp connections on "
@@ -640,6 +651,8 @@ msgid ""
 "read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be "
 "read, e.g. thermal_zone1 )"
 msgstr ""
+"温感插件将会监控系统温度。数据主要取自 /sys/class/thermal/*/temp ('*' 表示温"
+"感设备的名字,比如 thermal_zone1) 。"
 
 msgid ""
 "The unixsock plugin creates a unix socket which can be used to read "
@@ -650,13 +663,16 @@ msgid "The uptime plugin collects statistics about the uptime of the system."
 msgstr ""
 
 msgid "Thermal"
-msgstr ""
+msgstr "温感"
 
 msgid "Thermal Plugin Configuration"
+msgstr "温感插件配置"
+
+msgid "This plugin collects statistics about the processor context switches."
 msgstr ""
 
 msgid "This plugin collects statistics about the processor frequency scaling."
-msgstr ""
+msgstr "此插件会获取 CPU 频率调整的数据。"
 
 msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
@@ -686,13 +702,13 @@ msgid "Unixsock Plugin Configuration"
 msgstr "Unixsock插件配置"
 
 msgid "Uptime"
-msgstr ""
+msgstr "运行时间"
 
 msgid "Uptime Plugin Configuration"
-msgstr ""
+msgstr "运行时间插件配置"
 
 msgid "Use improved naming schema"
-msgstr ""
+msgstr "使用更高级的命名规则"
 
 msgid "Used PID file"
 msgstr "正在使用的PID文件"
@@ -711,7 +727,7 @@ msgstr "无线iwinfo插件配置"
 
 msgid ""
 "You can install additional collectd-mod-* plugins to enable more statistics."
-msgstr ""
+msgstr "您可以安装更多的 collectd-mod-* 插件以获得更多的统计数据。"
 
 msgid "e.g. br-ff"
 msgstr "例如:br-ff"
index f9e72b5..cbd6d9d 100644 (file)
@@ -31,6 +31,9 @@ msgstr ""
 msgid "Basic monitoring"
 msgstr ""
 
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
 msgid "CPU Frequency"
 msgstr ""
 
@@ -79,6 +82,9 @@ msgstr ""
 msgid "Conntrack Plugin Configuration"
 msgstr ""
 
+msgid "Context Switches"
+msgstr ""
+
 msgid "DF Plugin Configuration"
 msgstr ""
 
@@ -631,6 +637,9 @@ msgstr ""
 msgid "Thermal Plugin Configuration"
 msgstr ""
 
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
 msgid "This plugin collects statistics about the processor frequency scaling."
 msgstr ""
 
index 774a838..c081a8e 100644 (file)
@@ -52,6 +52,9 @@ config statistics 'collectd_unixsock'
 config statistics 'collectd_conntrack'
        option enable '0'
 
+config statistics 'collectd_contextswitch'
+       option enable '0'
+
 config statistics 'collectd_cpu'
        option enable '1'
 
index df9af15..090344c 100755 (executable)
@@ -279,6 +279,12 @@ plugins = {
                { }
        },
 
+        contextswitch = {
+                { },
+                { },
+                { }
+        },
+
        csv     = {
                { "DataDir" },
                { "StoreRates" },
@@ -349,12 +355,6 @@ plugins = {
                { }
        },
 
-       madwifi = {
-               { "WatchSet" },
-               { },
-               { "Interfaces", "WatchAdds" }
-       },
-
        memory = { 
                { },
                { },
index f4b1b0a..6170f9d 100644 (file)
@@ -1,11 +1,11 @@
-#
-# This is free software, licensed under the Apache License, Version 2.0 .
+# Copyright 2017 Dirk Brenken (dev@brenken.org)
+# This is free software, licensed under the Apache License, Version 2.0
 #
 
 include $(TOPDIR)/rules.mk
 
 LUCI_TITLE:=LuCI support for Travelmate
-LUCI_DEPENDS:=+travelmate
+LUCI_DEPENDS:=+travelmate +luci-lib-jsonc
 LUCI_PKGARCH:=all
 
 include ../../luci.mk
index 27c19c4..86382f6 100644 (file)
@@ -1,11 +1,28 @@
--- Licensed to the public under the Apache License 2.0.
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
 
 module("luci.controller.travelmate", package.seeall)
 
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local template = require("luci.template")
+local i18n = require("luci.i18n")
+
 function index()
        if not nixio.fs.access("/etc/config/travelmate") then
                return
        end
+       entry({"admin", "services", "travelmate"}, firstchild(), _("Travelmate"), 40).dependent = false
+       entry({"admin", "services", "travelmate", "tab_from_cbi"}, cbi("travelmate/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true
+       entry({"admin", "services", "travelmate", "logfile"}, call("logread"), _("View Logfile"), 20).leaf = true
+       entry({"admin", "services", "travelmate", "advanced"}, firstchild(), _("Advanced"), 100)
+       entry({"admin", "services", "travelmate", "advanced", "configuration"}, cbi("travelmate/configuration_tab"), _("Edit Travelmate Configuration"), 110).leaf = true
+       entry({"admin", "services", "travelmate", "advanced", "cfg_wireless"}, cbi("travelmate/cfg_wireless_tab"), _("Edit Wireless Configuration"), 120).leaf = true
+       entry({"admin", "services", "travelmate", "advanced", "cfg_network"}, cbi("travelmate/cfg_network_tab"), _("Edit Network Configuration"), 130).leaf = true
+       entry({"admin", "services", "travelmate", "advanced", "cfg_firewall"}, cbi("travelmate/cfg_firewall_tab"), _("Edit Firewall Configuration"), 140).leaf = true
+end
 
-       entry({"admin", "services", "travelmate"}, cbi("travelmate"), _("Travelmate"), 60)
+function logread()
+       local logfile = util.trim(util.exec("logread -e 'travelmate'"))
+       template.render("travelmate/logread", {title = i18n.translate("Travelmate Logfile"), content = logfile})
 end
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua
deleted file mode 100644 (file)
index fa44d4b..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
--- Licensed to the public under the Apache License 2.0.
-
-m = Map("travelmate", translate("Travelmate"),
-       translate("Configuration of the Travelmate package to enable travel router functionality. ") .. [[</p>]] ..
-       translate("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. ") ..
-       [[<a href="https://github.com/openwrt/packages/tree/master/net/travelmate/files/README.md" target="_blank">]] 
-       .. translate("Link to detailed advice")
-       .. [[</a>]] )
-
--- General options
-
-s = m:section(NamedSection, "global", "travelmate", translate("Global options"))
-
-o = s:option(Flag, "trm_enabled", translate("Enable Travelmate"))
-o.rmempty = false
-o.default = 0
-
-o = s:option(Value, "trm_maxwait", translate("Max. timeout in seconds for wlan interface reload"),
-       translate("Default 20, range 10-60"))
-o.rmempty = false
-o.default = 20
-o.datatype = "range(10,60)"
-
-o = s:option(Value, "trm_maxretry", translate("Max. number of connection retries to an uplink"),
-       translate("Default 3, range 1-10"))
-o.rmempty = false
-o.default = 3
-o.datatype = "range(1,10)"
-
--- Extra options
-
-e = m:section(NamedSection, "global", "travelmate", translate("Extra options"))
-
-a = e:option(Flag, "trm_debug", translate("Debug logging"))
-a.rmempty = true
-a.default = a.disabled
-
-a = e:option(Value, "trm_iface", translate("Restrict reload trigger to certain interface(s)"),
-       translate("Space separated list of wwan interfaces that trigger reload action. To disable reload trigger set it to 'false'. Default: empty"))
-a.rmempty = true
-a.default = ""
-a.datatype = "uciname"
-
-a = e:option(Flag, "trm_iw", translate("Use iw for scanning"),
-       translate("Disable this if you want to use iwinfo instead of iw"))
-a.rmempty = true
-a.default = a.enabled
-
-return m
-
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua
new file mode 100644 (file)
index 0000000..009ed80
--- /dev/null
@@ -0,0 +1,36 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local trminput = "/etc/config/firewall"
+
+if not nixio.fs.access(trminput) then
+       m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+       return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("travelmate/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+       translate("This form allows you to modify the content of the main firewall configuration file (/etc/config/firewall)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+       return nixio.fs.readfile(trminput) or ""
+end
+
+function f.write(self, section, data)
+       return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+       return true
+end
+
+return m
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua
new file mode 100644 (file)
index 0000000..4d43637
--- /dev/null
@@ -0,0 +1,36 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local trminput = "/etc/config/network"
+
+if not nixio.fs.access(trminput) then
+       m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+       return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("travelmate/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+       translate("This form allows you to modify the content of the main network configuration file (/etc/config/network)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+       return nixio.fs.readfile(trminput) or ""
+end
+
+function f.write(self, section, data)
+       return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+       return true
+end
+
+return m
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua
new file mode 100644 (file)
index 0000000..a025c13
--- /dev/null
@@ -0,0 +1,36 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local trminput = "/etc/config/wireless"
+
+if not nixio.fs.access(trminput) then
+       m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+       return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("travelmate/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+       translate("This form allows you to modify the content of the main wireless configuration file (/etc/config/wireless)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+       return nixio.fs.readfile(trminput) or ""
+end
+
+function f.write(self, section, data)
+       return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+       return true
+end
+
+return m
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua
new file mode 100644 (file)
index 0000000..4233da6
--- /dev/null
@@ -0,0 +1,38 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local trminput = "/etc/config/travelmate"
+
+if not nixio.fs.access(trminput) then
+       m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+       m.reset = false
+       m.submit = false
+       return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("travelmate/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+       translate("This form allows you to modify the content of the main travelmate configuration file (/etc/config/travelmate)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+       return nixio.fs.readfile(trminput) or ""
+end
+
+function f.write(self, section, data)
+       return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+       return true
+end
+
+return m
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
new file mode 100644 (file)
index 0000000..236bbb0
--- /dev/null
@@ -0,0 +1,170 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local uci = require("uci")
+local json = require("luci.jsonc")
+local nw  = require("luci.model.network").init()
+local fw  = require("luci.model.firewall").init()
+local uplink = uci.get("network", "trm_wwan") or ""
+local trminput = uci.get("travelmate", "global", "trm_rtfile") or "/tmp/trm_runtime.json"
+local parse = json.parse(fs.readfile(trminput) or "")
+
+m = Map("travelmate", translate("Travelmate"),
+       translate("Configuration of the travelmate package to to enable travel router functionality. ")
+       .. translatef("For further information "
+       .. "<a href=\"%s\" target=\"_blank\">"
+       .. "see online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md"))
+
+function m.on_after_commit(self)
+       luci.sys.call("/etc/init.d/travelmate restart >/dev/null 2>&1")
+       luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
+end
+
+-- Main travelmate options
+
+s = m:section(NamedSection, "global", "travelmate")
+
+o1 = s:option(Flag, "trm_enabled", translate("Enable travelmate"))
+o1.default = o1.disabled
+o1.rmempty = false
+
+o2 = s:option(Flag, "trm_automatic", translate("Enable 'automatic' mode"),
+       translate("Keep travelmate in an active state."))
+o2.default = o2.enabled
+o2.rmempty = false
+
+o3 = s:option(Value, "trm_iface", translate("Restrict interface trigger to certain interface(s)"),
+       translate("Space separated list of interfaces that trigger travelmate processing. "..
+       "To disable event driven (re-)starts remove all entries."))
+o3.rmempty = true
+
+o4 = s:option(Value, "trm_triggerdelay", translate("Trigger delay"),
+       translate("Additional trigger delay in seconds before travelmate processing begins."))
+o4.default = 2
+o4.datatype = "range(1,90)"
+o4.rmempty = false
+
+o5 = s:option(Flag, "trm_debug", translate("Enable verbose debug logging"))
+o5.default = o5.disabled
+o5.rmempty = false
+
+-- Interface setup
+
+if uplink == "" then
+       dv = s:option(DummyValue, "_dummy", translate("Interface Setup"))
+       dv.template = "cbi/nullsection"
+       btn = s:option(Button, "", translate("Create Uplink Interface"),
+               translate("Automatically create a new wireless wan uplink interface 'trm_wwan', configure it to use dhcp and ")
+               .. translate("add it to the wan zone of the firewall. This step has only to be done once."))
+       btn.inputtitle = translate("Add Interface")
+       btn.inputstyle = "apply"
+       btn.disabled = false
+       function btn.write()
+               local name = "trm_wwan"
+               local net = nw:add_network(name, { proto = "dhcp" })
+               if net then
+                       nw:save("network")
+                       nw:commit("network")
+                       local zone = fw:get_zone_by_network("wan")
+                       if zone then
+                               zone:add_network(name)
+                               fw:save("firewall")
+                               fw:commit("firewall")
+                       end
+                       luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1")
+                       luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
+               end
+       end
+else
+       dv = s:option(DummyValue, "_dummy", translate("Interface Setup"),
+               translate("<br />&nbsp;Network Interface 'trm_wwan' created successfully. ")
+               .. translatef("Scan &amp; Add new wireless stations via standard "
+               .. "<a href=\"%s\">"
+               .. "Wireless Setup</a>", luci.dispatcher.build_url("admin/network/wireless")))
+       dv.template = "cbi/nullsection"
+end
+
+-- Runtime information
+
+ds = s:option(DummyValue, "_dummy", translate("Runtime information"))
+ds.template = "cbi/nullsection"
+
+dv1 = s:option(DummyValue, "status", translate("Online Status"))
+dv1.template = "travelmate/runtime"
+if parse == nil then
+       dv1.value = translate("n/a")
+elseif parse.data.station_connection == "true" then
+       dv1.value = translate("connected")
+else
+       dv1.value = translate("not connected")
+end
+
+dv2 = s:option(DummyValue, "travelmate_version", translate("Travelmate version"))
+dv2.template = "travelmate/runtime"
+if parse ~= nil then
+       dv2.value = parse.data.travelmate_version or translate("n/a")
+else
+       dv2.value = translate("n/a")
+end
+
+dv3 = s:option(DummyValue, "station_ssid", translate("Station SSID"))
+dv3.template = "travelmate/runtime"
+if parse ~= nil then
+       dv3.value = parse.data.station_ssid or translate("n/a")
+else
+       dv3.value = translate("n/a")
+end
+
+dv4 = s:option(DummyValue, "station_interface", translate("Station Interface"))
+dv4.template = "travelmate/runtime"
+if parse ~= nil then
+       dv4.value = parse.data.station_interface or translate("n/a")
+else
+       dv4.value = translate("n/a")
+end
+
+dv5 = s:option(DummyValue, "station_radio", translate("Station Radio"))
+dv5.template = "travelmate/runtime"
+if parse ~= nil then
+       dv5.value = parse.data.station_radio or translate("n/a")
+else
+       dv5.value = translate("n/a")
+end
+
+dv6 = s:option(DummyValue, "last_rundate", translate("Last rundate"))
+dv6.template = "travelmate/runtime"
+if parse ~= nil then
+       dv6.value = parse.data.last_rundate or translate("n/a")
+else
+       dv6.value = translate("n/a")
+end
+
+-- Extra options
+
+e = m:section(NamedSection, "global", "travelmate", translate("Extra options"),
+translate("Options for further tweaking in case the defaults are not suitable for you."))
+
+e1 = e:option(Value, "trm_radio", translate("Radio selection"),
+       translate("Restrict travelmate to a dedicated radio, e.g. 'radio0'"))
+e1.rmempty = true
+
+e2 = e:option(Value, "trm_maxretry", translate("Connection Limit"),
+       translate("How many times should travelmate try to connect to an Uplink"))
+e2.default = 3
+e2.datatype = "range(1,10)"
+e2.rmempty = false
+
+e3 = e:option(Value, "trm_maxwait", translate("Interface Timeout"),
+       translate("How long should travelmate wait for a successful wlan interface reload"))
+e3.default = 30
+e3.datatype = "range(5,60)"
+e3.rmempty = false
+
+e4 = e:option(Value, "trm_timeout", translate("Overall Timeout"),
+       translate("Timeout in seconds between retries in 'automatic' mode"))
+e4.default = 60
+e4.datatype = "range(5,300)"
+e4.rmempty = false
+
+return m
diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm
new file mode 100644 (file)
index 0000000..53493a1
--- /dev/null
@@ -0,0 +1,10 @@
+<style type="text/css">
+       textarea
+       {
+               border: 1px solid #cccccc;
+               padding: 5px;
+               font-size: 12px;
+               font-family: monospace;
+               resize: none;
+       }
+</style>
diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm
new file mode 100644 (file)
index 0000000..7f6ff77
--- /dev/null
@@ -0,0 +1,15 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+<div class="cbi-map">
+       <fieldset class="cbi-section">
+               <div class="cbi-section-descr"><%:This form shows the syslog output, pre-filtered for travelmate related messages only.%></div>
+               <textarea id="logread_id" style="width: 100%; height: 450px; border: 1px solid #cccccc; padding: 5px; font-size: 12px; font-family: monospace; resize: none;" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+2%>"><%=content:pcdata()%></textarea>
+       </fieldset>
+</div>
+
+<%+footer%>
diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm
new file mode 100644 (file)
index 0000000..ee3a455
--- /dev/null
@@ -0,0 +1,10 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+cbi/valueheader%>
+
+<input name="runtime" id="runtime" type="text" class="cbi-input-text" style="border: none; box-shadow: none; background-color: #ffffff; color: #0069d6;" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
+
+<%+cbi/valuefooter%>
index de1acee..e4a8b8b 100644 (file)
@@ -7,73 +7,317 @@ msgstr ""
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.0.1\n"
 "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "Language: ja\n"
 
+msgid "<br />&nbsp;Network Interface 'trm_wwan' created successfully."
+msgstr ""
+"<br />&nbsp;ネットワーク インターフェース 'trm_wwan' の作成に成功しました。"
+
+msgid "Add Interface"
+msgstr "インターフェースの追加"
+
+msgid ""
+"Additional trigger delay in seconds before travelmate processing begins."
+msgstr "Travelmate の処理が開始されるまでの、追加の遅延時間(秒)です。"
+
+msgid "Advanced"
+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."
+"Automatically create a new wireless wan uplink interface 'trm_wwan', "
+"configure it to use dhcp and"
 msgstr ""
-"簡単な解説: 予めWWANインターフェースを作成し、DHCPを使用するよう構成してファ"
-"イアウォールのWANゾーンに追加します。また、使用される無線インターフェースを作"
-"成しておきます(\"クライアント\" モード、WWANに割り当て、無効状態)。"
-"Travelmateは、登録されている順序で既知の無線クライアント インターフェースへの"
-"接続を試行します。"
+"新しい無線 WAN インターフェース 'trm_wwan' を自動的に作成し、 DHCP を使用する"
+"よう構成して"
 
 msgid ""
-"Configuration of the Travelmate package to enable travel router "
+"Configuration of the travelmate package to to enable travel router "
 "functionality."
-msgstr "トラベル ルータ機能を有効にする、Travelmate パッケージの設定です。"
+msgstr ""
+"トラベル ルーター機能を有効化するための、 Travelmate パッケージの設定です。"
+
+msgid "Connection Limit"
+msgstr "接続制限"
+
+msgid "Create Uplink Interface"
+msgstr "アップリンク インターフェースの作成"
+
+msgid "Edit Firewall Configuration"
+msgstr "ファイアウォール設定の編集"
+
+msgid "Edit Network Configuration"
+msgstr "ネットワーク設定の編集"
 
-msgid "Debug logging"
-msgstr "デバッグ ログ"
+msgid "Edit Travelmate Configuration"
+msgstr "Travelmate 設定の編集"
 
-msgid "Default 20, range 10-60"
-msgstr "既定値 20、範囲 10 - 60"
+msgid "Edit Wireless Configuration"
+msgstr "無線設定の編集"
 
-msgid "Default 3, range 1-10"
-msgstr "既定値 3、範囲 1 - 10"
+msgid "Enable 'automatic' mode"
+msgstr "'automatic' モードの有効化"
 
-msgid "Disable this if you want to use iwinfo instead of iw"
-msgstr "iw の代わりに iwinfo を使用したい場合、この設定を無効にします。"
+msgid "Enable travelmate"
+msgstr "Travelmate の有効化"
 
-msgid "Enable Travelmate"
-msgstr "Travelmateの有効化"
+msgid "Enable verbose debug logging"
+msgstr "詳細なデバッグ ログの有効化"
 
 msgid "Extra options"
 msgstr "拡張オプション"
 
-msgid "Global options"
-msgstr "全般オプション"
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+"詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a>を確"
+"認してください。"
+
+msgid "How long should travelmate wait for a successful wlan interface reload"
+msgstr ""
+"無線LAN インターフェースのリロードが成功するまでの、Travelmate の待機時間で"
+"す。"
+
+msgid "How many times should travelmate try to connect to an Uplink"
+msgstr "Travelmate がアップリンクに対して接続を試行する回数です。"
 
-msgid "Link to detailed advice"
-msgstr "詳細な解説へのリンク"
+msgid "Input file not found, please check your configuration."
+msgstr "入力ファイルが見つかりません。設定を確認してください。"
 
-msgid "Max. number of connection retries to an uplink"
-msgstr "確立までの接続試行回数"
+msgid "Interface Setup"
+msgstr "インターフェース設定"
 
-msgid "Max. timeout in seconds for wlan interface reload"
-msgstr "無線LANインターフェース リロード時の最大待機時間(秒)"
+msgid "Interface Timeout"
+msgstr "インターフェース タイムアウト"
+
+msgid "Keep travelmate in an active state."
+msgstr "Travelmate をアクティブ状態で維持します。"
+
+msgid "Last rundate"
+msgstr "最終実行日時"
+
+msgid "Online Status"
+msgstr "オンライン ステータス"
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr "デフォルトの設定が適切でない場合、さらに設定するためのオプションです。"
 
-msgid "Restrict reload trigger to certain interface(s)"
-msgstr "リロード トリガを特定のインターフェースに限定する"
+msgid "Overall Timeout"
+msgstr "全体タイムアウト"
+
+msgid "Overview"
+msgstr "概要"
+
+msgid "Radio selection"
+msgstr "無線の選択"
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr "インターフェース トリガーを特定のインターフェースに限定する"
+
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'"
+msgstr "Travelmate が特定の無線に接続するようにします。例: 'radio0'"
+
+msgid "Runtime information"
+msgstr "実行情報"
+
+msgid ""
+"Scan &amp; Add new wireless stations via standard <a href=\"%s\">Wireless "
+"Setup</a>"
+msgstr ""
+"通常の<a href=\"%s\">無線設定</a>にて、新規の無線ステーションのスキャン及び追"
+"加を行います。"
+
+msgid ""
+"Space separated list of interfaces that trigger travelmate processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+"Travelmate の処理のトリガーとなる、スペースで区切られたインターフェースのリス"
+"トです。処理を発生させるイベントを無効にするには、全てのエントリーを削除して"
+"空欄にします。"
+
+msgid "Station Interface"
+msgstr "ステーション インターフェース"
+
+msgid "Station Radio"
+msgstr "ステーション 無線"
+
+msgid "Station SSID"
+msgstr "ステーション SSID"
+
+msgid ""
+"This form allows you to modify the content of the main firewall "
+"configuration file (/etc/config/firewall)."
+msgstr ""
+"このフォームでは、ファイアウォール 設定ファイル (/etc/config/firewall) の内容"
+"を変更することができます。"
+
+msgid ""
+"This form allows you to modify the content of the main network configuration "
+"file (/etc/config/network)."
+msgstr ""
+"このフォームでは、ネットワーク 設定ファイル (/etc/config/network) の内容を変"
+"更することができます。"
 
 msgid ""
-"Space separated list of wwan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"This form allows you to modify the content of the main travelmate "
+"configuration file (/etc/config/travelmate)."
 msgstr ""
-"リロード動作のトリガとなる、スペースで区切られたWWAN インターフェースのリスト"
-"です。リロードのトリガを無効にするには、'false' を設定します。既定値:(空)"
+"このフォームでは、 Travelmate 設定ファイル (/etc/config/travelmate) の内容を"
+"変更することができます。"
+
+msgid ""
+"This form allows you to modify the content of the main wireless "
+"configuration file (/etc/config/wireless)."
+msgstr ""
+"このフォームでは、無線 設定ファイル (/etc/config/wireless) の内容を変更するこ"
+"とができます。"
+
+msgid ""
+"This form shows the syslog output, pre-filtered for travelmate related "
+"messages only."
+msgstr ""
+"このフォームには、システムログ内の Travelmate に関するメッセージのみが表示さ"
+"れます。"
+
+msgid "Timeout in seconds between retries in 'automatic' mode"
+msgstr "'automatic' モード時に接続を再試行する間隔(秒)です。"
 
 msgid "Travelmate"
 msgstr "Travelmate"
 
-msgid "Use iw for scanning"
-msgstr "スキャンに iw を使用する"
+msgid "Travelmate Logfile"
+msgstr "Travelmate ログファイル"
+
+msgid "Travelmate version"
+msgstr "Travelmate バージョン"
+
+msgid "Trigger delay"
+msgstr "トリガー遅延"
+
+msgid "View Logfile"
+msgstr "ログファイルの確認"
+
+msgid ""
+"add it to the wan zone of the firewall. This step has only to be done once."
+msgstr ""
+"ファイアウォールの wan ゾーンに追加します。このステップは、一度だけ実行される"
+"必要があります。"
+
+msgid "connected"
+msgstr "接続済み"
+
+msgid "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 に設定します。"
diff --git a/applications/luci-app-travelmate/po/pt-br/travelmate.po b/applications/luci-app-travelmate/po/pt-br/travelmate.po
new file mode 100644 (file)
index 0000000..4eff34e
--- /dev/null
@@ -0,0 +1,253 @@
+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 "<br />&nbsp;Network Interface 'trm_wwan' created successfully."
+msgstr ""
+
+msgid "Add Interface"
+msgstr ""
+
+msgid ""
+"Additional trigger delay in seconds before travelmate processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid ""
+"Automatically create a new wireless wan uplink interface 'trm_wwan', "
+"configure it to use dhcp and"
+msgstr ""
+
+msgid ""
+"Configuration of the travelmate package to to enable travel router "
+"functionality."
+msgstr ""
+
+msgid "Connection Limit"
+msgstr ""
+
+msgid "Create Uplink Interface"
+msgstr ""
+
+msgid "Edit Firewall Configuration"
+msgstr ""
+
+msgid "Edit Network Configuration"
+msgstr ""
+
+msgid "Edit Travelmate Configuration"
+msgstr ""
+
+msgid "Edit Wireless Configuration"
+msgstr ""
+
+msgid "Enable 'automatic' mode"
+msgstr ""
+
+msgid "Enable travelmate"
+msgstr ""
+
+msgid "Enable verbose debug logging"
+msgstr ""
+
+msgid "Extra options"
+msgstr "Opções adicionais"
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+
+msgid "How long should travelmate wait for a successful wlan interface reload"
+msgstr ""
+
+msgid "How many times should travelmate try to connect to an Uplink"
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Interface Setup"
+msgstr ""
+
+msgid "Interface Timeout"
+msgstr ""
+
+msgid "Keep travelmate in an active state."
+msgstr ""
+
+msgid "Last rundate"
+msgstr ""
+
+msgid "Online Status"
+msgstr ""
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+
+msgid "Overall Timeout"
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid "Radio selection"
+msgstr ""
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'"
+msgstr ""
+
+msgid "Runtime information"
+msgstr ""
+
+msgid ""
+"Scan &amp; Add new wireless stations via standard <a href=\"%s\">Wireless "
+"Setup</a>"
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger travelmate processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Station Interface"
+msgstr ""
+
+msgid "Station Radio"
+msgstr ""
+
+msgid "Station SSID"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main firewall "
+"configuration file (/etc/config/firewall)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main network configuration "
+"file (/etc/config/network)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main travelmate "
+"configuration file (/etc/config/travelmate)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main wireless "
+"configuration file (/etc/config/wireless)."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for travelmate related "
+"messages only."
+msgstr ""
+
+msgid "Timeout in seconds between retries in 'automatic' mode"
+msgstr ""
+
+msgid "Travelmate"
+msgstr "Travelmate"
+
+msgid "Travelmate Logfile"
+msgstr ""
+
+msgid "Travelmate version"
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid ""
+"add it to the wan zone of the firewall. This step has only to be done once."
+msgstr ""
+
+msgid "connected"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "not connected"
+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 ""
+#~ "Breve conselho: Crie uma interface wwan, configure-a para usar DHCP e "
+#~ "adicione-a à zona wan no firewall. Crie as interfaces wifi a serem usadas "
+#~ "(modo 'cliente', atribuído à rede wwan, deixado como desativado). O "
+#~ "Travelmate tentará se conectar às interfaces de cliente wifi conhecidas "
+#~ "na ordem definida."
+
+#~ msgid ""
+#~ "Configuration of the Travelmate package to enable travel router "
+#~ "functionality."
+#~ msgstr ""
+#~ "Configuração do pacote Travelmate para permitir a funcionalidade de "
+#~ "roteador de viagem."
+
+#~ msgid "Debug logging"
+#~ msgstr "Registros(log) para depuração"
+
+#~ msgid "Default 20, range 10-60"
+#~ msgstr "Padrão 20, faixa 10-60"
+
+#~ msgid "Default 3, range 1-10"
+#~ msgstr "Padrão 3, faixa 1-10"
+
+#~ msgid "Disable this if you want to use iwinfo instead of iw"
+#~ msgstr "Desabilite isto se você quer usar o iwinfo ao invés do iw"
+
+#~ msgid "Enable Travelmate"
+#~ msgstr "Habilitar o Travelmate"
+
+#~ msgid "Global options"
+#~ msgstr "Opções Globais"
+
+#~ msgid "Link to detailed advice"
+#~ msgstr "Endereço para conselhos detalhados"
+
+#~ msgid "Max. number of connection retries to an uplink"
+#~ msgstr "Máximo número de tentativas de conexão para um enlace"
+
+#~ msgid "Max. timeout in seconds for wlan interface reload"
+#~ msgstr "Tempo limite máximo em segundos para recarregar a interface wlan"
+
+#~ msgid "Restrict reload trigger to certain interface(s)"
+#~ msgstr "Restringir o gatilho de recarga para somente alguma(s) interface(s)"
+
+#~ msgid ""
+#~ "Space separated list of wwan interfaces that trigger reload action. To "
+#~ "disable reload trigger set it to 'false'. Default: empty"
+#~ msgstr ""
+#~ "Lista separada por espaços de interfaces wwan que acionam a ação de "
+#~ "recarga. Para desabilitar o gatilho de recarga, defina-o como 'false'. "
+#~ "Padrão: vazio"
+
+#~ msgid "Use iw for scanning"
+#~ msgstr "Use o iw para escaneamento"
index 2062819..615c3a7 100644 (file)
 msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8"
 
+msgid "<br />&nbsp;Network Interface 'trm_wwan' created successfully."
+msgstr ""
+
+msgid "Add Interface"
+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."
+"Additional trigger delay in seconds before travelmate processing begins."
+msgstr ""
+
+msgid "Advanced"
 msgstr ""
 
 msgid ""
-"Configuration of the Travelmate package to enable travel router "
+"Automatically create a new wireless wan uplink interface 'trm_wwan', "
+"configure it to use dhcp and"
+msgstr ""
+
+msgid ""
+"Configuration of the travelmate package to to enable travel router "
 "functionality."
 msgstr ""
 
-msgid "Debug logging"
+msgid "Connection Limit"
+msgstr ""
+
+msgid "Create Uplink Interface"
 msgstr ""
 
-msgid "Default 20, range 10-60"
+msgid "Edit Firewall Configuration"
 msgstr ""
 
-msgid "Default 3, range 1-10"
+msgid "Edit Network Configuration"
 msgstr ""
 
-msgid "Disable this if you want to use iwinfo instead of iw"
+msgid "Edit Travelmate Configuration"
 msgstr ""
 
-msgid "Enable Travelmate"
+msgid "Edit Wireless Configuration"
+msgstr ""
+
+msgid "Enable 'automatic' mode"
+msgstr ""
+
+msgid "Enable travelmate"
+msgstr ""
+
+msgid "Enable verbose debug logging"
 msgstr ""
 
 msgid "Extra options"
 msgstr ""
 
-msgid "Global options"
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+
+msgid "How long should travelmate wait for a successful wlan interface reload"
+msgstr ""
+
+msgid "How many times should travelmate try to connect to an Uplink"
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Interface Setup"
+msgstr ""
+
+msgid "Interface Timeout"
+msgstr ""
+
+msgid "Keep travelmate in an active state."
+msgstr ""
+
+msgid "Last rundate"
+msgstr ""
+
+msgid "Online Status"
+msgstr ""
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+
+msgid "Overall Timeout"
+msgstr ""
+
+msgid "Overview"
 msgstr ""
 
-msgid "Link to detailed advice"
+msgid "Radio selection"
 msgstr ""
 
-msgid "Max. number of connection retries to an uplink"
+msgid "Restrict interface trigger to certain interface(s)"
 msgstr ""
 
-msgid "Max. timeout in seconds for wlan interface reload"
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'"
 msgstr ""
 
-msgid "Restrict reload trigger to certain interface(s)"
+msgid "Runtime information"
 msgstr ""
 
 msgid ""
-"Space separated list of wwan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"Scan &amp; Add new wireless stations via standard <a href=\"%s\">Wireless "
+"Setup</a>"
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger travelmate processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Station Interface"
+msgstr ""
+
+msgid "Station Radio"
+msgstr ""
+
+msgid "Station SSID"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main firewall "
+"configuration file (/etc/config/firewall)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main network configuration "
+"file (/etc/config/network)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main travelmate "
+"configuration file (/etc/config/travelmate)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main wireless "
+"configuration file (/etc/config/wireless)."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for travelmate related "
+"messages only."
+msgstr ""
+
+msgid "Timeout in seconds between retries in 'automatic' mode"
 msgstr ""
 
 msgid "Travelmate"
 msgstr ""
 
-msgid "Use iw for scanning"
+msgid "Travelmate Logfile"
+msgstr ""
+
+msgid "Travelmate version"
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid ""
+"add it to the wan zone of the firewall. This step has only to be done once."
+msgstr ""
+
+msgid "connected"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "not connected"
 msgstr ""
index 9a2cf46..3014770 100644 (file)
@@ -11,16 +11,9 @@ LUCI_TITLE:=uHTTPd Webserver Configuration
 LUCI_DEPENDS:=+uhttpd
 LUCI_PKGARCH:=all
 
-PKG_NAME:=luci-app-uhttpd
-PKG_VERSION:=1.0.0
-PKG_RELEASE:=1
 PKG_LICENSE:=Apache-2.0
 PKG_MAINTAINER:=Daniel Dickinson <openwrt@daniel.thecshore.com>
 
-PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
-
-include $(INCLUDE_DIR)/package.mk
-
 LUA_TARGET:=source
 
 include ../../luci.mk
diff --git a/applications/luci-app-uhttpd/po/pt-br/uhttpd.po b/applications/luci-app-uhttpd/po/pt-br/uhttpd.po
new file mode 100644 (file)
index 0000000..af68b9e
--- /dev/null
@@ -0,0 +1,208 @@
+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 ""
+"(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)"
+msgstr ""
+"(/old/path=/new/path) ou (just /old/path que se torna /cgi-prefix/old/path)"
+
+msgid "404 Error"
+msgstr "Erro 404"
+
+msgid "A lightweight single-threaded HTTP(S) server"
+msgstr "Um servidor HTTP(S) leve de únida thread."
+
+msgid "Advanced Settings"
+msgstr "Opções Avançadas"
+
+msgid "Aliases"
+msgstr "Pseudônimos (Aliases)"
+
+msgid "Base directory for files to be served"
+msgstr "Diretório Base para publicar arquivos"
+
+msgid "Bind to specific interface:port (by specifying interface address"
+msgstr ""
+"Escute em uma interface:porta específica (especificando o endereço da "
+"interface"
+
+msgid "CGI filetype handler"
+msgstr "Interpretador de tipo de arquivo CGI"
+
+msgid "CGI is disabled if not present."
+msgstr "O CGI estará desabilitado se não presente."
+
+msgid "Config file (e.g. for credentials for Basic Auth)"
+msgstr "Arquivo de configuração (ex: credenciais para autenticação básica)"
+
+msgid "Connection reuse"
+msgstr "Reutilizar conexão"
+
+msgid "Country"
+msgstr "País"
+
+msgid "Disable JSON-RPC authorization via ubus session API"
+msgstr "Desabilita a autorização JSON-RPC através da API de sessão ubus"
+
+msgid "Do not follow symlinks outside document root"
+msgstr "Não siga ligações simbólicas (symlinks) para fora do documento raiz"
+
+msgid "Do not generate directory listings."
+msgstr "Não gere listagens de diretórios"
+
+msgid "Document root"
+msgstr "Documento Raiz"
+
+msgid "E.g specify with index.html and index.php when using PHP"
+msgstr "Ex: use index.html e index.php quando usar PHP"
+
+msgid "Embedded Lua interpreter is disabled if not present."
+msgstr "O interpretador Lua embutido será desabilitado se não presente."
+
+msgid "Enable JSON-RPC Cross-Origin Resource Support"
+msgstr "Habilite o suporte para recursos JSON-RPC de origem cruzada"
+
+msgid "For settings primarily geared to serving more than the web UI"
+msgstr "Para ajustes envolvidos com mais do que prover a interface web"
+
+msgid "Full Web Server Settings"
+msgstr "Configurações Completas do Servidor Web"
+
+msgid "Full real path to handler for Lua scripts"
+msgstr "Caminho completo para o interpretador de scripts Lua"
+
+msgid "General Settings"
+msgstr "Configurações Gerais"
+
+msgid "HTTP listeners (address:port)"
+msgstr "Escutas do HTTP (endereço:porta)"
+
+msgid "HTTPS Certificate (DER Encoded)"
+msgstr "Certificado do HTTPS (codificado em formato PEM)"
+
+msgid "HTTPS Private Key (DER Encoded)"
+msgstr "Chave Privada do HTTPS (codificado como DER)"
+
+msgid "HTTPS listener (address:port)"
+msgstr "Escuta do HTTPS (endereço:porta)"
+
+msgid "Ignore private IPs on public interface"
+msgstr "Ignore endereços IP privados na interface pública"
+
+msgid "Index page(s)"
+msgstr "Página(s) Índice(s)"
+
+msgid ""
+"Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/"
+"usr/bin/php-cgi')"
+msgstr ""
+"Interpretador para associar com extensões de arquivos "
+"('extensão=interpretador', ex: '.php=/usr/bin/php-cgi')"
+
+msgid "Length of key in bits"
+msgstr "Comprimento da chave em bits"
+
+msgid "Location"
+msgstr "Localização"
+
+msgid "Maximum number of connections"
+msgstr "Número máximo de requisições para script"
+
+msgid "Maximum number of script requests"
+msgstr "Número máximo de requisições para script"
+
+msgid "Maximum wait time for Lua, CGI, or ubus execution"
+msgstr "Tempo máximo de espera para execuções de Lua, CGI ou ubus"
+
+msgid "Maximum wait time for network activity"
+msgstr "Tempo máximo de espera para atividade na rede"
+
+msgid "Override path for ubus socket"
+msgstr "Sobrescrever o caminho do socket ubus"
+
+msgid "Path prefix for CGI scripts"
+msgstr "Prefixo do caminho para scripts CGI"
+
+msgid ""
+"Prevent access from private (RFC1918) IPs on an interface if it has an "
+"public IP address"
+msgstr ""
+"Evite acesso de endereços privados (RFC1918) na interface que tem um "
+"endereço IP público"
+
+msgid "Realm for Basic Auth"
+msgstr "Reino para Autenticação Simples"
+
+msgid "Redirect all HTTP to HTTPS"
+msgstr "Redirecionar todo tráfego HTTP para HTTPS"
+
+msgid "Remove configuration for certificate and key"
+msgstr "Remove a configuração para o certificado e chave"
+
+msgid "Remove old certificate and key"
+msgstr "Remove os certificados e chaves antigas"
+
+msgid "Server Hostname"
+msgstr "Nome do Servidor"
+
+msgid ""
+"Settings which are either rarely needed or which affect serving the WebUI"
+msgstr "Ajustes que são raramente usadas ou que afetam a interface web"
+
+msgid "State"
+msgstr "Estado"
+
+msgid "TCP Keepalive"
+msgstr "Manter conexões TCP abertas (Keepalive)"
+
+msgid "This permanently deletes the cert, key, and configuration to use same."
+msgstr "Isto apaga permanentemente o certificado, a chave e a configuração."
+
+msgid "Valid for # of Days"
+msgstr "Valido por # dias"
+
+msgid ""
+"Virtual URL or CGI script to display on status '404 Not Found'. Must begin "
+"with '/'"
+msgstr ""
+"URL virtual ou script CGI para mostrar quando ocorrer erro '404 Não "
+"Encontrado'. Deve começar com '/'"
+
+msgid "Virtual path prefix for Lua scripts"
+msgstr "Prefixo do caminho virtual para scripts Lua"
+
+msgid "Virtual path prefix for ubus via JSON-RPC integration"
+msgstr "Prefixo do caminho virtual para o ubus através da integração JSON-RPC"
+
+msgid "Will not use HTTP authentication if not present"
+msgstr "Não usar autenticação HTTP se não presente"
+
+msgid "a.k.a CommonName"
+msgstr "também conhecido como Nome Comum"
+
+msgid "uHTTPd"
+msgstr "uHTTPd"
+
+msgid "uHTTPd Self-signed Certificate Parameters"
+msgstr "Parâmetros do Certificado Auto-assinado do uHTTPd"
+
+msgid ""
+"uHTTPd will generate a new self-signed certificate using the configuration "
+"shown below."
+msgstr ""
+"o uHTTPd gerará um certificado auto-assinado usando a configuração mostrada "
+"abaixo."
+
+msgid "ubus integration is disabled if not present"
+msgstr "A integração com o ubus será desativada se não presente"
index f1bb450..74b9d1d 100644 (file)
@@ -12,21 +12,21 @@ s.addremove = false
 s:tab("general",  translate("General Settings"))
 s:tab("advanced", translate("Advanced Settings"))
 
-e = s:taboption("general", Flag, "_init", translate("Start UPnP and NAT-PMP service"))
+e = s:taboption("general", Flag, "enabled", translate("Start UPnP and NAT-PMP service"))
 e.rmempty  = false
 
-function e.cfgvalue(self, section)
-       return luci.sys.init.enabled("miniupnpd") and self.enabled or self.disabled
-end
+--function e.cfgvalue(self, section)
+--     return luci.sys.init.enabled("miniupnpd") and self.enabled or self.disabled
+--end
 
 function e.write(self, section, value)
        if value == "1" then
-               luci.sys.call("/etc/init.d/miniupnpd enable >/dev/null")
                luci.sys.call("/etc/init.d/miniupnpd start >/dev/null")
        else
                luci.sys.call("/etc/init.d/miniupnpd stop >/dev/null")
-               luci.sys.call("/etc/init.d/miniupnpd disable >/dev/null")
        end
+
+       return Flag.write(self, section, value)
 end
 
 s:taboption("general", Flag, "enable_upnp", translate("Enable UPnP functionality")).default = "1"
index a338c75..e9636f9 100755 (executable)
@@ -3,7 +3,7 @@
 uci -q batch <<-EOF >/dev/null
        delete ucitrack.@upnpd[-1]
        add ucitrack upnpd
-       set ucitrack.@upnpd[-1]=miniupnpd
+       set ucitrack.@upnpd[-1].init=miniupnpd
        commit ucitrack
 EOF
 
index e26fe27..0ca74ae 100644 (file)
@@ -9,7 +9,8 @@ PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
 LUCI_TITLE:=VPN Bypass Web UI
 LUCI_DEPENDS:=+vpnbypass
 LUCI_PKGARCH:=all
+PKG_RELEASE:=1
 
 include ../../luci.mk
 
-# call BuildPackage - OpenWrt buildroot signature
\ No newline at end of file
+# call BuildPackage - OpenWrt buildroot signature
index 6ed52dd..b35a8e4 100644 (file)
@@ -1,30 +1,53 @@
+readmeURL = "https://github.com/openwrt/packages/blob/master/net/vpnbypass/files/README.md"
+
 m = Map("vpnbypass", translate("VPN Bypass Settings"))
 s = m:section(NamedSection, "config", "vpnbypass")
 
 -- General options
-o1 = s:option(Flag, "enabled", translate("Enable VPN Bypass"))
-o1.rmempty = false
-o1.default = 0
+e = s:option(Flag, "enabled", translate("Enable/start service"))
+e.rmempty = false
+
+function e.cfgvalue(self, section)
+       return self.map:get(section, "enabled") == "1" and luci.sys.init.enabled("vpnbypass") and self.enabled or self.disabled
+end
+
+function e.write(self, section, value)
+       if value == "1" then
+               luci.sys.call("/etc/init.d/vpnbypass enable >/dev/null")
+               luci.sys.call("/etc/init.d/vpnbypass start >/dev/null")
+       else
+               luci.sys.call("/etc/init.d/vpnbypass stop >/dev/null")
+       end
+       return Flag.write(self, section, value)
+end
 
 -- Local Ports
 p1 = s:option(DynamicList, "localport", translate("Local Ports to Bypass"), translate("Local ports to trigger VPN Bypass"))
-p1.addremove = true
-p1.optional = true
+p1.datatype    = "portrange"
+-- p1.placeholder = "0-65535"
+p1.addremove = false
+p1.optional = false
 
 -- Remote Ports
 p2 = s:option(DynamicList, "remoteport", translate("Remote Ports to Bypass"), translate("Remote ports to trigger VPN Bypass"))
-p2.addremove = true
-p2.optional = true
+p2.datatype    = "portrange"
+-- p2.placeholder = "0-65535"
+p2.addremove = false
+p2.optional = false
 
 -- Local Subnets
-r1 = s:option(DynamicList, "localsubnet", translate("Local IP Subnets to Bypass"), translate("Local IP ranges with direct internet access (outside of the VPN tunnel)"))
-r1.addremove = true
-r1.optional = true
+r1 = s:option(DynamicList, "localsubnet", translate("Local IP Addresses to Bypass"), translate("Local IP addresses or subnets with direct internet access (outside of the VPN tunnel)"))
+r1.datatype    = "ip4addr"
+-- r1.placeholder = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr") .. "/" .. uci.cursor():get("network", "lan", "netmask"))
+r1.addremove = false
+r1.optional = false
 
 -- Remote Subnets
-r2 = s:option(DynamicList, "remotesubnet", translate("Remote IP Subnets to Bypass"), translate("Remote IP ranges which will be accessed directly (outside of the VPN tunnel)"))
-r2.addremove = true
-r2.optional = true
+r2 = s:option(DynamicList, "remotesubnet", translate("Remote IP Addresses to Bypass"), translate("Remote IP addresses or subnets which will be accessed directly (outside of the VPN tunnel)"))
+r2.datatype    = "ip4addr"
+-- r2.placeholder = "0.0.0.0/0"
+r2.addremove = false
+r2.optional = false
 
 -- Domains
 d = Map("dhcp")
@@ -32,7 +55,7 @@ s4 = d:section(TypedSection, "dnsmasq")
 s4.anonymous = true
 di = s4:option(DynamicList, "ipset", translate("Domains to Bypass"),
     translate("Domains to be accessed directly (outside of the VPN tunnel), see ")
-    .. [[<a href="https://github.com/openwrt/packages/tree/master/net/vpnbypass/files#bypass-domains-formatsyntax" target="_blank">]]
+               .. [[<a href="]] .. readmeURL .. [[#bypass-domains-formatsyntax" target="_blank">]]
     .. translate("README") .. [[</a>]] .. translate(" for syntax"))
 
 return m, d
diff --git a/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po b/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po
new file mode 100644 (file)
index 0000000..9f3fa2a
--- /dev/null
@@ -0,0 +1,90 @@
+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 "Domains to Bypass"
+msgstr "Domínios para evitar a VPN"
+
+msgid "Domains to be accessed directly (outside of the VPN tunnel), see"
+msgstr ""
+
+msgid "Enable/start service"
+msgstr ""
+
+msgid "Local IP Addresses to Bypass"
+msgstr ""
+
+msgid ""
+"Local IP addresses or subnets with direct internet access (outside of the "
+"VPN tunnel)"
+msgstr ""
+
+msgid "Local Ports to Bypass"
+msgstr "Portas locais para evitar a VPN"
+
+msgid "Local ports to trigger VPN Bypass"
+msgstr "Portas locais para disparar o VPN Bypass"
+
+msgid "README"
+msgstr ""
+
+msgid "Remote IP Addresses to Bypass"
+msgstr ""
+
+msgid ""
+"Remote IP addresses or subnets which will be accessed directly (outside of "
+"the VPN tunnel)"
+msgstr ""
+
+msgid "Remote Ports to Bypass"
+msgstr "Portas remotas para evitar a VPN"
+
+msgid "Remote ports to trigger VPN Bypass"
+msgstr "Portas remotas para disparar o VPN Bypass"
+
+msgid "VPN Bypass"
+msgstr "VPN Bypass"
+
+msgid "VPN Bypass Settings"
+msgstr "Configurações do VPN Bypass"
+
+msgid "for syntax"
+msgstr ""
+
+#~ msgid "Enable VPN Bypass"
+#~ msgstr "Habilitar o VPN Bypass"
+
+#~ msgid "Configuration of VPN Bypass Settings"
+#~ msgstr "Configurações do VPN Bypass"
+
+#~ msgid "Domains which will be accessed directly (outside of the VPN tunnel)"
+#~ msgstr "Domínios que serão acessados diretamente (fora do túnel VPN)"
+
+#~ msgid "Local IP Subnets to Bypass"
+#~ msgstr "Subredes IP locais para evitar a VPN"
+
+#~ msgid ""
+#~ "Local IP ranges with direct internet access (outside of the VPN tunnel)"
+#~ msgstr ""
+#~ "Faixa de endereços IP locais que terão acesso internet direto (fora do "
+#~ "túnel VPN)"
+
+#~ msgid "Remote IP Subnets to Bypass"
+#~ msgstr "Subredes IP remotas para evitar a VPN"
+
+#~ msgid ""
+#~ "Remote IP ranges which will be accessed directly (outside of the VPN "
+#~ "tunnel)"
+#~ msgstr ""
+#~ "Faixa de endereços IP remotos que serão acessados diretamente (fora do "
+#~ "túnel VPN)"
index 144aded..fd92b5e 100644 (file)
@@ -7,13 +7,15 @@ msgstr ""
 msgid "Domains to be accessed directly (outside of the VPN tunnel), see"
 msgstr ""
 
-msgid "Enable VPN Bypass"
+msgid "Enable/start service"
 msgstr ""
 
-msgid "Local IP Subnets to Bypass"
+msgid "Local IP Addresses to Bypass"
 msgstr ""
 
-msgid "Local IP ranges with direct internet access (outside of the VPN tunnel)"
+msgid ""
+"Local IP addresses or subnets with direct internet access (outside of the "
+"VPN tunnel)"
 msgstr ""
 
 msgid "Local Ports to Bypass"
@@ -25,11 +27,12 @@ msgstr ""
 msgid "README"
 msgstr ""
 
-msgid "Remote IP Subnets to Bypass"
+msgid "Remote IP Addresses to Bypass"
 msgstr ""
 
 msgid ""
-"Remote IP ranges which will be accessed directly (outside of the VPN tunnel)"
+"Remote IP addresses or subnets which will be accessed directly (outside of "
+"the VPN tunnel)"
 msgstr ""
 
 msgid "Remote Ports to Bypass"
index fe97036..e37066c 100644 (file)
@@ -1,15 +1,16 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-03-29 23:20+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2017-02-20 18:10-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
 "Language-Team: none\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"POT-Creation-Date: \n"
 
 msgid "Forced reboot delay"
 msgstr "Atraso para reinício forçado"
@@ -51,15 +52,13 @@ msgstr "Período de ping"
 msgid "Watchcat"
 msgstr "Watchcat"
 
-#, fuzzy
 msgid ""
 "Watchcat allows configuring a periodic reboot when the Internet connection "
 "has been lost for a certain period of time."
 msgstr ""
-"Watchcat permite que se configure um período para reiniciar e/ou quando a "
+"Watchcat permite a configuração de um período para reiniciar e/ou quando a "
 "conexão com à Internet foi perdida por um ser período de tempo."
 
-#, fuzzy
 msgid ""
 "When rebooting the system, the watchcat will trigger a soft reboot. Entering "
 "a non zero value here will trigger a delayed hard reboot if the soft reboot "
diff --git a/applications/luci-app-wifischedule/po/pt-br/wifischedule.po b/applications/luci-app-wifischedule/po/pt-br/wifischedule.po
new file mode 100644 (file)
index 0000000..19e31b5
--- /dev/null
@@ -0,0 +1,114 @@
+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 "Activate wifi"
+msgstr "Ativar a WiFi"
+
+msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi"
+msgstr ""
+"Não foi possível localizar os programas necessários '/usr/bin/wifi_schedule."
+"sh' ou '/sbin/wifi'."
+
+msgid "Could not find required programm /usr/bin/iwinfo"
+msgstr "Não foi possível localizar o programa necessário '/usr/bin/iwinfo'"
+
+msgid "Cron Jobs"
+msgstr "Tarefas da Cron"
+
+msgid "Day(s) of Week"
+msgstr "Dia(s) da semana"
+
+msgid "Defines a schedule when to turn on and off wifi."
+msgstr "Define um agendamento para quando ligar ou desligar a WiFi."
+
+msgid "Determine Modules Automatically"
+msgstr "Determinar os Módulos Automaticamente"
+
+msgid "Disable wifi gracefully"
+msgstr "Desabilitar a WiFi amistosamente"
+
+msgid "Disabled wifi forced"
+msgstr "WiFi foi desabilitada de forma forçada."
+
+msgid "Enable"
+msgstr "Habilitar"
+
+msgid "Enable Wifi Schedule"
+msgstr "Habilitar o agendamento da WiFi"
+
+msgid "Enable logging"
+msgstr "Habilite os registros (log)"
+
+msgid "Force disabling wifi even if stations associated"
+msgstr "Force a desativação da WiFi mesmo se existirem estações associadas "
+
+msgid "Friday"
+msgstr "Sexta-feira"
+
+msgid "Global Settings"
+msgstr "Configurações Globais"
+
+msgid "Monday"
+msgstr "Segunda-Feira"
+
+msgid "Saturday"
+msgstr "Sábado"
+
+msgid "Schedule"
+msgstr "Agendamento"
+
+msgid "Schedule events"
+msgstr "Eventos do agendamento"
+
+msgid "Start Time"
+msgstr "Hora Inicial"
+
+msgid "Start WiFi"
+msgstr "Iniciar WiFi"
+
+msgid "Stop Time"
+msgstr "Hora Final"
+
+msgid "Stop WiFi"
+msgstr "Parar WiFi"
+
+msgid "Sunday"
+msgstr "Domingo"
+
+msgid "The value %s is invalid"
+msgstr "O valor %s é inválido"
+
+msgid "Thursday"
+msgstr "Quita-feira"
+
+msgid "Tuesday"
+msgstr "Terça-feira"
+
+msgid "Unload Modules (experimental; saves more power)"
+msgstr "Descarregar Módulos (experimental, poupa mais energia)"
+
+msgid "View Cron Jobs"
+msgstr "Visualizar Tarefas da Cron"
+
+msgid "View Logfile"
+msgstr "Visualizar o Arquivo de Registros (log)"
+
+msgid "Wednesday"
+msgstr "Quarta-feira"
+
+msgid "Wifi Schedule"
+msgstr "Agendamento da Wifi"
+
+msgid "Wifi Schedule Logfile"
+msgstr "Arquivo de Registros (log) do Agendamento da Wifi"
diff --git a/applications/luci-app-wireguard/Makefile b/applications/luci-app-wireguard/Makefile
new file mode 100644 (file)
index 0000000..92cdcf2
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2016-2017 Dan Luedtke <mail@danrl.com>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=WireGuard Status
+LUCI_DEPENDS:=+wireguard-tools +kmod-wireguard
+LUCI_PKGARCH:=all
+
+PKG_MAINTAINER:=Dan Luedtke <mail@danrl.com>
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-wireguard/luasrc/controller/wireguard.lua b/applications/luci-app-wireguard/luasrc/controller/wireguard.lua
new file mode 100644 (file)
index 0000000..68a82fe
--- /dev/null
@@ -0,0 +1,8 @@
+-- Copyright 2016-2017 Dan Luedtke <mail@danrl.com>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.wireguard", package.seeall)
+
+function index()
+  entry({"admin", "status", "wireguard"}, template("wireguard"), _("WireGuard Status"), 92)
+end
diff --git a/applications/luci-app-wireguard/luasrc/view/wireguard.htm b/applications/luci-app-wireguard/luasrc/view/wireguard.htm
new file mode 100644 (file)
index 0000000..5b5d59a
--- /dev/null
@@ -0,0 +1,209 @@
+<%#
+ Copyright 2016-2017 Dan Luedtke <mail@danrl.com>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%
+  local data = { }
+  local last_device = ""
+
+  local wg_dump = io.popen("wg show all dump")
+  if wg_dump then
+    local line
+    for line in wg_dump:lines() do
+      local line = string.split(line, "\t")
+      if not (last_device == line[1]) then
+        last_device = line[1]
+        data[line[1]] = {
+          name                 = line[1],
+          public_key           = line[3],
+          listen_port          = line[5],
+          fwmark               = line[6],
+          peers                = { }
+        }
+      else
+        local peer = {
+          public_key           = line[2],
+          endpoint             = line[3],
+          allowed_ips          = { },
+          latest_handshake     = line[5],
+          transfer_rx          = line[6],
+          transfer_tx          = line[7],
+          persistent_keepalive = line[8]
+        }
+        if not (line[4] == '(none)') then
+          for ipkey, ipvalue in pairs(string.split(line[4], ",")) do
+            if #ipvalue > 0 then
+              table.insert(peer['allowed_ips'], ipvalue)
+            end
+          end
+        end
+        table.insert(data[line[1]].peers, peer)
+      end
+    end
+  end
+
+  if luci.http.formvalue("status") == "1" then
+    luci.http.prepare_content("application/json")
+    luci.http.write_json(data)
+    return
+  end
+-%>
+
+<%+header%>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+
+  function bytes_to_str(bytes) {
+    bytes = parseFloat(bytes);
+    if (bytes < 1) { return "0 B"; }
+    var sizes = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'];
+    var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
+    return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i];
+  };
+
+  function timestamp_to_str(timestamp) {
+    if (timestamp < 1) {
+      return '<%:Never%>';
+    }
+    var now = new Date();
+    var seconds = (now.getTime() / 1000) - timestamp;
+    var ago = "";
+    if (seconds < 60) {
+      ago = parseInt(seconds) + '<%:s ago%>';
+    } else if (seconds < 3600) {
+      ago = parseInt(seconds / 60) + '<%:m ago%>';
+    } else if (seconds < 86401) {
+      ago = parseInt(seconds / 3600) + '<%:h ago%>';
+    } else {
+      ago = '<%:over a day ago%>';
+    }
+    var t = new Date(timestamp * 1000);
+    return t.toUTCString() + ' (' + ago + ')';
+  }
+
+  XHR.poll(5, '<%=REQUEST_URI%>', { status: 1 },
+   function(x, data) {
+    for (var key in data) {
+      if (!data.hasOwnProperty(key)) { continue; }
+      var ifname = key;
+      var iface = data[key];
+      var s = "";
+      if (iface.public_key == '(none)') {
+        s += '<em><%:Interface does not have a public key!%></em>';
+      } else {
+        s += String.format(
+          '<strong><%:Public Key%>: </strong>%s',
+          iface.public_key
+        );
+      }
+      if (iface.listen_port > 0) {
+        s += String.format(
+          '<br /><strong><%:Listen Port%>: </strong>%s',
+          iface.listen_port
+        );
+      }
+      if (iface.fwmark != 'off') {
+        s += String.format(
+          '<br /><strong><%:Firewall Mark%>: </strong>%s',
+          iface.fwmark
+        );
+      }
+      document.getElementById(ifname + "_info").innerHTML = s;
+      for (var i = 0, ilen = iface.peers.length; i < ilen; i++) {
+        var peer = iface.peers[i];
+        var s = String.format(
+          '<strong><%:Public Key%>: </strong>%s',
+          peer.public_key
+        );
+        if (peer.endpoint != '(none)') {
+          s += String.format(
+            '<br /><strong><%:Endpoint%>: </strong>%s',
+            peer.endpoint
+          );
+        }
+        if (peer.allowed_ips.length > 0) {
+          s += '<br /><strong><%:Allowed IPs%>:</strong>';
+          for (var k = 0, klen = peer.allowed_ips.length; k < klen; k++) {
+            s += '<br />&nbsp;&nbsp;&bull;&nbsp;' + peer.allowed_ips[k];
+          }
+        }
+        if (peer.persistent_keepalive != 'off') {
+          s += String.format(
+            '<br /><strong><%:Persistent Keepalive%>: </strong>%ss',
+            peer.persistent_keepalive
+          );
+        }
+        var icon = '<img src="<%=resource%>/icons/tunnel_disabled.png" />';
+        var now = new Date();
+        if (((now.getTime() / 1000) - peer.latest_handshake) < 140) {
+          icon = '<img src="<%=resource%>/icons/tunnel.png" />';
+        }
+        s += String.format(
+          '<br /><strong><%:Latest Handshake%>: </strong>%s',
+          timestamp_to_str(peer.latest_handshake)
+        );
+        s += String.format(
+          '<br /><strong><%:Data Received%>: </strong>%s' +
+          '<br /><strong><%:Data Transmitted%>: </strong>%s',
+          bytes_to_str(peer.transfer_rx),
+          bytes_to_str(peer.transfer_tx)
+        );
+        document.getElementById(ifname + "_" + peer.public_key + "_icon").innerHTML = icon;
+        document.getElementById(ifname + "_" + peer.public_key + "_info").innerHTML = s;
+      }
+    }
+  });
+//]]></script>
+
+<h2>WireGuard Status</h2>
+
+<fieldset class="cbi-section">
+<%-
+for ikey, iface in pairs(data) do
+  -%>
+  <legend><%:Interface%> <%=ikey%></legend>
+  <table width="100%" cellspacing="10">
+    <tr>
+      <td width="33%" style="vertical-align:top"><%:Configuration%></td>
+      <td>
+        <table>
+          <tr>
+            <td id="<%=ikey%>_icon" style="width:16px; text-align:center; padding:3px">
+              &nbsp;
+            </td>
+            <td id="<%=ikey%>_info" style="vertical-align:middle; padding: 3px">
+              <em><%:Collecting data...%></em>
+            </td>
+        </tr></table>
+      </td>
+    </tr>
+  <%-
+  for pkey, peer in pairs(iface.peers) do
+    -%>
+    <tr>
+      <td width="33%" style="vertical-align:top"><%:Peer%></td>
+      <td>
+        <table>
+          <tr>
+            <td id="<%=ikey%>_<%=peer.public_key%>_icon" style="width:16px; text-align:center; padding:3px">
+              <img src="<%=resource%>/icons/tunnel_disabled.png" /><br />
+              <small>?</small>
+            </td>
+            <td id="<%=ikey%>_<%=peer.public_key%>_info" style="vertical-align:middle; padding: 3px">
+              <em><%:Collecting data...%></em>
+            </td>
+        </tr></table>
+      </td>
+    </tr>
+    <%-
+  end
+  -%>
+  </table>
+  <%-
+end
+-%>
+</fieldset>
+
+<%+footer%>
diff --git a/applications/luci-app-wireguard/po/ja/wireguard.po b/applications/luci-app-wireguard/po/ja/wireguard.po
new file mode 100644 (file)
index 0000000..5cd7a90
--- /dev/null
@@ -0,0 +1,74 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2017-02-28 00:31+0900\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Language-Team: \n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.12\n"
+"X-Poedit-Basepath: .\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgid "Allowed IPs"
+msgstr "許可されたIP"
+
+msgid "Collecting data..."
+msgstr "データ収集中です..."
+
+msgid "Configuration"
+msgstr "設定"
+
+msgid "Data Received"
+msgstr "受信済みデータ"
+
+msgid "Data Transmitted"
+msgstr "送信済みデータ"
+
+msgid "Endpoint"
+msgstr "エンドポイント"
+
+msgid "Firewall Mark"
+msgstr "ファイアウォール マーク"
+
+msgid "Interface"
+msgstr "インターフェース"
+
+msgid "Interface does not have a public key!"
+msgstr "インターフェースに公開鍵がありません!"
+
+msgid "Latest Handshake"
+msgstr "最新のハンドシェイク"
+
+msgid "Listen Port"
+msgstr "待ち受けポート"
+
+msgid "Never"
+msgstr "無し"
+
+msgid "Peer"
+msgstr "ピア"
+
+msgid "Persistent Keepalive"
+msgstr "永続的なキープアライブ"
+
+msgid "Public Key"
+msgstr "公開鍵"
+
+msgid "WireGuard Status"
+msgstr "WireGuard ステータス"
+
+msgid "h ago"
+msgstr "時間前"
+
+msgid "m ago"
+msgstr "分前"
+
+msgid "over a day ago"
+msgstr "1日以上前"
+
+msgid "s ago"
+msgstr "秒前"
diff --git a/applications/luci-app-wireguard/po/pt-br/wireguard.po b/applications/luci-app-wireguard/po/pt-br/wireguard.po
new file mode 100644 (file)
index 0000000..d3b5059
--- /dev/null
@@ -0,0 +1,73 @@
+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 "Allowed IPs"
+msgstr "Endereços IP autorizados"
+
+msgid "Collecting data..."
+msgstr "Coletando dados..."
+
+msgid "Configuration"
+msgstr "Configuração"
+
+msgid "Data Received"
+msgstr "Dados Recebidos"
+
+msgid "Data Transmitted"
+msgstr "Dados Enviados"
+
+msgid "Endpoint"
+msgstr "Equipamento do ponto final"
+
+msgid "Firewall Mark"
+msgstr "Marca do Firewall"
+
+msgid "Interface"
+msgstr "Interface"
+
+msgid "Interface does not have a public key!"
+msgstr "A interface não tem uma chave pública!"
+
+msgid "Latest Handshake"
+msgstr "Última Negociação"
+
+msgid "Listen Port"
+msgstr "Porta de Escuta"
+
+msgid "Never"
+msgstr "Nunca"
+
+msgid "Peer"
+msgstr "Parceiro"
+
+msgid "Persistent Keepalive"
+msgstr "Manter Conexões Abertas (Keepalive)"
+
+msgid "Public Key"
+msgstr "Chave Pública"
+
+msgid "WireGuard Status"
+msgstr "Estado do WireGuard"
+
+msgid "h ago"
+msgstr "horas atrás"
+
+msgid "m ago"
+msgstr "meses atrás"
+
+msgid "over a day ago"
+msgstr "mais de um dia atrás"
+
+msgid "s ago"
+msgstr "segundos atrás"
diff --git a/applications/luci-app-wireguard/po/templates/wireguard.pot b/applications/luci-app-wireguard/po/templates/wireguard.pot
new file mode 100644 (file)
index 0000000..9ec5c60
--- /dev/null
@@ -0,0 +1,62 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Allowed IPs"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Configuration"
+msgstr ""
+
+msgid "Data Received"
+msgstr ""
+
+msgid "Data Transmitted"
+msgstr ""
+
+msgid "Endpoint"
+msgstr ""
+
+msgid "Firewall Mark"
+msgstr ""
+
+msgid "Interface"
+msgstr ""
+
+msgid "Interface does not have a public key!"
+msgstr ""
+
+msgid "Latest Handshake"
+msgstr ""
+
+msgid "Listen Port"
+msgstr ""
+
+msgid "Never"
+msgstr ""
+
+msgid "Peer"
+msgstr ""
+
+msgid "Persistent Keepalive"
+msgstr ""
+
+msgid "Public Key"
+msgstr ""
+
+msgid "WireGuard Status"
+msgstr ""
+
+msgid "h ago"
+msgstr ""
+
+msgid "m ago"
+msgstr ""
+
+msgid "over a day ago"
+msgstr ""
+
+msgid "s ago"
+msgstr ""
diff --git a/applications/luci-app-wireguard/po/zh-cn/wireguard.po b/applications/luci-app-wireguard/po/zh-cn/wireguard.po
new file mode 100644 (file)
index 0000000..e873a83
--- /dev/null
@@ -0,0 +1,73 @@
+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 2.0.1\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: zh_CN\n"
+
+msgid "Allowed IPs"
+msgstr "允许的 IP"
+
+msgid "Collecting data..."
+msgstr "正在收集数据..."
+
+msgid "Configuration"
+msgstr "配置"
+
+msgid "Data Received"
+msgstr "已接收"
+
+msgid "Data Transmitted"
+msgstr "已发送"
+
+msgid "Endpoint"
+msgstr "传输端点"
+
+msgid "Firewall Mark"
+msgstr "防火墙标识"
+
+msgid "Interface"
+msgstr "接口"
+
+msgid "Interface does not have a public key!"
+msgstr "接口没有配置公钥!"
+
+msgid "Latest Handshake"
+msgstr "上次握手"
+
+msgid "Listen Port"
+msgstr "监听端口"
+
+msgid "Never"
+msgstr "从不"
+
+msgid "Peer"
+msgstr "对端"
+
+msgid "Persistent Keepalive"
+msgstr "Keepalive 间隔(秒)"
+
+msgid "Public Key"
+msgstr "公钥"
+
+msgid "WireGuard Status"
+msgstr "WireGuard 状态"
+
+msgid "h ago"
+msgstr "小时前"
+
+msgid "m ago"
+msgstr "分钟前"
+
+msgid "over a day ago"
+msgstr "超过一天前"
+
+msgid "s ago"
+msgstr "秒前"
index 6195e4c..783ec0b 100644 (file)
@@ -2,18 +2,18 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-19 00:29+0200\n"
-"PO-Revision-Date: 2011-10-11 20:31+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
+"PO-Revision-Date: 2017-02-20 18:13-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
 "Language-Team: none\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Poedit 1.8.11\n"
 
 msgid "Broadcast on all interfaces"
 msgstr "Broadcast em todas as interfaces"
@@ -28,14 +28,13 @@ msgid "Network interface to use"
 msgstr "Interfaces de rede para usar"
 
 msgid "Send to broadcast address"
-msgstr ""
+msgstr "Enviar para o endereço de broadcast"
 
-#, fuzzy
 msgid ""
 "Sometimes only one of the two tools works. If one fails, try the other one"
 msgstr ""
-"Algumas vezes, somente uma das ferramentas funciona. Se uma delas falhar, "
-"tente a outra"
+"Algumas vezes, somente uma das duas ferramentas funciona. Se uma delas "
+"falhar, tente a outra"
 
 msgid "Specifies the interface the WoL packet is sent on"
 msgstr "Especifica a interface para onde os pacotes de WoL serão enviados"
index d3f0403..1a0bee1 100755 (executable)
@@ -46,6 +46,34 @@ while( ! eof ZTAB ) {
 
 close ZTAB;
 
+# Add Etc/GMT zones from manually as they are not in zone.tab
+$TZ{"Etc/GMT"} = "GMT0";
+$TZ{"Etc/GMT-1"} = "<+01>-1";
+$TZ{"Etc/GMT-2"} = "<+02>-2";
+$TZ{"Etc/GMT-3"} = "<+03>-3";
+$TZ{"Etc/GMT-4"} = "<+04>-4";
+$TZ{"Etc/GMT-5"} = "<+05>-5";
+$TZ{"Etc/GMT-6"} = "<+06>-6";
+$TZ{"Etc/GMT-7"} = "<+07>-7";
+$TZ{"Etc/GMT-8"} = "<+08>-8";
+$TZ{"Etc/GMT-9"} = "<+09>-9";
+$TZ{"Etc/GMT-10"} = "<+10>-10";
+$TZ{"Etc/GMT-11"} = "<+11>-11";
+$TZ{"Etc/GMT-12"} = "<+12>-12";
+$TZ{"Etc/GMT-13"} = "<+13>-13";
+$TZ{"Etc/GMT-14"} = "<+14>-14";
+$TZ{"Etc/GMT+1"} = "<-01>1";
+$TZ{"Etc/GMT+2"} = "<-02>2";
+$TZ{"Etc/GMT+3"} = "<-03>3";
+$TZ{"Etc/GMT+4"} = "<-04>4";
+$TZ{"Etc/GMT+5"} = "<-05>5";
+$TZ{"Etc/GMT+6"} = "<-06>6";
+$TZ{"Etc/GMT+7"} = "<-07>7";
+$TZ{"Etc/GMT+8"} = "<-08>8";
+$TZ{"Etc/GMT+9"} = "<-09>9";
+$TZ{"Etc/GMT+10"} = "<-10>10";
+$TZ{"Etc/GMT+11"} = "<-11>11";
+$TZ{"Etc/GMT+12"} = "<-12>12";
 
 open(O, "> $tzdout/tzdata.lua") || die "open($tzdout/tzdata.lua): $!\n";
 
index c15624a..9bdb603 100644 (file)
@@ -1,19 +1,35 @@
 config 'community' 'profile'
        option 'name' 'Freifunk Potsdam'
        option 'homepage' 'http://potsdam.freifunk.net'
-       option 'ssid' 'www.freifunk-potsdam.de'
+       option 'ssid' 'Freifunk-Potsdam-XXX-YYY'
        option 'mesh_network' '10.22.0.0/16'
        option 'splash_network' '192.168.22.0/24'
        option 'splash_prefix' '24'
        option 'latitude' '52.39349'
        option 'longitude' '13.06489'
+       option 'ipv6' '0'
+
+config 'defaults' 'interface'
+       option 'netmask' '255.255.0.0'
+       option 'dns' '85.214.20.141 213.73.91.35 194.150.168.168'
+       option 'delegate' '0'
 
 config 'defaults' 'wifi_device'
        option 'channel' '5'
 
+config 'defaults' 'wifi_device_5'
+       option 'channel' '44'
+
 config 'defaults' 'bssidscheme'
        option '5' '02:CA:FF:EE:BA:BE'
+       option '44' '02:CA:FF:EE:BA:BE'
 
-config 'defaults' 'interface'
-        option 'dns' '85.214.20.141 213.73.91.35 194.150.168.168'
+config 'defaults' 'ssidscheme'
+       option '5' 'Mesh23'
+       option '44' 'Mesh23'
+
+config 'defaults' 'dhcp'
+       option 'leasetime' '15m'
 
+config 'defaults' 'olsrd'
+       option 'LinkQualityAlgorithm' 'etx_ffeth'
index d9bbd99..2b9336f 100644 (file)
@@ -4,7 +4,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=freifunk-common
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
 
index 9a46f05..b1a2e41 100644 (file)
@@ -104,12 +104,6 @@ config 'defaults' 'wifi_iface'
        option 'bssid' '12:CA:FF:EE:BA:BE'
        option 'mcast_rate' '6000'
 
-config 'defaults' 'madwifi_wifi_iface'
-        option 'bgscan' '0'
-       option 'sw_merge' '1'
-        option 'probereq' '1'
-        option 'mcast_rate' '5500'
-
 config 'defaults' 'interface'
        option 'netmask' '255.255.0.0'
        option 'dns' '8.8.8.8 212.204.49.83 141.1.1.1'
index 9ac5a06..6298346 100644 (file)
@@ -4,7 +4,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=meshwizard
-PKG_RELEASE:=0.3.2
+PKG_RELEASE:=0.3.3
 
 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
 
index e9139ed..f2d10cc 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 # This script renames IB_wifi_ interface names into real interface names used on this system.
-# E.g. wireless.IB_wifi0 would become wireless.wifi0 on madwifi and wireless.radio0 on mac80211
+# E.g. wireless.IB_wifi0 would become wireless.radio0 on mac80211
 
 . $dir/functions.sh
 
index 41feb86..707b7b7 100755 (executable)
@@ -59,11 +59,6 @@ uci set wireless.$net\_iface=wifi-iface
 # create new wifi-iface for $net from defaults
 set_defaults "wifi_iface_" wireless.$net\_iface
 
-# overwrite some settings for type atheros (madwifi)
-if [ "$type" = "atheros" ]; then
-       set_defaults "madwifi_wifi_iface_" wireless.${net}
-fi
-
 # overwrite defaults
 bssid="$($dir/helpers/gen_bssid.sh $channel $community)"
 
index 0585ab5..7fdff3c 100755 (executable)
@@ -8,9 +8,7 @@ if [ -z "$dev" -o -z "$type" ]; then
        exit 1
 fi
 
-if [ "$type" = "atheros" ]; then
-        exit 0
-elif [ "$type" = "mac80211" ]; then
+if [ "$type" = "mac80211" ]; then
        # not hostapd[-mini], no VAP
        if [ ! -x /usr/sbin/hostapd ]; then
                echo "WARNING: hostapd[-mini] is required to be able to use VAP with mac80211."
diff --git a/luci.mk b/luci.mk
index 69aecaa..1ddb73d 100644 (file)
--- a/luci.mk
+++ b/luci.mk
@@ -36,7 +36,7 @@ LUCI_LANG.sv=Svenska (Swedish)
 LUCI_LANG.tr=Türkçe (Turkish)
 LUCI_LANG.uk=украї́нська (Ukrainian)
 LUCI_LANG.vi=Tiếng Việt (Vietnamese)
-LUCI_LANG.zh-cn=普通话 (Chinese)
+LUCI_LANG.zh-cn=中文 (Chinese)
 LUCI_LANG.zh-tw=臺灣華語 (Taiwanese)
 
 # Submenu titles
@@ -56,7 +56,7 @@ PKG_VERSION?=$(if $(DUMP),x,$(strip $(shell \
        elif git log -1 >/dev/null 2>/dev/null; then \
                revision="svn-r$$(LC_ALL=C git log -1 | sed -ne 's/.*git-svn-id: .*@\([0-9]\+\) .*/\1/p')"; \
                if [ "$$revision" = "svn-r" ]; then \
-                       set -- $$(git log -1 --format="%ct %h"); \
+                       set -- $$(git log -1 --format="%ct %h" --abbrev=7); \
                        secs="$$(($$1 % 86400))"; \
                        yday="$$(date --utc --date="@$$1" "+%y.%j")"; \
                        revision="$$(printf 'git-%s.%05d-%s' "$$yday" "$$secs" "$$2")"; \
@@ -70,7 +70,8 @@ PKG_VERSION?=$(if $(DUMP),x,$(strip $(shell \
 PKG_GITBRANCH?=$(if $(DUMP),x,$(strip $(shell \
        variant="LuCI"; \
        if git log -1 >/dev/null 2>/dev/null; then \
-               branch="$$(git symbolic-ref --short -q HEAD 2>/dev/null)"; \
+               branch="$$(git branch --remote --verbose --no-abbrev --contains 2>/dev/null | \
+                       sed -rne 's|^[^/]+/([^ ]+) [a-f0-9]{40} .+$$|\1|p' | head -n1)"; \
                if [ "$$branch" != "master" ]; then \
                        variant="LuCI $$branch branch"; \
                else \
index 62b0e0f..cf56566 100644 (file)
@@ -283,6 +283,14 @@ function hexstring(val)
        return false
 end
 
+function hex(val, maxbytes)
+       maxbytes = tonumber(maxbytes)
+       if val and maxbytes ~= nil then
+               return ((val:match("^0x[a-fA-F0-9]+$") ~= nil) and (#val <= 2 + maxbytes * 2))
+       end
+       return false
+end
+
 function base64(val)
        if val then
                return (val:match("^[a-zA-Z0-9/+]+=?=?$") ~= nil) and (math.fmod(#val, 4) == 0)
index 0876ce6..0bd1945 100644 (file)
@@ -101,7 +101,7 @@ function error500(message)
        return false
 end
 
-function authenticator.htmlauth(validator, accs, default)
+function authenticator.htmlauth(validator, accs, default, template)
        local user = http.formvalue("luci_username")
        local pass = http.formvalue("luci_password")
 
@@ -113,7 +113,7 @@ function authenticator.htmlauth(validator, accs, default)
        require("luci.template")
        context.path = {}
        http.status(403, "Forbidden")
-       luci.template.render("sysauth", {duser=default, fuser=user})
+       luci.template.render(template or "sysauth", {duser=default, fuser=user})
 
        return false
 
@@ -360,7 +360,7 @@ function dispatch(request)
 
                if not util.contains(accs, user) then
                        if authen then
-                               local user, sess = authen(sys.user.checkpasswd, accs, def)
+                               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
index 49d91b8..d9ef408 100644 (file)
@@ -1362,8 +1362,6 @@ function wifidev.get_i18n(self)
        local t = "Generic"
        if self.iwinfo.type == "wl" then
                t = "Broadcom"
-       elseif self.iwinfo.type == "madwifi" then
-               t = "Atheros"
        end
 
        local m = ""
index 465d7df..419c191 100644 (file)
@@ -59,42 +59,42 @@ TZ = {
        { 'America/Anchorage', 'AKST9AKDT,M3.2.0,M11.1.0' },
        { 'America/Anguilla', 'AST4' },
        { 'America/Antigua', 'AST4' },
-       { 'America/Araguaina', 'BRT3' },
-       { 'America/Argentina/Buenos Aires', 'ART3' },
-       { 'America/Argentina/Catamarca', 'ART3' },
-       { 'America/Argentina/Cordoba', 'ART3' },
-       { 'America/Argentina/Jujuy', 'ART3' },
-       { 'America/Argentina/La Rioja', 'ART3' },
-       { 'America/Argentina/Mendoza', 'ART3' },
-       { 'America/Argentina/Rio Gallegos', 'ART3' },
-       { 'America/Argentina/Salta', 'ART3' },
-       { 'America/Argentina/San Juan', 'ART3' },
-       { 'America/Argentina/San Luis', 'ART3' },
-       { 'America/Argentina/Tucuman', 'ART3' },
-       { 'America/Argentina/Ushuaia', 'ART3' },
+       { 'America/Araguaina', '<-03>3' },
+       { 'America/Argentina/Buenos Aires', '<-03>3' },
+       { 'America/Argentina/Catamarca', '<-03>3' },
+       { 'America/Argentina/Cordoba', '<-03>3' },
+       { 'America/Argentina/Jujuy', '<-03>3' },
+       { 'America/Argentina/La Rioja', '<-03>3' },
+       { 'America/Argentina/Mendoza', '<-03>3' },
+       { 'America/Argentina/Rio Gallegos', '<-03>3' },
+       { 'America/Argentina/Salta', '<-03>3' },
+       { 'America/Argentina/San Juan', '<-03>3' },
+       { 'America/Argentina/San Luis', '<-03>3' },
+       { 'America/Argentina/Tucuman', '<-03>3' },
+       { 'America/Argentina/Ushuaia', '<-03>3' },
        { 'America/Aruba', 'AST4' },
-       { 'America/Asuncion', 'PYT4PYST,M10.1.0/0,M3.4.0/0' },
+       { 'America/Asuncion', '<-04>4<-03>,M10.1.0/0,M3.4.0/0' },
        { 'America/Atikokan', 'EST5' },
-       { 'America/Bahia', 'BRT3' },
+       { 'America/Bahia', '<-03>3' },
        { 'America/Bahia Banderas', 'CST6CDT,M4.1.0,M10.5.0' },
        { 'America/Barbados', 'AST4' },
-       { 'America/Belem', 'BRT3' },
+       { 'America/Belem', '<-03>3' },
        { 'America/Belize', 'CST6' },
        { 'America/Blanc-Sablon', 'AST4' },
-       { 'America/Boa Vista', 'AMT4' },
-       { 'America/Bogota', 'COT5' },
+       { 'America/Boa Vista', '<-04>4' },
+       { 'America/Bogota', '<-05>5' },
        { 'America/Boise', 'MST7MDT,M3.2.0,M11.1.0' },
        { 'America/Cambridge Bay', 'MST7MDT,M3.2.0,M11.1.0' },
-       { 'America/Campo Grande', 'AMT4AMST,M10.3.0/0,M2.3.0/0' },
+       { 'America/Campo Grande', '<-04>4<-03>,M10.3.0/0,M2.3.0/0' },
        { 'America/Cancun', 'EST5' },
-       { 'America/Caracas', 'VET4' },
-       { 'America/Cayenne', 'GFT3' },
+       { 'America/Caracas', '<-04>4' },
+       { 'America/Cayenne', '<-03>3' },
        { 'America/Cayman', 'EST5' },
        { 'America/Chicago', 'CST6CDT,M3.2.0,M11.1.0' },
        { 'America/Chihuahua', 'MST7MDT,M4.1.0,M10.5.0' },
        { 'America/Costa Rica', 'CST6' },
        { 'America/Creston', 'MST7' },
-       { 'America/Cuiaba', 'AMT4AMST,M10.3.0/0,M2.3.0/0' },
+       { 'America/Cuiaba', '<-04>4<-03>,M10.3.0/0,M2.3.0/0' },
        { 'America/Curacao', 'AST4' },
        { 'America/Danmarkshavn', 'GMT0' },
        { 'America/Dawson', 'PST8PDT,M3.2.0,M11.1.0' },
@@ -103,19 +103,19 @@ TZ = {
        { 'America/Detroit', 'EST5EDT,M3.2.0,M11.1.0' },
        { 'America/Dominica', 'AST4' },
        { 'America/Edmonton', 'MST7MDT,M3.2.0,M11.1.0' },
-       { 'America/Eirunepe', 'ACT5' },
+       { 'America/Eirunepe', '<-05>5' },
        { 'America/El Salvador', 'CST6' },
        { 'America/Fort Nelson', 'MST7' },
-       { 'America/Fortaleza', 'BRT3' },
+       { 'America/Fortaleza', '<-03>3' },
        { 'America/Glace Bay', 'AST4ADT,M3.2.0,M11.1.0' },
-       { 'America/Godthab', 'WGT3WGST,M3.5.0/-2,M10.5.0/-1' },
+       { 'America/Godthab', '<-03>3<-02>,M3.5.0/-2,M10.5.0/-1' },
        { 'America/Goose Bay', 'AST4ADT,M3.2.0,M11.1.0' },
        { 'America/Grand Turk', 'AST4' },
        { 'America/Grenada', 'AST4' },
        { 'America/Guadeloupe', 'AST4' },
        { 'America/Guatemala', 'CST6' },
-       { 'America/Guayaquil', 'ECT5' },
-       { 'America/Guyana', 'GYT4' },
+       { 'America/Guayaquil', '<-05>5' },
+       { 'America/Guyana', '<-04>4' },
        { 'America/Halifax', 'AST4ADT,M3.2.0,M11.1.0' },
        { 'America/Havana', 'CST5CDT,M3.2.0/0,M11.1.0/1' },
        { 'America/Hermosillo', 'MST7' },
@@ -134,13 +134,13 @@ TZ = {
        { 'America/Kentucky/Louisville', 'EST5EDT,M3.2.0,M11.1.0' },
        { 'America/Kentucky/Monticello', 'EST5EDT,M3.2.0,M11.1.0' },
        { 'America/Kralendijk', 'AST4' },
-       { 'America/La Paz', 'BOT4' },
-       { 'America/Lima', 'PET5' },
+       { 'America/La Paz', '<-04>4' },
+       { 'America/Lima', '<-05>5' },
        { 'America/Los Angeles', 'PST8PDT,M3.2.0,M11.1.0' },
        { 'America/Lower Princes', 'AST4' },
-       { 'America/Maceio', 'BRT3' },
+       { 'America/Maceio', '<-03>3' },
        { 'America/Managua', 'CST6' },
-       { 'America/Manaus', 'AMT4' },
+       { 'America/Manaus', '<-04>4' },
        { 'America/Marigot', 'AST4' },
        { 'America/Martinique', 'AST4' },
        { 'America/Matamoros', 'CST6CDT,M3.2.0,M11.1.0' },
@@ -149,39 +149,40 @@ TZ = {
        { 'America/Merida', 'CST6CDT,M4.1.0,M10.5.0' },
        { 'America/Metlakatla', 'AKST9AKDT,M3.2.0,M11.1.0' },
        { 'America/Mexico City', 'CST6CDT,M4.1.0,M10.5.0' },
-       { 'America/Miquelon', 'PMST3PMDT,M3.2.0,M11.1.0' },
+       { 'America/Miquelon', '<-03>3<-02>,M3.2.0,M11.1.0' },
        { 'America/Moncton', 'AST4ADT,M3.2.0,M11.1.0' },
        { 'America/Monterrey', 'CST6CDT,M4.1.0,M10.5.0' },
-       { 'America/Montevideo', 'UYT3' },
+       { 'America/Montevideo', '<-03>3' },
        { 'America/Montserrat', 'AST4' },
        { 'America/Nassau', 'EST5EDT,M3.2.0,M11.1.0' },
        { 'America/New York', 'EST5EDT,M3.2.0,M11.1.0' },
        { 'America/Nipigon', 'EST5EDT,M3.2.0,M11.1.0' },
        { 'America/Nome', 'AKST9AKDT,M3.2.0,M11.1.0' },
-       { 'America/Noronha', 'FNT2' },
+       { 'America/Noronha', '<-02>2' },
        { 'America/North Dakota/Beulah', 'CST6CDT,M3.2.0,M11.1.0' },
        { 'America/North Dakota/Center', 'CST6CDT,M3.2.0,M11.1.0' },
        { 'America/North Dakota/New Salem', 'CST6CDT,M3.2.0,M11.1.0' },
        { 'America/Ojinaga', 'MST7MDT,M3.2.0,M11.1.0' },
        { 'America/Panama', 'EST5' },
        { 'America/Pangnirtung', 'EST5EDT,M3.2.0,M11.1.0' },
-       { 'America/Paramaribo', 'SRT3' },
+       { 'America/Paramaribo', '<-03>3' },
        { 'America/Phoenix', 'MST7' },
        { 'America/Port of Spain', 'AST4' },
-       { 'America/Port-au-Prince', 'EST5' },
-       { 'America/Porto Velho', 'AMT4' },
+       { 'America/Port-au-Prince', 'EST5EDT,M3.2.0,M11.1.0' },
+       { 'America/Porto Velho', '<-04>4' },
        { 'America/Puerto Rico', 'AST4' },
+       { 'America/Punta Arenas', '<-03>3' },
        { 'America/Rainy River', 'CST6CDT,M3.2.0,M11.1.0' },
        { 'America/Rankin Inlet', 'CST6CDT,M3.2.0,M11.1.0' },
-       { 'America/Recife', 'BRT3' },
+       { 'America/Recife', '<-03>3' },
        { 'America/Regina', 'CST6' },
        { 'America/Resolute', 'CST6CDT,M3.2.0,M11.1.0' },
-       { 'America/Rio Branco', 'ACT5' },
-       { 'America/Santarem', 'BRT3' },
-       { 'America/Santiago', 'CLT4CLST,M8.2.6/24,M5.2.6/24' },
+       { 'America/Rio Branco', '<-05>5' },
+       { 'America/Santarem', '<-03>3' },
+       { 'America/Santiago', '<-04>4<-03>,M8.2.6/24,M5.2.6/24' },
        { 'America/Santo Domingo', 'AST4' },
-       { 'America/Sao Paulo', 'BRT3BRST,M10.3.0/0,M2.3.0/0' },
-       { 'America/Scoresbysund', 'EGT1EGST,M3.5.0/0,M10.5.0/1' },
+       { 'America/Sao Paulo', '<-03>3<-02>,M10.3.0/0,M2.3.0/0' },
+       { 'America/Scoresbysund', '<-01>1<+00>,M3.5.0/0,M10.5.0/1' },
        { 'America/Sitka', 'AKST9AKDT,M3.2.0,M11.1.0' },
        { 'America/St Barthelemy', 'AST4' },
        { 'America/St Johns', 'NST3:30NDT,M3.2.0,M11.1.0' },
@@ -204,16 +205,16 @@ TZ = {
        { 'Antarctica/Casey', '<+11>-11' },
        { 'Antarctica/Davis', '<+07>-7' },
        { 'Antarctica/DumontDUrville', '<+10>-10' },
-       { 'Antarctica/Macquarie', 'MIST-11' },
+       { 'Antarctica/Macquarie', '<+11>-11' },
        { 'Antarctica/Mawson', '<+05>-5' },
        { 'Antarctica/McMurdo', 'NZST-12NZDT,M9.5.0,M4.1.0/3' },
-       { 'Antarctica/Palmer', 'CLT4CLST,M8.2.6/24,M5.2.6/24' },
+       { 'Antarctica/Palmer', '<-03>3' },
        { 'Antarctica/Rothera', '<-03>3' },
        { 'Antarctica/Syowa', '<+03>-3' },
        { 'Antarctica/Troll', '<+00>0<+02>-2,M3.5.0/1,M10.5.0/3' },
        { 'Antarctica/Vostok', '<+06>-6' },
        { 'Arctic/Longyearbyen', 'CET-1CEST,M3.5.0,M10.5.0/3' },
-       { 'Asia/Aden', 'AST-3' },
+       { 'Asia/Aden', '<+03>-3' },
        { 'Asia/Almaty', '<+06>-6' },
        { 'Asia/Amman', 'EET-2EEST,M3.5.4/24,M10.5.5/1' },
        { 'Asia/Anadyr', '<+12>-12' },
@@ -221,102 +222,129 @@ TZ = {
        { 'Asia/Aqtobe', '<+05>-5' },
        { 'Asia/Ashgabat', '<+05>-5' },
        { 'Asia/Atyrau', '<+05>-5' },
-       { 'Asia/Baghdad', 'AST-3' },
-       { 'Asia/Bahrain', 'AST-3' },
+       { 'Asia/Baghdad', '<+03>-3' },
+       { 'Asia/Bahrain', '<+03>-3' },
        { 'Asia/Baku', '<+04>-4' },
-       { 'Asia/Bangkok', 'ICT-7' },
+       { 'Asia/Bangkok', '<+07>-7' },
        { 'Asia/Barnaul', '<+07>-7' },
        { 'Asia/Beirut', 'EET-2EEST,M3.5.0/0,M10.5.0/0' },
        { 'Asia/Bishkek', '<+06>-6' },
-       { 'Asia/Brunei', 'BNT-8' },
+       { 'Asia/Brunei', '<+08>-8' },
        { 'Asia/Chita', '<+09>-9' },
-       { 'Asia/Choibalsan', 'CHOT-8CHOST,M3.5.6,M9.5.6/0' },
+       { 'Asia/Choibalsan', '<+08>-8' },
        { 'Asia/Colombo', '<+0530>-5:30' },
        { 'Asia/Damascus', 'EET-2EEST,M3.5.5/0,M10.5.5/0' },
-       { 'Asia/Dhaka', 'BDT-6' },
-       { 'Asia/Dili', 'TLT-9' },
-       { 'Asia/Dubai', 'GST-4' },
+       { 'Asia/Dhaka', '<+06>-6' },
+       { 'Asia/Dili', '<+09>-9' },
+       { 'Asia/Dubai', '<+04>-4' },
        { 'Asia/Dushanbe', '<+05>-5' },
        { 'Asia/Famagusta', '<+03>-3' },
        { 'Asia/Gaza', 'EET-2EEST,M3.5.6/1,M10.5.6/1' },
        { 'Asia/Hebron', 'EET-2EEST,M3.5.6/1,M10.5.6/1' },
-       { 'Asia/Ho Chi Minh', 'ICT-7' },
+       { 'Asia/Ho Chi Minh', '<+07>-7' },
        { 'Asia/Hong Kong', 'HKT-8' },
-       { 'Asia/Hovd', 'HOVT-7HOVST,M3.5.6,M9.5.6/0' },
+       { 'Asia/Hovd', '<+07>-7' },
        { 'Asia/Irkutsk', '<+08>-8' },
        { 'Asia/Jakarta', 'WIB-7' },
        { 'Asia/Jayapura', 'WIT-9' },
        { 'Asia/Jerusalem', 'IST-2IDT,M3.4.4/26,M10.5.0' },
-       { 'Asia/Kabul', 'AFT-4:30' },
+       { 'Asia/Kabul', '<+0430>-4:30' },
        { 'Asia/Kamchatka', '<+12>-12' },
        { 'Asia/Karachi', 'PKT-5' },
-       { 'Asia/Kathmandu', 'NPT-5:45' },
+       { 'Asia/Kathmandu', '<+0545>-5:45' },
        { 'Asia/Khandyga', '<+09>-9' },
        { 'Asia/Kolkata', 'IST-5:30' },
        { 'Asia/Krasnoyarsk', '<+07>-7' },
-       { 'Asia/Kuala Lumpur', 'MYT-8' },
-       { 'Asia/Kuching', 'MYT-8' },
-       { 'Asia/Kuwait', 'AST-3' },
+       { 'Asia/Kuala Lumpur', '<+08>-8' },
+       { 'Asia/Kuching', '<+08>-8' },
+       { 'Asia/Kuwait', '<+03>-3' },
        { 'Asia/Macau', 'CST-8' },
        { 'Asia/Magadan', '<+11>-11' },
        { 'Asia/Makassar', 'WITA-8' },
-       { 'Asia/Manila', 'PHT-8' },
-       { 'Asia/Muscat', 'GST-4' },
+       { 'Asia/Manila', '<+08>-8' },
+       { 'Asia/Muscat', '<+04>-4' },
        { 'Asia/Nicosia', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
        { 'Asia/Novokuznetsk', '<+07>-7' },
        { 'Asia/Novosibirsk', '<+07>-7' },
        { 'Asia/Omsk', '<+06>-6' },
        { 'Asia/Oral', '<+05>-5' },
-       { 'Asia/Phnom Penh', 'ICT-7' },
+       { 'Asia/Phnom Penh', '<+07>-7' },
        { 'Asia/Pontianak', 'WIB-7' },
        { 'Asia/Pyongyang', 'KST-8:30' },
-       { 'Asia/Qatar', 'AST-3' },
+       { 'Asia/Qatar', '<+03>-3' },
        { 'Asia/Qyzylorda', '<+06>-6' },
-       { 'Asia/Riyadh', 'AST-3' },
+       { 'Asia/Riyadh', '<+03>-3' },
        { 'Asia/Sakhalin', '<+11>-11' },
        { 'Asia/Samarkand', '<+05>-5' },
        { 'Asia/Seoul', 'KST-9' },
        { 'Asia/Shanghai', 'CST-8' },
-       { 'Asia/Singapore', 'SGT-8' },
+       { 'Asia/Singapore', '<+08>-8' },
        { 'Asia/Srednekolymsk', '<+11>-11' },
        { 'Asia/Taipei', 'CST-8' },
        { 'Asia/Tashkent', '<+05>-5' },
        { 'Asia/Tbilisi', '<+04>-4' },
-       { 'Asia/Tehran', 'IRST-3:30IRDT,J80/0,J264/0' },
-       { 'Asia/Thimphu', 'BTT-6' },
+       { 'Asia/Tehran', '<+0330>-3:30<+0430>,J80/0,J264/0' },
+       { 'Asia/Thimphu', '<+06>-6' },
        { 'Asia/Tokyo', 'JST-9' },
        { 'Asia/Tomsk', '<+07>-7' },
-       { 'Asia/Ulaanbaatar', 'ULAT-8ULAST,M3.5.6,M9.5.6/0' },
-       { 'Asia/Urumqi', 'XJT-6' },
+       { 'Asia/Ulaanbaatar', '<+08>-8' },
+       { 'Asia/Urumqi', '<+06>-6' },
        { 'Asia/Ust-Nera', '<+10>-10' },
-       { 'Asia/Vientiane', 'ICT-7' },
+       { 'Asia/Vientiane', '<+07>-7' },
        { 'Asia/Vladivostok', '<+10>-10' },
        { 'Asia/Yakutsk', '<+09>-9' },
-       { 'Asia/Yangon', 'MMT-6:30' },
+       { 'Asia/Yangon', '<+0630>-6:30' },
        { 'Asia/Yekaterinburg', '<+05>-5' },
        { 'Asia/Yerevan', '<+04>-4' },
-       { 'Atlantic/Azores', 'AZOT1AZOST,M3.5.0/0,M10.5.0/1' },
+       { 'Atlantic/Azores', '<-01>1<+00>,M3.5.0/0,M10.5.0/1' },
        { 'Atlantic/Bermuda', 'AST4ADT,M3.2.0,M11.1.0' },
        { 'Atlantic/Canary', 'WET0WEST,M3.5.0/1,M10.5.0' },
-       { 'Atlantic/Cape Verde', 'CVT1' },
+       { 'Atlantic/Cape Verde', '<-01>1' },
        { 'Atlantic/Faroe', 'WET0WEST,M3.5.0/1,M10.5.0' },
        { 'Atlantic/Madeira', 'WET0WEST,M3.5.0/1,M10.5.0' },
        { 'Atlantic/Reykjavik', 'GMT0' },
-       { 'Atlantic/South Georgia', 'GST2' },
+       { 'Atlantic/South Georgia', '<-02>2' },
        { 'Atlantic/St Helena', 'GMT0' },
-       { 'Atlantic/Stanley', 'FKST3' },
+       { 'Atlantic/Stanley', '<-03>3' },
        { 'Australia/Adelaide', 'ACST-9:30ACDT,M10.1.0,M4.1.0/3' },
        { 'Australia/Brisbane', 'AEST-10' },
        { 'Australia/Broken Hill', 'ACST-9:30ACDT,M10.1.0,M4.1.0/3' },
        { 'Australia/Currie', 'AEST-10AEDT,M10.1.0,M4.1.0/3' },
        { 'Australia/Darwin', 'ACST-9:30' },
-       { 'Australia/Eucla', 'ACWST-8:45' },
+       { 'Australia/Eucla', '<+0845>-8:45' },
        { 'Australia/Hobart', 'AEST-10AEDT,M10.1.0,M4.1.0/3' },
        { 'Australia/Lindeman', 'AEST-10' },
-       { 'Australia/Lord Howe', 'LHST-10:30LHDT-11,M10.1.0,M4.1.0' },
+       { 'Australia/Lord Howe', '<+1030>-10:30<+11>-11,M10.1.0,M4.1.0' },
        { 'Australia/Melbourne', 'AEST-10AEDT,M10.1.0,M4.1.0/3' },
        { 'Australia/Perth', 'AWST-8' },
        { 'Australia/Sydney', 'AEST-10AEDT,M10.1.0,M4.1.0/3' },
+       { 'Etc/GMT', 'GMT0' },
+       { 'Etc/GMT+1', '<-01>1' },
+       { 'Etc/GMT+10', '<-10>10' },
+       { 'Etc/GMT+11', '<-11>11' },
+       { 'Etc/GMT+12', '<-12>12' },
+       { 'Etc/GMT+2', '<-02>2' },
+       { 'Etc/GMT+3', '<-03>3' },
+       { 'Etc/GMT+4', '<-04>4' },
+       { 'Etc/GMT+5', '<-05>5' },
+       { 'Etc/GMT+6', '<-06>6' },
+       { 'Etc/GMT+7', '<-07>7' },
+       { 'Etc/GMT+8', '<-08>8' },
+       { 'Etc/GMT+9', '<-09>9' },
+       { 'Etc/GMT-1', '<+01>-1' },
+       { 'Etc/GMT-10', '<+10>-10' },
+       { 'Etc/GMT-11', '<+11>-11' },
+       { 'Etc/GMT-12', '<+12>-12' },
+       { 'Etc/GMT-13', '<+13>-13' },
+       { 'Etc/GMT-14', '<+14>-14' },
+       { 'Etc/GMT-2', '<+02>-2' },
+       { 'Etc/GMT-3', '<+03>-3' },
+       { 'Etc/GMT-4', '<+04>-4' },
+       { 'Etc/GMT-5', '<+05>-5' },
+       { 'Etc/GMT-6', '<+06>-6' },
+       { 'Etc/GMT-7', '<+07>-7' },
+       { 'Etc/GMT-8', '<+08>-8' },
+       { 'Etc/GMT-9', '<+09>-9' },
        { 'Europe/Amsterdam', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Andorra', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Astrakhan', '<+04>-4' },
@@ -378,53 +406,52 @@ TZ = {
        { 'Europe/Zaporozhye', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
        { 'Europe/Zurich', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Indian/Antananarivo', 'EAT-3' },
-       { 'Indian/Chagos', 'IOT-6' },
-       { 'Indian/Christmas', 'CXT-7' },
-       { 'Indian/Cocos', 'CCT-6:30' },
+       { 'Indian/Chagos', '<+06>-6' },
+       { 'Indian/Christmas', '<+07>-7' },
+       { 'Indian/Cocos', '<+0630>-6:30' },
        { 'Indian/Comoro', 'EAT-3' },
        { 'Indian/Kerguelen', '<+05>-5' },
-       { 'Indian/Mahe', 'SCT-4' },
-       { 'Indian/Maldives', 'MVT-5' },
-       { 'Indian/Mauritius', 'MUT-4' },
+       { 'Indian/Mahe', '<+04>-4' },
+       { 'Indian/Maldives', '<+05>-5' },
+       { 'Indian/Mauritius', '<+04>-4' },
        { 'Indian/Mayotte', 'EAT-3' },
-       { 'Indian/Reunion', 'RET-4' },
-       { 'Pacific/Apia', 'WSST-13WSDT,M9.5.0/3,M4.1.0/4' },
+       { 'Indian/Reunion', '<+04>-4' },
+       { 'Pacific/Apia', '<+13>-13<+14>,M9.5.0/3,M4.1.0/4' },
        { 'Pacific/Auckland', 'NZST-12NZDT,M9.5.0,M4.1.0/3' },
-       { 'Pacific/Bougainville', 'BST-11' },
-       { 'Pacific/Chatham', 'CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45' },
-       { 'Pacific/Chuuk', 'CHUT-10' },
-       { 'Pacific/Easter', 'EAST6EASST,M8.2.6/22,M5.2.6/22' },
-       { 'Pacific/Efate', 'VUT-11' },
-       { 'Pacific/Enderbury', 'PHOT-13' },
-       { 'Pacific/Fakaofo', 'TKT-13' },
-       { 'Pacific/Fiji', 'FJT-12FJST,M11.1.0,M1.3.0/3' },
-       { 'Pacific/Funafuti', 'TVT-12' },
-       { 'Pacific/Galapagos', 'GALT6' },
-       { 'Pacific/Gambier', 'GAMT9' },
-       { 'Pacific/Guadalcanal', 'SBT-11' },
+       { 'Pacific/Bougainville', '<+11>-11' },
+       { 'Pacific/Chatham', '<+1245>-12:45<+1345>,M9.5.0/2:45,M4.1.0/3:45' },
+       { 'Pacific/Chuuk', '<+10>-10' },
+       { 'Pacific/Easter', '<-06>6<-05>,M8.2.6/22,M5.2.6/22' },
+       { 'Pacific/Efate', '<+11>-11' },
+       { 'Pacific/Enderbury', '<+13>-13' },
+       { 'Pacific/Fakaofo', '<+13>-13' },
+       { 'Pacific/Fiji', '<+12>-12<+13>,M11.1.0,M1.3.0/3' },
+       { 'Pacific/Funafuti', '<+12>-12' },
+       { 'Pacific/Galapagos', '<-06>6' },
+       { 'Pacific/Gambier', '<-09>9' },
+       { 'Pacific/Guadalcanal', '<+11>-11' },
        { 'Pacific/Guam', 'ChST-10' },
        { 'Pacific/Honolulu', 'HST10' },
-       { 'Pacific/Johnston', 'HST10' },
-       { 'Pacific/Kiritimati', 'LINT-14' },
-       { 'Pacific/Kosrae', 'KOST-11' },
-       { 'Pacific/Kwajalein', 'MHT-12' },
-       { 'Pacific/Majuro', 'MHT-12' },
-       { 'Pacific/Marquesas', 'MART9:30' },
+       { 'Pacific/Kiritimati', '<+14>-14' },
+       { 'Pacific/Kosrae', '<+11>-11' },
+       { 'Pacific/Kwajalein', '<+12>-12' },
+       { 'Pacific/Majuro', '<+12>-12' },
+       { 'Pacific/Marquesas', '<-0930>9:30' },
        { 'Pacific/Midway', 'SST11' },
-       { 'Pacific/Nauru', 'NRT-12' },
-       { 'Pacific/Niue', 'NUT11' },
-       { 'Pacific/Norfolk', 'NFT-11' },
-       { 'Pacific/Noumea', 'NCT-11' },
+       { 'Pacific/Nauru', '<+12>-12' },
+       { 'Pacific/Niue', '<-11>11' },
+       { 'Pacific/Norfolk', '<+11>-11' },
+       { 'Pacific/Noumea', '<+11>-11' },
        { 'Pacific/Pago Pago', 'SST11' },
-       { 'Pacific/Palau', 'PWT-9' },
-       { 'Pacific/Pitcairn', 'PST8' },
-       { 'Pacific/Pohnpei', 'PONT-11' },
-       { 'Pacific/Port Moresby', 'PGT-10' },
-       { 'Pacific/Rarotonga', 'CKT10' },
+       { 'Pacific/Palau', '<+09>-9' },
+       { 'Pacific/Pitcairn', '<-08>8' },
+       { 'Pacific/Pohnpei', '<+11>-11' },
+       { 'Pacific/Port Moresby', '<+10>-10' },
+       { 'Pacific/Rarotonga', '<-10>10' },
        { 'Pacific/Saipan', 'ChST-10' },
-       { 'Pacific/Tahiti', 'TAHT10' },
-       { 'Pacific/Tarawa', 'GILT-12' },
+       { 'Pacific/Tahiti', '<-10>10' },
+       { 'Pacific/Tarawa', '<+12>-12' },
        { 'Pacific/Tongatapu', '<+13>-13<+14>,M11.1.0,M1.3.0/3' },
-       { 'Pacific/Wake', 'WAKT-12' },
-       { 'Pacific/Wallis', 'WFT-12' },
+       { 'Pacific/Wake', '<+12>-12' },
+       { 'Pacific/Wallis', '<+12>-12' },
 }
index e5da7c6..cf5afeb 100644 (file)
@@ -16,123 +16,30 @@ OFFSET = {
        akst  = -32400, -- AKST
        akdt  = -28800, -- AKDT
        ast   = -14400, -- AST
-       brt   = -10800, -- BRT
-       art   = -10800, -- ART
-       pyt   = -14400, -- PYT
-       pyst  = -10800, -- PYST
        est   = -18000, -- EST
        cst   = -21600, -- CST
        cdt   = -18000, -- CDT
-       amt   = -14400, -- AMT
-       cot   = -18000, -- COT
        mst   = -25200, -- MST
        mdt   = -21600, -- MDT
-       vet   = -14400, -- VET
-       gft   = -10800, -- GFT
        pst   = -28800, -- PST
        pdt   = -25200, -- PDT
-       act   = -18000, -- ACT
-       wgt   = -10800, -- WGT
-       wgst  =  -7200, -- WGST
-       ect   = -18000, -- ECT
-       gyt   = -14400, -- GYT
-       bot   = -14400, -- BOT
-       pet   = -18000, -- PET
-       pmst  = -10800, -- PMST
-       pmdt  =  -7200, -- PMDT
-       uyt   = -10800, -- UYT
-       fnt   =  -7200, -- FNT
-       srt   = -10800, -- SRT
-       clt   = -14400, -- CLT
-       clst  = -10800, -- CLST
-       egt   =  -3600, -- EGT
-       egst  =      0, -- EGST
        nst   = -12600, -- NST
        ndt   =  -9000, -- NDT
-       mist  =  39600, -- MIST
        nzst  =  43200, -- NZST
        nzdt  =  46800, -- NZDT
-       ict   =  25200, -- ICT
-       bnt   =  28800, -- BNT
-       chot  =  28800, -- CHOT
-       chost =  32400, -- CHOST
-       bdt   =  21600, -- BDT
-       tlt   =  32400, -- TLT
-       gst   =  14400, -- GST
        hkt   =  28800, -- HKT
-       hovt  =  25200, -- HOVT
-       hovst =  28800, -- HOVST
        wib   =  25200, -- WIB
        wit   =  32400, -- WIT
        ist   =   7200, -- IST
        idt   =  10800, -- IDT
-       aft   =  16200, -- AFT
        pkt   =  18000, -- PKT
-       npt   =  20700, -- NPT
-       myt   =  28800, -- MYT
        wita  =  28800, -- WITA
-       pht   =  28800, -- PHT
        kst   =  30600, -- KST
-       sgt   =  28800, -- SGT
-       irst  =  12600, -- IRST
-       irdt  =  16200, -- IRDT
-       btt   =  21600, -- BTT
        jst   =  32400, -- JST
-       ulat  =  28800, -- ULAT
-       ulast =  32400, -- ULAST
-       xjt   =  21600, -- XJT
-       mmt   =  23400, -- MMT
-       azot  =  -3600, -- AZOT
-       azost =      0, -- AZOST
-       cvt   =  -3600, -- CVT
-       fkst  = -10800, -- FKST
        acst  =  34200, -- ACST
        acdt  =  37800, -- ACDT
        aest  =  36000, -- AEST
-       acwst =  31500, -- ACWST
-       lhst  =  37800, -- LHST
-       lhdt  =  39600, -- LHDT
        awst  =  28800, -- AWST
        msk   =  10800, -- MSK
-       iot   =  21600, -- IOT
-       cxt   =  25200, -- CXT
-       cct   =  23400, -- CCT
-       sct   =  14400, -- SCT
-       mvt   =  18000, -- MVT
-       mut   =  14400, -- MUT
-       ret   =  14400, -- RET
-       wsst  =  46800, -- WSST
-       wsdt  =  50400, -- WSDT
-       bst   =  39600, -- BST
-       chast =  45900, -- CHAST
-       chadt =  49500, -- CHADT
-       chut  =  36000, -- CHUT
-       east  = -21600, -- EAST
-       easst = -18000, -- EASST
-       vut   =  39600, -- VUT
-       phot  =  46800, -- PHOT
-       tkt   =  46800, -- TKT
-       fjt   =  43200, -- FJT
-       fjst  =  46800, -- FJST
-       tvt   =  43200, -- TVT
-       galt  = -21600, -- GALT
-       gamt  = -32400, -- GAMT
-       sbt   =  39600, -- SBT
-       lint  =  50400, -- LINT
-       kost  =  39600, -- KOST
-       mht   =  43200, -- MHT
-       mart  = -34200, -- MART
        sst   = -39600, -- SST
-       nrt   =  43200, -- NRT
-       nut   = -39600, -- NUT
-       nft   =  39600, -- NFT
-       nct   =  39600, -- NCT
-       pwt   =  32400, -- PWT
-       pont  =  39600, -- PONT
-       pgt   =  36000, -- PGT
-       ckt   = -36000, -- CKT
-       taht  = -36000, -- TAHT
-       gilt  =  43200, -- GILT
-       wakt  =  43200, -- WAKT
-       wft   =  43200, -- WFT
 }
index f72c2a6..def4c10 100644 (file)
@@ -152,6 +152,11 @@ msgstr "Consultes concurrents <abbr title=\"màximes\">max.</abbr>"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Parella: %s / Grup: %s'>%s - %s</abbr>"
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -170,9 +175,6 @@ msgstr ""
 msgid "APN"
 msgstr "APN"
 
-msgid "AR Support"
-msgstr "Suport AR"
-
 msgid "ARP retry threshold"
 msgstr "Llindar de reintent ARP"
 
@@ -414,9 +416,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "Estacions associades"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Controlador sense fils d'Atheros 802.11%s"
-
 msgid "Auth Group"
 msgstr ""
 
@@ -496,9 +495,6 @@ msgstr "Enrere al resum"
 msgid "Back to scan results"
 msgstr "Enrere als resultats de l'escaneig"
 
-msgid "Background Scan"
-msgstr "Escaneig de fons"
-
 msgid "Backup / Flash Firmware"
 msgstr "Còpia de seguretat / Recàrrega de programari"
 
@@ -662,9 +658,6 @@ msgstr "Ordre"
 msgid "Common Configuration"
 msgstr "Configuració comuna"
 
-msgid "Compression"
-msgstr "Compressió"
-
 msgid "Configuration"
 msgstr "Configuració"
 
@@ -882,9 +875,6 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "Inhabilita el temporitzador HW-Beacon"
-
 msgid "Disabled"
 msgstr "Inhabilitat"
 
@@ -929,9 +919,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr ""
 
-msgid "Do not send probe responses"
-msgstr "No enviïs les respostes de prova"
-
 msgid "Domain required"
 msgstr "Es requereix un domini"
 
@@ -1128,9 +1115,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "Fast Frames"
-
 msgid "File"
 msgstr "Fitxer"
 
@@ -1166,6 +1150,9 @@ msgstr "Acaba"
 msgid "Firewall"
 msgstr "Tallafocs"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "Ajusts de tallafocs"
 
@@ -1211,6 +1198,9 @@ msgstr "Força el TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "Força el TKIP i el CCMP (AES)"
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1610,6 +1600,9 @@ msgstr ""
 msgid "Invalid username and/or password! Please try again."
 msgstr "Usuari i/o contrasenya invàlids! Si us plau prova-ho de nou."
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1618,7 +1611,7 @@ msgstr ""
 "Sembla que intentes actualitzar una imatge que no hi cap a la memòria flaix, "
 "si us plau verifica el fitxer d'imatge!"
 
-msgid "Java Script required!"
+msgid "JavaScript required!"
 msgstr "Es requereix JavaScript!"
 
 msgid "Join Network"
@@ -1879,9 +1872,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Velocitat màxima"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -1917,9 +1907,6 @@ msgstr "Ús de Memòria (%)"
 msgid "Metric"
 msgstr "Mètric"
 
-msgid "Minimum Rate"
-msgstr "Velocitat mínima"
-
 msgid "Minimum hold time"
 msgstr ""
 
@@ -1993,9 +1980,6 @@ msgstr "Baixa"
 msgid "Move up"
 msgstr "Puja"
 
-msgid "Multicast Rate"
-msgstr "Velocitat de difusió selectiva"
-
 msgid "Multicast address"
 msgstr "Adreça de difusió selectiva"
 
@@ -2008,6 +1992,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2201,8 +2188,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2239,9 +2231,6 @@ msgstr ""
 msgid "Outbound:"
 msgstr "Sortint:"
 
-msgid "Outdoor Channels"
-msgstr "Canals d'exteriors"
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2421,6 +2410,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2609,9 +2604,6 @@ msgstr "Reconnectant la interfície"
 msgid "References"
 msgstr "Referències"
 
-msgid "Regulatory Domain"
-msgstr "Domini regulatori"
-
 msgid "Relay"
 msgstr "Relé"
 
@@ -2660,15 +2652,15 @@ msgstr "Alguns ISP ho requereixen, per exemple el Charter amb DOCSIS 3"
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2813,9 +2805,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Clients separats"
 
-msgid "Separate WDS"
-msgstr "WDS separat"
-
 msgid "Server Settings"
 msgstr "Ajusts de servidor"
 
@@ -2839,6 +2828,11 @@ msgstr "Tipus de servei"
 msgid "Services"
 msgstr "Serveis"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 #, fuzzy
 msgid "Set up Time Synchronization"
 msgstr "Sincronització de hora"
@@ -2974,9 +2968,6 @@ msgstr "Leases estàtics"
 msgid "Static Routes"
 msgstr "Rutes estàtiques"
 
-msgid "Static WDS"
-msgstr "WDS estàtic"
-
 msgid "Static address"
 msgstr "Adreça estàtica"
 
@@ -3370,9 +3361,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Mode Turbo"
-
 msgid "Tx-Power"
 msgstr "Potència Tx"
 
@@ -3652,9 +3640,6 @@ msgstr "Escriure les peticions DNS rebudes al syslog"
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "Suport XR"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3666,9 +3651,9 @@ msgstr ""
 "dispositiu pot resultar inaccessible!</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
-"Has d'activar el Java Script al teu navegador o LuCI no funcionarà "
+"Has d'activar el JavaScript al teu navegador o LuCI no funcionarà "
 "correctament."
 
 msgid ""
@@ -3841,6 +3826,54 @@ msgstr "sí"
 msgid "« Back"
 msgstr "« Enrere"
 
+#~ msgid "AR Support"
+#~ msgstr "Suport AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Controlador sense fils d'Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "Escaneig de fons"
+
+#~ msgid "Compression"
+#~ msgstr "Compressió"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Inhabilita el temporitzador HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "No enviïs les respostes de prova"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Fast Frames"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Velocitat màxima"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Velocitat mínima"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Velocitat de difusió selectiva"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Canals d'exteriors"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Domini regulatori"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDS separat"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS estàtic"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Mode Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Suport XR"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr "Es crearà una xarxa addicional si deixes això sense marcar."
 
index 3f6a4e1..b76b66c 100644 (file)
@@ -149,6 +149,11 @@ msgstr "Nejvyšší počet souběžných dotazů"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -167,9 +172,6 @@ msgstr ""
 msgid "APN"
 msgstr "APN"
 
-msgid "AR Support"
-msgstr "Podpora AR"
-
 msgid "ARP retry threshold"
 msgstr "ARP limit opakování"
 
@@ -414,9 +416,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "Připojení klienti"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s bezdrátový ovladač"
-
 msgid "Auth Group"
 msgstr ""
 
@@ -495,9 +494,6 @@ msgstr "Zpět k přehledu"
 msgid "Back to scan results"
 msgstr "Zpět k výsledkům vyhledávání"
 
-msgid "Background Scan"
-msgstr "Vyhledávat na pozadí"
-
 msgid "Backup / Flash Firmware"
 msgstr "Zálohovat / nahrát firmware"
 
@@ -666,9 +662,6 @@ msgstr "Příkaz"
 msgid "Common Configuration"
 msgstr "Společná nastavení"
 
-msgid "Compression"
-msgstr "Komprese"
-
 msgid "Configuration"
 msgstr "Nastavení"
 
@@ -888,9 +881,6 @@ msgstr "Zakázat nastavení DNS"
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "Zakázat HW-Beacon časovač"
-
 msgid "Disabled"
 msgstr "Zakázáno"
 
@@ -937,9 +927,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr "Nepřeposílat reverzní dotazy na místní sítě"
 
-msgid "Do not send probe responses"
-msgstr "Neodpovídat na vyhledávání"
-
 msgid "Domain required"
 msgstr "Vyžadována doména"
 
@@ -1140,9 +1127,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "Rychlé rámce"
-
 msgid "File"
 msgstr "Soubor"
 
@@ -1178,6 +1162,9 @@ msgstr "Dokončit"
 msgid "Firewall"
 msgstr "Firewall"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "Nastavení firewallu"
 
@@ -1223,6 +1210,9 @@ msgstr "Vynutit TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "Vynutit TKIP a CCMP (AES)"
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1623,6 +1613,9 @@ msgstr "Uvedené VLAN ID je neplatné! Každé ID musí být jedinečné"
 msgid "Invalid username and/or password! Please try again."
 msgstr "Špatné uživatelské jméno a/nebo heslo! Prosím zkuste to znovu."
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1631,7 +1624,7 @@ msgstr ""
 "Zdá se, že se pokoušíte zapsat obraz, který se nevejde do flash paměti. "
 "Prosím ověřte soubor s obrazem!"
 
-msgid "Java Script required!"
+msgid "JavaScript required!"
 msgstr "Vyžadován JavaScript!"
 
 msgid "Join Network"
@@ -1901,9 +1894,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Nejvyšší míra"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Nejvyšší povolené množství aktivních DHCP zápůjček"
 
@@ -1939,9 +1929,6 @@ msgstr "Využití paměti (%)"
 msgid "Metric"
 msgstr "Metrika"
 
-msgid "Minimum Rate"
-msgstr "Nejnižší hodnota"
-
 msgid "Minimum hold time"
 msgstr "Minimální čas zápůjčky"
 
@@ -2015,9 +2002,6 @@ msgstr "Přesunout dolů"
 msgid "Move up"
 msgstr "Přesunout nahoru"
 
-msgid "Multicast Rate"
-msgstr "Hodnota vícesměrového vysílání"
-
 msgid "Multicast address"
 msgstr "Adresa vícesměrového vysílání"
 
@@ -2030,6 +2014,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2222,8 +2209,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2260,9 +2252,6 @@ msgstr "Ven"
 msgid "Outbound:"
 msgstr "Odchozí:"
 
-msgid "Outdoor Channels"
-msgstr "Venkovní kanály"
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2444,6 +2433,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2647,9 +2642,6 @@ msgstr "Přepojuji rozhraní"
 msgid "References"
 msgstr "Reference"
 
-msgid "Regulatory Domain"
-msgstr "Doména regulátora"
-
 msgid "Relay"
 msgstr "Přenos"
 
@@ -2699,15 +2691,15 @@ msgstr "Vyžadováno u některých ISP, např. Charter s DocSIS 3"
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2853,9 +2845,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Oddělovat klienty"
 
-msgid "Separate WDS"
-msgstr "Oddělovat WDS"
-
 msgid "Server Settings"
 msgstr "Nastavení serveru"
 
@@ -2879,6 +2868,11 @@ msgstr "Typ služby"
 msgid "Services"
 msgstr "Služby"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 #, fuzzy
 msgid "Set up Time Synchronization"
 msgstr "Nastavit synchronizaci času"
@@ -3019,9 +3013,6 @@ msgstr "Statické zápůjčky"
 msgid "Static Routes"
 msgstr "Statické trasy"
 
-msgid "Static WDS"
-msgstr "Statický WDS"
-
 msgid "Static address"
 msgstr "Statická adresa"
 
@@ -3436,9 +3427,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Turbo mód"
-
 msgid "Tx-Power"
 msgstr "Tx-Power"
 
@@ -3724,9 +3712,6 @@ msgstr "Zapisovat přijaté požadavky DNS do systemového logu"
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "Podpora XR"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3737,9 +3722,9 @@ msgstr ""
 "\"network\", vaše zařízení se může stát nepřístupným!</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
-"Aby LuCI fungoval správně, musíte mít v prohlížeči povolený Javascript."
+"Aby LuCI fungoval správně, musíte mít v prohlížeči povolený JavaScript."
 
 msgid ""
 "Your Internet Explorer is too old to display this page correctly. Please "
@@ -3910,6 +3895,54 @@ msgstr "ano"
 msgid "« Back"
 msgstr "« Zpět"
 
+#~ msgid "AR Support"
+#~ msgstr "Podpora AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s bezdrátový ovladač"
+
+#~ msgid "Background Scan"
+#~ msgstr "Vyhledávat na pozadí"
+
+#~ msgid "Compression"
+#~ msgstr "Komprese"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Zakázat HW-Beacon časovač"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Neodpovídat na vyhledávání"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Rychlé rámce"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Nejvyšší míra"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Nejnižší hodnota"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Hodnota vícesměrového vysílání"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Venkovní kanály"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Doména regulátora"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Oddělovat WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "Statický WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo mód"
+
+#~ msgid "XR Support"
+#~ msgstr "Podpora XR"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr "Pokud není zaškrtnuto, bude vytvořena dodatečná síť."
 
index ea2d7c9..5418b78 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-26 17:57+0200\n"
-"PO-Revision-Date: 2013-03-29 12:13+0200\n"
+"PO-Revision-Date: 2017-03-06 11:15+0200\n"
 "Last-Translator: JoeSemler <josef.semler@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: de\n"
@@ -150,6 +150,11 @@ msgstr "<abbr title=\"maximal\">Max.</abbr> Anzahl gleichzeitiger Abfragen"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Paarweise: %s / Gruppe: %s'>%s - %s</abbr>"
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -168,9 +173,6 @@ msgstr ""
 msgid "APN"
 msgstr "APN"
 
-msgid "AR Support"
-msgstr "AR-Unterstützung"
-
 msgid "ARP retry threshold"
 msgstr "Grenzwert für ARP-Auflösungsversuche"
 
@@ -274,9 +276,11 @@ msgid ""
 "Allocate IP addresses sequentially, starting from the lowest available "
 "address"
 msgstr ""
+"IP-Adressen sequenziell vergeben, beginnend mit der kleinsten verfügbaren "
+"Adresse"
 
 msgid "Allocate IP sequentially"
-msgstr ""
+msgstr "IPs sequenziell vergeben"
 
 msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
 msgstr "Erlaube Anmeldung per Passwort"
@@ -413,9 +417,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "Assoziierte Clients"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s W-LAN Adapter"
-
 msgid "Auth Group"
 msgstr ""
 
@@ -494,9 +495,6 @@ msgstr "Zurück zur Übersicht"
 msgid "Back to scan results"
 msgstr "Zurück zu den Scan-Ergebnissen"
 
-msgid "Background Scan"
-msgstr "Hintergrundscan"
-
 msgid "Backup / Flash Firmware"
 msgstr "Backup / Firmware Update"
 
@@ -663,9 +661,6 @@ msgstr "Befehl"
 msgid "Common Configuration"
 msgstr "Allgemeine Konfiguration"
 
-msgid "Compression"
-msgstr "Kompression"
-
 msgid "Configuration"
 msgstr "Konfiguration"
 
@@ -883,9 +878,6 @@ msgstr "DNS-Verarbeitung deaktivieren"
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "Deaktiviere Hardware-Beacon Zeitgeber"
-
 msgid "Disabled"
 msgstr "Deaktiviert"
 
@@ -935,9 +927,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr "Keine Rückwärtsauflösungen für lokale Netzwerke weiterleiten"
 
-msgid "Do not send probe responses"
-msgstr "Scan-Anforderungen nicht beantworten"
-
 msgid "Domain required"
 msgstr "Anfragen nur mit Domain"
 
@@ -1136,9 +1125,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "Schnelle Frames"
-
 msgid "File"
 msgstr "Datei"
 
@@ -1174,6 +1160,9 @@ msgstr "Fertigstellen"
 msgid "Firewall"
 msgstr "Firewall"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "Firewall Einstellungen"
 
@@ -1221,6 +1210,9 @@ msgstr "Erzwinge TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "Erzwinge TKIP und CCMP (AES)"
 
+msgid "Force link"
+msgstr "Erzwinge Verbindung"
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1623,6 +1615,9 @@ msgid "Invalid username and/or password! Please try again."
 msgstr ""
 "Ungültiger Benutzername oder ungültiges Passwort! Bitte erneut versuchen. "
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1631,8 +1626,8 @@ msgstr ""
 "Das verwendete Image scheint zu groß für den internen Flash-Speicher zu "
 "sein. Überprüfen Sie die Imagedatei!"
 
-msgid "Java Script required!"
-msgstr "Java-Script benötigt!"
+msgid "JavaScript required!"
+msgstr "JavaScript benötigt!"
 
 msgid "Join Network"
 msgstr "Netzwerk beitreten"
@@ -1904,9 +1899,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Höchstübertragungsrate"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Maximal zulässige Anzahl von aktiven DHCP-Leases"
 
@@ -1942,9 +1934,6 @@ msgstr "Speichernutzung (%)"
 msgid "Metric"
 msgstr "Metrik"
 
-msgid "Minimum Rate"
-msgstr "Mindestübertragungsrate"
-
 msgid "Minimum hold time"
 msgstr "Minimalzeit zum Halten der Verbindung"
 
@@ -2018,9 +2007,6 @@ msgstr "Nach unten schieben"
 msgid "Move up"
 msgstr "Nach oben schieben"
 
-msgid "Multicast Rate"
-msgstr "Multicastrate"
-
 msgid "Multicast address"
 msgstr "Multicast-Adresse"
 
@@ -2033,6 +2019,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2227,8 +2216,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2265,9 +2259,6 @@ msgstr "Aus"
 msgid "Outbound:"
 msgstr "Ausgehend:"
 
-msgid "Outdoor Channels"
-msgstr "Funkkanal für den Ausseneinsatz"
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2449,6 +2440,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2653,9 +2650,6 @@ msgstr "Verbinde Schnittstelle neu"
 msgid "References"
 msgstr "Verweise"
 
-msgid "Regulatory Domain"
-msgstr "Geltungsbereich (Regulatory Domain)"
-
 msgid "Relay"
 msgstr "Relay"
 
@@ -2705,15 +2699,15 @@ msgstr ""
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2860,9 +2854,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Clients isolieren"
 
-msgid "Separate WDS"
-msgstr "Separates WDS"
-
 msgid "Server Settings"
 msgstr "Servereinstellungen"
 
@@ -2886,6 +2877,14 @@ msgstr "Service-Typ"
 msgid "Services"
 msgstr "Dienste"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+"Schnittstelleneigenschaften werden unabhängig vom Link gesetzt (ist die "
+"Option ausgewählt, so werden die Hotplug-Skripte bei Änderung nicht "
+"aufgerufen)"
+
 #, fuzzy
 msgid "Set up Time Synchronization"
 msgstr "Zeitsynchronisierung einrichten"
@@ -3029,9 +3028,6 @@ msgstr "Statische Einträge"
 msgid "Static Routes"
 msgstr "Statische Routen"
 
-msgid "Static WDS"
-msgstr "Statisches WDS"
-
 msgid "Static address"
 msgstr "Statische Adresse"
 
@@ -3058,10 +3054,11 @@ msgid "Submit"
 msgstr "Absenden"
 
 msgid "Suppress logging"
-msgstr ""
+msgstr "Logeinträge unterdrücken"
 
 msgid "Suppress logging of the routine operation of these protocols"
 msgstr ""
+"Logeinträge für erfolgreiche Operationen dieser Protokolle unterdrücken"
 
 msgid "Swap"
 msgstr ""
@@ -3459,9 +3456,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Turbo Modus"
-
 msgid "Tx-Power"
 msgstr "Sendestärke"
 
@@ -3748,9 +3742,6 @@ msgstr "Empfangene DNS-Anfragen in das Systemprotokoll schreiben"
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "XR-Unterstützung"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3762,9 +3753,9 @@ msgstr ""
 "werden könnte das Gerät unerreichbar werden!</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
-"Im Browser muss Java-Script aktiviert sein oder LuCI wird nicht richtig "
+"Im Browser muss JavaScript aktiviert sein oder LuCI wird nicht richtig "
 "funktionieren."
 
 msgid ""
@@ -3934,6 +3925,54 @@ msgstr "ja"
 msgid "« Back"
 msgstr "« Zurück"
 
+#~ msgid "AR Support"
+#~ msgstr "AR-Unterstützung"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s W-LAN Adapter"
+
+#~ msgid "Background Scan"
+#~ msgstr "Hintergrundscan"
+
+#~ msgid "Compression"
+#~ msgstr "Kompression"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Deaktiviere Hardware-Beacon Zeitgeber"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Scan-Anforderungen nicht beantworten"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Schnelle Frames"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Höchstübertragungsrate"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Mindestübertragungsrate"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicastrate"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Funkkanal für den Ausseneinsatz"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Geltungsbereich (Regulatory Domain)"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Separates WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "Statisches WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo Modus"
+
+#~ msgid "XR Support"
+#~ msgstr "XR-Unterstützung"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr ""
 #~ "Erzeugt ein zusätzliches Netzwerk wenn diese Option nicht ausgewählt ist"
index 8b11a99..4a4f630 100644 (file)
@@ -152,6 +152,11 @@ msgstr "<abbr title=\"μέγιστο\">Μεγ.</abbr> πλήθος ταυτόχ
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr ""
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -170,9 +175,6 @@ msgstr ""
 msgid "APN"
 msgstr "APN"
 
-msgid "AR Support"
-msgstr "Υποστήριξη AR"
-
 msgid "ARP retry threshold"
 msgstr "Όριο επαναδοκιμών ARP"
 
@@ -421,9 +423,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "Συνδεδεμένοι Σταθμοί"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
 msgid "Auth Group"
 msgstr ""
 
@@ -502,9 +501,6 @@ msgstr "Πίσω προς επισκόπηση"
 msgid "Back to scan results"
 msgstr "Πίσω στα αποτελέσματα σάρωσης"
 
-msgid "Background Scan"
-msgstr "Σάρωση Παρασκηνίου"
-
 msgid "Backup / Flash Firmware"
 msgstr "Αντίγραφο ασφαλείας / Εγγραφή FLASH Υλικολογισμικό"
 
@@ -675,9 +671,6 @@ msgstr "Εντολή"
 msgid "Common Configuration"
 msgstr "Κοινή Παραμετροποίηση"
 
-msgid "Compression"
-msgstr "Συμπίεση"
-
 msgid "Configuration"
 msgstr "Παραμετροποίηση"
 
@@ -897,9 +890,6 @@ msgstr "Απενεργοποίηση ρυθμίσεων DNS"
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "Απενεργοποίηση χρονιστή HW-Beacon"
-
 msgid "Disabled"
 msgstr "Απενεργοποιημένο"
 
@@ -948,9 +938,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr ""
 
-msgid "Do not send probe responses"
-msgstr "Να μην στέλνονται απαντήσεις σε probes"
-
 msgid "Domain required"
 msgstr "Απαίτηση για όνομα τομέα"
 
@@ -1153,9 +1140,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "Γρήγορα Πλαίσια"
-
 msgid "File"
 msgstr "Αρχείο"
 
@@ -1191,6 +1175,9 @@ msgstr "Τέλος"
 msgid "Firewall"
 msgstr "Τείχος Προστασίας"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "Ρυθμίσεις Τείχους Προστασίας"
 
@@ -1237,6 +1224,9 @@ msgstr "Επιβολή TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "Επιβολή TKIP και CCMP (AES)"
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1638,6 +1628,9 @@ msgstr ""
 msgid "Invalid username and/or password! Please try again."
 msgstr "Άκυρο όνομα χρήστη και/ή κωδικός πρόσβασης! Παρακαλώ προσπαθήστε ξανά."
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1646,8 +1639,8 @@ msgstr ""
 "Φαίνεται πως προσπαθείτε να φλασάρετε μια εικόνα που δεν χωράει στην μνήμη "
 "flash, παρακαλώ επιβεβαιώστε το αρχείο εικόνας!"
 
-msgid "Java Script required!"
-msgstr "Απαιτείται Javascript!"
+msgid "JavaScript required!"
+msgstr "Απαιτείται JavaScript!"
 
 msgid "Join Network"
 msgstr ""
@@ -1907,9 +1900,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Μέγιστος Ρυθμός"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Μέγιστος επιτρεπόμενος αριθμός ενεργών DHCP leases"
 
@@ -1946,9 +1936,6 @@ msgstr "Χρήση Μνήμης (%)"
 msgid "Metric"
 msgstr "Μέτρο"
 
-msgid "Minimum Rate"
-msgstr "Ελάχιστος Ρυθμός"
-
 msgid "Minimum hold time"
 msgstr "Ελάχιστος χρόνος κράτησης"
 
@@ -2023,9 +2010,6 @@ msgstr "Μετακίνηση κάτω"
 msgid "Move up"
 msgstr "Μετακίνηση πάνω"
 
-msgid "Multicast Rate"
-msgstr "Ρυθμός Multicast"
-
 msgid "Multicast address"
 msgstr "Διεύθυνση Multicast"
 
@@ -2038,6 +2022,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2231,8 +2218,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2269,9 +2261,6 @@ msgstr "Έξοδος"
 msgid "Outbound:"
 msgstr ""
 
-msgid "Outdoor Channels"
-msgstr "Εξωτερικά Κανάλια"
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2451,6 +2440,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2640,9 +2635,6 @@ msgstr "Επανασύνδεση της διεπαφής"
 msgid "References"
 msgstr "Αναφορές"
 
-msgid "Regulatory Domain"
-msgstr "Ρυθμιστική Περιοχή"
-
 msgid "Relay"
 msgstr ""
 
@@ -2691,15 +2683,15 @@ msgstr ""
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2846,9 +2838,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Απομόνωση Πελατών"
 
-msgid "Separate WDS"
-msgstr "Ξεχωριστά WDS"
-
 msgid "Server Settings"
 msgstr "Ρυθμίσεις Εξυπηρετητή"
 
@@ -2872,6 +2861,11 @@ msgstr "Είδος Υπηρεσίας"
 msgid "Services"
 msgstr "Υπηρεσίες"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 msgid "Set up Time Synchronization"
 msgstr ""
 
@@ -3008,9 +3002,6 @@ msgstr "Στατικά Leases"
 msgid "Static Routes"
 msgstr "Στατικές Διαδρομές"
 
-msgid "Static WDS"
-msgstr ""
-
 msgid "Static address"
 msgstr "Στατική διεύθυνση"
 
@@ -3395,9 +3386,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Λειτουργία Turbo"
-
 msgid "Tx-Power"
 msgstr "Ισχύς Εκπομπής"
 
@@ -3675,9 +3663,6 @@ msgstr "Καταγραφή των ληφθέντων DNS αιτήσεων στο
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "Υποστήριξη XR"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3689,7 +3674,7 @@ msgstr ""
 "όπως το \"network\", η συσκευή σας μπορεί να καταστεί μη-προσβάσιμη!</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
 
 msgid ""
@@ -3863,6 +3848,48 @@ msgstr "ναι"
 msgid "« Back"
 msgstr "« Πίσω"
 
+#~ msgid "AR Support"
+#~ msgstr "Υποστήριξη AR"
+
+#~ msgid "Background Scan"
+#~ msgstr "Σάρωση Παρασκηνίου"
+
+#~ msgid "Compression"
+#~ msgstr "Συμπίεση"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Απενεργοποίηση χρονιστή HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Να μην στέλνονται απαντήσεις σε probes"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Γρήγορα Πλαίσια"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Μέγιστος Ρυθμός"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Ελάχιστος Ρυθμός"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Ρυθμός Multicast"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Εξωτερικά Κανάλια"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Ρυθμιστική Περιοχή"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Ξεχωριστά WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Λειτουργία Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Υποστήριξη XR"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr "Ένα επιπλέον δίκτυο θα δημιουργηθεί εάν αυτό αφεθεί κενό"
 
index e11c0fa..e2c8401 100644 (file)
@@ -152,6 +152,11 @@ msgstr "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr ""
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -170,9 +175,6 @@ msgstr ""
 msgid "APN"
 msgstr "APN"
 
-msgid "AR Support"
-msgstr "AR Support"
-
 msgid "ARP retry threshold"
 msgstr "ARP retry threshold"
 
@@ -412,9 +414,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "Associated Stations"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
 msgid "Auth Group"
 msgstr ""
 
@@ -493,9 +492,6 @@ msgstr "Back to overview"
 msgid "Back to scan results"
 msgstr "Back to scan results"
 
-msgid "Background Scan"
-msgstr "Background Scan"
-
 msgid "Backup / Flash Firmware"
 msgstr "Backup / Flash Firmware"
 
@@ -662,9 +658,6 @@ msgstr "Command"
 msgid "Common Configuration"
 msgstr "Common Configuration"
 
-msgid "Compression"
-msgstr "Compression"
-
 msgid "Configuration"
 msgstr "Configuration"
 
@@ -883,9 +876,6 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "Disable HW-Beacon timer"
-
 msgid "Disabled"
 msgstr "Disabled"
 
@@ -930,9 +920,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr ""
 
-msgid "Do not send probe responses"
-msgstr "Do not send probe responses"
-
 msgid "Domain required"
 msgstr "Domain required"
 
@@ -1129,9 +1116,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "Fast Frames"
-
 msgid "File"
 msgstr ""
 
@@ -1167,6 +1151,9 @@ msgstr ""
 msgid "Firewall"
 msgstr "Firewall"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "Firewall Settings"
 
@@ -1212,6 +1199,9 @@ msgstr ""
 msgid "Force TKIP and CCMP (AES)"
 msgstr ""
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1607,6 +1597,9 @@ msgstr ""
 msgid "Invalid username and/or password! Please try again."
 msgstr "Invalid username and/or password! Please try again."
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1615,7 +1608,7 @@ msgstr ""
 "It appears that you try to flash an image that does not fit into the flash "
 "memory, please verify the image file!"
 
-msgid "Java Script required!"
+msgid "JavaScript required!"
 msgstr ""
 
 msgid "Join Network"
@@ -1876,9 +1869,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Maximum Rate"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -1914,9 +1904,6 @@ msgstr "Memory usage (%)"
 msgid "Metric"
 msgstr "Metric"
 
-msgid "Minimum Rate"
-msgstr "Minimum Rate"
-
 msgid "Minimum hold time"
 msgstr "Minimum hold time"
 
@@ -1990,9 +1977,6 @@ msgstr ""
 msgid "Move up"
 msgstr ""
 
-msgid "Multicast Rate"
-msgstr "Multicast Rate"
-
 msgid "Multicast address"
 msgstr ""
 
@@ -2005,6 +1989,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2198,8 +2185,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2236,9 +2228,6 @@ msgstr "Out"
 msgid "Outbound:"
 msgstr ""
 
-msgid "Outdoor Channels"
-msgstr "Outdoor Channels"
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2418,6 +2407,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2606,9 +2601,6 @@ msgstr ""
 msgid "References"
 msgstr "References"
 
-msgid "Regulatory Domain"
-msgstr "Regulatory Domain"
-
 msgid "Relay"
 msgstr ""
 
@@ -2657,15 +2649,15 @@ msgstr ""
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2810,9 +2802,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Separate Clients"
 
-msgid "Separate WDS"
-msgstr "Separate WDS"
-
 msgid "Server Settings"
 msgstr ""
 
@@ -2836,6 +2825,11 @@ msgstr ""
 msgid "Services"
 msgstr "Services"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 msgid "Set up Time Synchronization"
 msgstr ""
 
@@ -2970,9 +2964,6 @@ msgstr "Static Leases"
 msgid "Static Routes"
 msgstr "Static Routes"
 
-msgid "Static WDS"
-msgstr ""
-
 msgid "Static address"
 msgstr ""
 
@@ -3352,9 +3343,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Turbo Mode"
-
 msgid "Tx-Power"
 msgstr ""
 
@@ -3634,9 +3622,6 @@ msgstr ""
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "XR Support"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3647,7 +3632,7 @@ msgstr ""
 "scripts like \"network\", your device might become inaccessible!</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
 
 msgid ""
@@ -3819,6 +3804,48 @@ msgstr ""
 msgid "« Back"
 msgstr "« Back"
 
+#~ msgid "AR Support"
+#~ msgstr "AR Support"
+
+#~ msgid "Background Scan"
+#~ msgstr "Background Scan"
+
+#~ msgid "Compression"
+#~ msgstr "Compression"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Disable HW-Beacon timer"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Do not send probe responses"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Fast Frames"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Maximum Rate"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Minimum Rate"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicast Rate"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Outdoor Channels"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Regulatory Domain"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Separate WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo Mode"
+
+#~ msgid "XR Support"
+#~ msgstr "XR Support"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr "An additional network will be created if you leave this unchecked."
 
index bfc0305..9d39621 100644 (file)
@@ -154,6 +154,11 @@ msgstr "Máximo número de consultas concurrentes"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Pairwise: %s / Grupo: %s'>%s - %s</abbr>"
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -172,9 +177,6 @@ msgstr ""
 msgid "APN"
 msgstr "APN"
 
-msgid "AR Support"
-msgstr "Soporte a AR"
-
 msgid "ARP retry threshold"
 msgstr "Umbral de reintento ARP"
 
@@ -418,9 +420,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "Estaciones asociadas"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Controlador inalámbrico 802.11%s Atheros"
-
 msgid "Auth Group"
 msgstr ""
 
@@ -499,9 +498,6 @@ msgstr "Volver al resumen"
 msgid "Back to scan results"
 msgstr "Volver a resultados de la exploración"
 
-msgid "Background Scan"
-msgstr "Exploración en segundo plano"
-
 msgid "Backup / Flash Firmware"
 msgstr "Copia de seguridad / Grabar firmware"
 
@@ -671,9 +667,6 @@ msgstr "Comando"
 msgid "Common Configuration"
 msgstr "Configuración común"
 
-msgid "Compression"
-msgstr "Compresión"
-
 msgid "Configuration"
 msgstr "Configuración"
 
@@ -894,9 +887,6 @@ msgstr "Desactivar configuración de DNS"
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "Desactivar el temporizador de baliza hardware"
-
 msgid "Disabled"
 msgstr "Desactivar"
 
@@ -943,9 +933,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr "No retransmitir búsquedas inversas para redes locales"
 
-msgid "Do not send probe responses"
-msgstr "No enviar respuestas de prueba"
-
 msgid "Domain required"
 msgstr "Dominio requerido"
 
@@ -1147,9 +1134,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "Tramas rápidas"
-
 msgid "File"
 msgstr "Fichero"
 
@@ -1185,6 +1169,9 @@ msgstr "Terminar"
 msgid "Firewall"
 msgstr "Cortafuegos"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "Configuración del cortafuegos"
 
@@ -1230,6 +1217,9 @@ msgstr "Forzar TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "Forzar TKIP y CCMP (AES)"
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1637,6 +1627,9 @@ msgid "Invalid username and/or password! Please try again."
 msgstr ""
 "¡Nombre de usuario o contraseña no válidos!. Pruebe de nuevo, por favor."
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1645,7 +1638,7 @@ msgstr ""
 "Parece que está intentando grabar una imagen de firmware mayor que la "
 "memoria flash de su equipo. ¡Por favor, verifique el archivo!"
 
-msgid "Java Script required!"
+msgid "JavaScript required!"
 msgstr "¡Se necesita JavaScript!"
 
 msgid "Join Network"
@@ -1915,9 +1908,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Ratio Máximo"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Número máximo de cesiones DHCP activas"
 
@@ -1953,9 +1943,6 @@ msgstr "Uso de memoria (%)"
 msgid "Metric"
 msgstr "Métrica"
 
-msgid "Minimum Rate"
-msgstr "Ratio mínimo"
-
 msgid "Minimum hold time"
 msgstr "Pausa mínima de espera"
 
@@ -2029,9 +2016,6 @@ msgstr "Bajar"
 msgid "Move up"
 msgstr "Subir"
 
-msgid "Multicast Rate"
-msgstr "Ratio multicast"
-
 msgid "Multicast address"
 msgstr "Dirección multicast"
 
@@ -2044,6 +2028,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2236,8 +2223,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2274,9 +2266,6 @@ msgstr "Salida"
 msgid "Outbound:"
 msgstr "Saliente:"
 
-msgid "Outdoor Channels"
-msgstr "Canales al aire libre"
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2458,6 +2447,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2660,9 +2655,6 @@ msgstr "Reconectando la interfaz"
 msgid "References"
 msgstr "Referencias"
 
-msgid "Regulatory Domain"
-msgstr "Dominio Regulador"
-
 msgid "Relay"
 msgstr "Relé"
 
@@ -2711,15 +2703,15 @@ msgstr "Necesario para ciertos ISPs, por ejemplo Charter con DOCSIS 3"
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2866,9 +2858,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Aislar clientes"
 
-msgid "Separate WDS"
-msgstr "WDS aislado"
-
 msgid "Server Settings"
 msgstr "Configuración del servidor"
 
@@ -2892,6 +2881,11 @@ msgstr "Tipo de servicio"
 msgid "Services"
 msgstr "Servicios"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 #, fuzzy
 msgid "Set up Time Synchronization"
 msgstr "Sincronización horaria"
@@ -3035,9 +3029,6 @@ msgstr "Cesiones estáticas"
 msgid "Static Routes"
 msgstr "Rutas estáticas"
 
-msgid "Static WDS"
-msgstr "WDS estático"
-
 msgid "Static address"
 msgstr "Dirección estática"
 
@@ -3461,9 +3452,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Modo Turbo"
-
 msgid "Tx-Power"
 msgstr "Potencia-TX"
 
@@ -3750,9 +3738,6 @@ msgstr "Escribir las peticiones de DNS recibidas en el registro del sistema"
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "Soporte de XR"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3764,9 +3749,9 @@ msgstr ""
 "inaccesible!.</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
-"Debe activar Javascript en su navegador o LuCI no funcionará correctamente."
+"Debe activar JavaScript en su navegador o LuCI no funcionará correctamente."
 
 msgid ""
 "Your Internet Explorer is too old to display this page correctly. Please "
@@ -3938,6 +3923,54 @@ msgstr "sí"
 msgid "« Back"
 msgstr "« Volver"
 
+#~ msgid "AR Support"
+#~ msgstr "Soporte a AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Controlador inalámbrico 802.11%s Atheros"
+
+#~ msgid "Background Scan"
+#~ msgstr "Exploración en segundo plano"
+
+#~ msgid "Compression"
+#~ msgstr "Compresión"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Desactivar el temporizador de baliza hardware"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "No enviar respuestas de prueba"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Tramas rápidas"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Ratio Máximo"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Ratio mínimo"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Ratio multicast"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Canales al aire libre"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Dominio Regulador"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDS aislado"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS estático"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Modo Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Soporte de XR"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr "Se creará una red adicional si deja esto desmarcado."
 
index 8e610fb..7745593 100644 (file)
@@ -153,6 +153,11 @@ msgstr "Maximum de requêtes concurrentes"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -171,9 +176,6 @@ msgstr ""
 msgid "APN"
 msgstr "APN"
 
-msgid "AR Support"
-msgstr "Gestion du mode AR"
-
 msgid "ARP retry threshold"
 msgstr "Niveau de ré-essai ARP"
 
@@ -424,9 +426,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "Équipements associés"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Contrôleur sans fil Atheros 802.11%s "
-
 msgid "Auth Group"
 msgstr ""
 
@@ -505,9 +504,6 @@ msgstr "Retour à la vue générale"
 msgid "Back to scan results"
 msgstr "Retour aux résultats de la recherche"
 
-msgid "Background Scan"
-msgstr "Recherche en arrière-plan"
-
 msgid "Backup / Flash Firmware"
 msgstr "Sauvegarde / Mise à jour du micrologiciel"
 
@@ -678,9 +674,6 @@ msgstr "Commande"
 msgid "Common Configuration"
 msgstr "Configuration commune"
 
-msgid "Compression"
-msgstr "Compression"
-
 msgid "Configuration"
 msgstr "Configuration"
 
@@ -901,9 +894,6 @@ msgstr "Désactiver la configuration DNS"
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "Désactiver l'émission périodique de balises wifi (« HW-Beacon »)"
-
 msgid "Disabled"
 msgstr "Désactivé"
 
@@ -953,9 +943,6 @@ msgid "Do not forward reverse lookups for local networks"
 msgstr ""
 "Ne pas transmettre les requêtes de recherche inverse pour les réseaux locaux"
 
-msgid "Do not send probe responses"
-msgstr "Ne pas envoyer de réponses de test"
-
 msgid "Domain required"
 msgstr "Domaine nécessaire"
 
@@ -1159,9 +1146,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "Trames rapides"
-
 msgid "File"
 msgstr "Fichier"
 
@@ -1197,6 +1181,9 @@ msgstr "Terminer"
 msgid "Firewall"
 msgstr "Pare-feu"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "Paramètres du pare-feu"
 
@@ -1242,6 +1229,9 @@ msgstr "Forcer TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "Forcer TKIP et CCMP (AES)"
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1647,6 +1637,9 @@ msgstr ""
 msgid "Invalid username and/or password! Please try again."
 msgstr "Nom d'utilisateur et/ou mot de passe invalides ! Réessayez !"
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1656,7 +1649,7 @@ msgstr ""
 "tient pas dans sa mémoire flash, vérifiez s'il vous plait votre fichier-"
 "image !"
 
-msgid "Java Script required!"
+msgid "JavaScript required!"
 msgstr "Nécessite un Script Java !"
 
 msgid "Join Network"
@@ -1929,9 +1922,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Débit maximum"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Nombre maximum de baux DHCP actifs"
 
@@ -1967,9 +1957,6 @@ msgstr "Utilisation Mémoire (%)"
 msgid "Metric"
 msgstr "Metrique"
 
-msgid "Minimum Rate"
-msgstr "Débit minimum"
-
 msgid "Minimum hold time"
 msgstr "Temps de maintien mimimum"
 
@@ -2043,9 +2030,6 @@ msgstr "Descendre"
 msgid "Move up"
 msgstr "Monter"
 
-msgid "Multicast Rate"
-msgstr "Débit multidiffusion"
-
 msgid "Multicast address"
 msgstr "Adresse multidiffusion"
 
@@ -2058,6 +2042,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2249,8 +2236,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2287,9 +2279,6 @@ msgstr "Sortie"
 msgid "Outbound:"
 msgstr "Extérieur :"
 
-msgid "Outdoor Channels"
-msgstr "Canaux en extérieur"
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2471,6 +2460,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2673,9 +2668,6 @@ msgstr "Reconnecte cet interface"
 msgid "References"
 msgstr "Références"
 
-msgid "Regulatory Domain"
-msgstr "Domaine de certification"
-
 msgid "Relay"
 msgstr "Relais"
 
@@ -2724,15 +2716,15 @@ msgstr "Nécessaire avec certains FAIs, par ex. : Charter avec DOCSIS 3"
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2880,9 +2872,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Isoler les clients"
 
-msgid "Separate WDS"
-msgstr "WDS séparé"
-
 msgid "Server Settings"
 msgstr "Paramètres du serveur"
 
@@ -2906,6 +2895,11 @@ msgstr "Type du service"
 msgid "Services"
 msgstr "Services"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 #, fuzzy
 msgid "Set up Time Synchronization"
 msgstr "Configurer la synchronisation de l'heure"
@@ -3047,9 +3041,6 @@ msgstr "Baux Statiques"
 msgid "Static Routes"
 msgstr "Routes statiques"
 
-msgid "Static WDS"
-msgstr "WDS statique"
-
 msgid "Static address"
 msgstr "Adresse statique"
 
@@ -3479,9 +3470,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Mode Turbo"
-
 msgid "Tx-Power"
 msgstr "Puissance d'émission"
 
@@ -3769,9 +3757,6 @@ msgstr "Écrire les requêtes DNS reçues dans syslog"
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "Gestion du mode XR"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3783,10 +3768,10 @@ msgstr ""
 "\", votre équipement pourrait ne plus être accessible&#160;!</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
-"Vous devez activer Java Script dans votre navigateur pour que LuCI "
-"fonctionne correctement."
+"Vous devez activer JavaScript dans votre navigateur pour que LuCI fonctionne "
+"correctement."
 
 msgid ""
 "Your Internet Explorer is too old to display this page correctly. Please "
@@ -3956,6 +3941,54 @@ msgstr "oui"
 msgid "« Back"
 msgstr "« Retour"
 
+#~ msgid "AR Support"
+#~ msgstr "Gestion du mode AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Contrôleur sans fil Atheros 802.11%s "
+
+#~ msgid "Background Scan"
+#~ msgstr "Recherche en arrière-plan"
+
+#~ msgid "Compression"
+#~ msgstr "Compression"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Désactiver l'émission périodique de balises wifi (« HW-Beacon »)"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Ne pas envoyer de réponses de test"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Trames rapides"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Débit maximum"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Débit minimum"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Débit multidiffusion"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Canaux en extérieur"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Domaine de certification"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDS séparé"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS statique"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Mode Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Gestion du mode XR"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr "Un réseau supplémentaire sera créé si vous laissé ceci décoché."
 
index 70a1238..4b8eb81 100644 (file)
@@ -143,6 +143,11 @@ msgstr ""
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr ""
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -161,9 +166,6 @@ msgstr ""
 msgid "APN"
 msgstr ""
 
-msgid "AR Support"
-msgstr "תמיכת AR"
-
 #, fuzzy
 msgid "ARP retry threshold"
 msgstr "סף נסיונות של ARP"
@@ -413,9 +415,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "תחנות קשורות"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "שלט אלחוטי Atheros 802.11%s"
-
 msgid "Auth Group"
 msgstr ""
 
@@ -494,9 +493,6 @@ msgstr "חזרה לסקירה"
 msgid "Back to scan results"
 msgstr "חזרה לתוצאות סריקה"
 
-msgid "Background Scan"
-msgstr "סריקת רקע"
-
 msgid "Backup / Flash Firmware"
 msgstr "גיבוי / קושחת פלאש"
 
@@ -655,9 +651,6 @@ msgstr "פקודה"
 msgid "Common Configuration"
 msgstr "הגדרות נפוצות"
 
-msgid "Compression"
-msgstr "דחיסה"
-
 msgid "Configuration"
 msgstr "הגדרות"
 
@@ -875,9 +868,6 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
 msgid "Disabled"
 msgstr ""
 
@@ -918,9 +908,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr ""
 
-msgid "Do not send probe responses"
-msgstr ""
-
 msgid "Domain required"
 msgstr ""
 
@@ -1114,9 +1101,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr ""
-
 msgid "File"
 msgstr ""
 
@@ -1152,6 +1136,9 @@ msgstr ""
 msgid "Firewall"
 msgstr ""
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr ""
 
@@ -1197,6 +1184,9 @@ msgstr ""
 msgid "Force TKIP and CCMP (AES)"
 msgstr ""
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1585,12 +1575,15 @@ msgstr ""
 msgid "Invalid username and/or password! Please try again."
 msgstr "שם משתמש ו/או סיסמה שגויים! אנא נסה שנית."
 
+msgid "Isolate Clients"
+msgstr ""
+
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
 "flash memory, please verify the image file!"
 msgstr ""
 
-msgid "Java Script required!"
+msgid "JavaScript required!"
 msgstr ""
 
 msgid "Join Network"
@@ -1851,9 +1844,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr ""
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -1889,9 +1879,6 @@ msgstr ""
 msgid "Metric"
 msgstr ""
 
-msgid "Minimum Rate"
-msgstr ""
-
 msgid "Minimum hold time"
 msgstr ""
 
@@ -1963,9 +1950,6 @@ msgstr ""
 msgid "Move up"
 msgstr ""
 
-msgid "Multicast Rate"
-msgstr ""
-
 msgid "Multicast address"
 msgstr ""
 
@@ -1978,6 +1962,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2165,8 +2152,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2203,9 +2195,6 @@ msgstr ""
 msgid "Outbound:"
 msgstr ""
 
-msgid "Outdoor Channels"
-msgstr ""
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2385,6 +2374,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2574,9 +2569,6 @@ msgstr ""
 msgid "References"
 msgstr ""
 
-msgid "Regulatory Domain"
-msgstr ""
-
 msgid "Relay"
 msgstr ""
 
@@ -2625,15 +2617,15 @@ msgstr ""
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2776,9 +2768,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr ""
 
-msgid "Separate WDS"
-msgstr ""
-
 msgid "Server Settings"
 msgstr ""
 
@@ -2802,6 +2791,11 @@ msgstr ""
 msgid "Services"
 msgstr "שירותים"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 #, fuzzy
 msgid "Set up Time Synchronization"
 msgstr "סנכרון זמן"
@@ -2939,9 +2933,6 @@ msgstr "הקצאות סטטיות"
 msgid "Static Routes"
 msgstr "ניתובים סטטיים"
 
-msgid "Static WDS"
-msgstr "WDS סטטי"
-
 msgid "Static address"
 msgstr "כתובת סטטית"
 
@@ -3310,9 +3301,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr ""
-
 msgid "Tx-Power"
 msgstr "עוצמת שידור"
 
@@ -3590,9 +3578,6 @@ msgstr ""
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr ""
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3600,8 +3585,8 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
-msgstr "אתה חייב להפעיל את Java Script בדפדפן שלך; אחרת, LuCI לא יפעל כראוי."
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr "אתה חייב להפעיל את JavaScript בדפדפן שלך; אחרת, LuCI לא יפעל כראוי."
 
 msgid ""
 "Your Internet Explorer is too old to display this page correctly. Please "
@@ -3770,6 +3755,21 @@ msgstr "כן"
 msgid "« Back"
 msgstr "<< אחורה"
 
+#~ msgid "AR Support"
+#~ msgstr "תמיכת AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "שלט אלחוטי Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "סריקת רקע"
+
+#~ msgid "Compression"
+#~ msgstr "דחיסה"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS סטטי"
+
 #, fuzzy
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr "רשת נוספת תווצר אם תשאיר את זה לא מסומן"
index 700efd9..4d855e6 100644 (file)
@@ -150,6 +150,11 @@ msgstr "<abbr title=\"maximal\">Max.</abbr> párhuzamos lekérdezés"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -168,9 +173,6 @@ msgstr ""
 msgid "APN"
 msgstr "APN"
 
-msgid "AR Support"
-msgstr "AR Támogatás"
-
 msgid "ARP retry threshold"
 msgstr "ARP újrapróbálkozási küszöbérték"
 
@@ -417,9 +419,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "Kapcsolódó kliensek"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s vezeték-nélküli vezérlő"
-
 msgid "Auth Group"
 msgstr ""
 
@@ -498,9 +497,6 @@ msgstr "Vissza az áttekintéshez"
 msgid "Back to scan results"
 msgstr "Vissza a felderítési eredményekhez"
 
-msgid "Background Scan"
-msgstr "Felderítés a háttérben"
-
 msgid "Backup / Flash Firmware"
 msgstr "Mentés / Firmware frissítés"
 
@@ -673,9 +669,6 @@ msgstr "Parancs"
 msgid "Common Configuration"
 msgstr "Álatános beállítás"
 
-msgid "Compression"
-msgstr "Tömörítés"
-
 msgid "Configuration"
 msgstr "Beállítás"
 
@@ -895,9 +888,6 @@ msgstr "DNS beállítás letiltása"
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "Hardveres beacon időzítő letiltása"
-
 msgid "Disabled"
 msgstr "Letiltva"
 
@@ -944,9 +934,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr "Ne továbbítson fordított keresési kéréseket a helyi hálózathoz"
 
-msgid "Do not send probe responses"
-msgstr "Ne válaszoljon a szondázásra"
-
 msgid "Domain required"
 msgstr "Tartomány szükséges"
 
@@ -1148,9 +1135,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "Gyors keretek"
-
 msgid "File"
 msgstr "Fájl"
 
@@ -1186,6 +1170,9 @@ msgstr "Befejezés"
 msgid "Firewall"
 msgstr "Tűzfal"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "Tűzfal Beállítások"
 
@@ -1233,6 +1220,9 @@ msgstr "TKIP kényszerítése"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "TKIP és CCMP (AES) kényszerítése"
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1637,6 +1627,9 @@ msgstr ""
 msgid "Invalid username and/or password! Please try again."
 msgstr "Érvénytelen felhasználói név és/vagy jelszó! Kérem próbálja újra!"
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1645,8 +1638,8 @@ msgstr ""
 "Úgy tűnik, hogy a flash-elendő kép-file nem fér el a Flash-memóriába. Kérem "
 "ellenőrizze a kép fájlt!"
 
-msgid "Java Script required!"
-msgstr "Javascript szükséges!"
+msgid "JavaScript required!"
+msgstr "JavaScript szükséges!"
 
 msgid "Join Network"
 msgstr "Csatlakozás a hálózathoz"
@@ -1918,9 +1911,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Maximális sebesség"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Aktív DHCP bérletek maximális száma"
 
@@ -1956,9 +1946,6 @@ msgstr "Memória használat (%)"
 msgid "Metric"
 msgstr "Metrika"
 
-msgid "Minimum Rate"
-msgstr "Minimális sebesség"
-
 msgid "Minimum hold time"
 msgstr "Minimális tartási idő"
 
@@ -2032,9 +2019,6 @@ msgstr "Mozgatás lefelé"
 msgid "Move up"
 msgstr "Mozgatás felfelé"
 
-msgid "Multicast Rate"
-msgstr "Multicast sebesség"
-
 msgid "Multicast address"
 msgstr "Multicast cím"
 
@@ -2047,6 +2031,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2239,8 +2226,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2277,9 +2269,6 @@ msgstr "Ki"
 msgid "Outbound:"
 msgstr "Kimenő:"
 
-msgid "Outdoor Channels"
-msgstr "Kültéri csatornák"
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2461,6 +2450,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2664,9 +2659,6 @@ msgstr "Interfész újracsatlakoztatása"
 msgid "References"
 msgstr "Hivatkozások"
 
-msgid "Regulatory Domain"
-msgstr "Szabályozó tartomány"
-
 msgid "Relay"
 msgstr "Átjátszás"
 
@@ -2716,15 +2708,15 @@ msgstr ""
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2871,9 +2863,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Kliensek szétválasztása"
 
-msgid "Separate WDS"
-msgstr "WDS szétválasztása"
-
 msgid "Server Settings"
 msgstr "Kiszolgáló beállításai"
 
@@ -2897,6 +2886,11 @@ msgstr "Szolgáltatás típusa"
 msgid "Services"
 msgstr "Szolgáltatások"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 #, fuzzy
 msgid "Set up Time Synchronization"
 msgstr "Idő szinkronizálás beállítása"
@@ -3038,9 +3032,6 @@ msgstr "Statikus bérletek"
 msgid "Static Routes"
 msgstr "Statikus útvonalak"
 
-msgid "Static WDS"
-msgstr "Statikus WDS"
-
 msgid "Static address"
 msgstr "Statikus cím"
 
@@ -3467,9 +3458,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Turbó mód"
-
 msgid "Tx-Power"
 msgstr "Adóteljesítmény"
 
@@ -3756,9 +3744,6 @@ msgstr "A kapott DNS kéréseket írja a rendszernaplóba"
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "XR támogatás"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3770,7 +3755,7 @@ msgstr ""
 "esetén, az eszköz elérhetetlenné válhat!</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
 "Engélyezze a Java Szkripteket a böngészőjében, mert anélkül a LuCI nem fog "
 "megfelelően működni."
@@ -3944,6 +3929,54 @@ msgstr "igen"
 msgid "« Back"
 msgstr "« Vissza"
 
+#~ msgid "AR Support"
+#~ msgstr "AR Támogatás"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s vezeték-nélküli vezérlő"
+
+#~ msgid "Background Scan"
+#~ msgstr "Felderítés a háttérben"
+
+#~ msgid "Compression"
+#~ msgstr "Tömörítés"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Hardveres beacon időzítő letiltása"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Ne válaszoljon a szondázásra"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Gyors keretek"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Maximális sebesség"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Minimális sebesség"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicast sebesség"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Kültéri csatornák"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Szabályozó tartomány"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDS szétválasztása"
+
+#~ msgid "Static WDS"
+#~ msgstr "Statikus WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbó mód"
+
+#~ msgid "XR Support"
+#~ msgstr "XR támogatás"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr "Amennyiben ezt jelöletlenül hagyja, egy további hálózat jön létre"
 
index 06ae794..8b6c2d3 100644 (file)
@@ -155,6 +155,11 @@ msgstr "<abbr title=\"maximal\">Max.</abbr> Richiesta in uso"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Accoppiata: %s / Gruppo: %s'>%s - %s</abbr>"
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -173,9 +178,6 @@ msgstr ""
 msgid "APN"
 msgstr "APN"
 
-msgid "AR Support"
-msgstr "Supporto AR"
-
 msgid "ARP retry threshold"
 msgstr "riprova soglia ARP"
 
@@ -424,9 +426,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "Dispositivi Wi-Fi connessi"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Dispositivo Wireless Atheros 802.11%s"
-
 msgid "Auth Group"
 msgstr ""
 
@@ -505,9 +504,6 @@ msgstr "Ritorna alla panoramica"
 msgid "Back to scan results"
 msgstr "Ritorno ai risultati della scansione"
 
-msgid "Background Scan"
-msgstr "Scansione in background"
-
 msgid "Backup / Flash Firmware"
 msgstr "Copia di Sicurezza / Flash Firmware"
 
@@ -676,9 +672,6 @@ msgstr "Comando"
 msgid "Common Configuration"
 msgstr "Configurazioni Comuni"
 
-msgid "Compression"
-msgstr "Compressione"
-
 msgid "Configuration"
 msgstr "Configurazione"
 
@@ -899,9 +892,6 @@ msgstr "Disabilita il setup dei DNS"
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "Disabilita Timer Beacon HW"
-
 msgid "Disabled"
 msgstr "Disabilitato"
 
@@ -947,9 +937,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr "Non proseguire con le ricerche inverse per le reti locali."
 
-msgid "Do not send probe responses"
-msgstr "Disabilita Probe-Responses"
-
 msgid "Domain required"
 msgstr "Dominio richiesto"
 
@@ -1150,9 +1137,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "Frame veloci"
-
 msgid "File"
 msgstr "File"
 
@@ -1188,6 +1172,9 @@ msgstr "Fine"
 msgid "Firewall"
 msgstr "Firewall"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "Impostazioni Firewall"
 
@@ -1233,6 +1220,9 @@ msgstr "Forza TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "Forza TKIP e CCMP (AES)"
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1639,6 +1629,9 @@ msgstr "ID VLAN non valido! Solo gli ID unici sono consentiti"
 msgid "Invalid username and/or password! Please try again."
 msgstr "Username o password non validi! Per favore riprova."
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1647,8 +1640,8 @@ msgstr ""
 "Sembra tu stia provando a flashare un'immagine più grande delle dimensioni "
 "della memoria flash, per favore controlla il file!"
 
-msgid "Java Script required!"
-msgstr "Richiesto Java Script!"
+msgid "JavaScript required!"
+msgstr "Richiesto JavaScript!"
 
 msgid "Join Network"
 msgstr "Aggiungi Rete"
@@ -1916,9 +1909,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Velocità massima"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -1954,9 +1944,6 @@ msgstr "Uso Memory (%)"
 msgid "Metric"
 msgstr "Metrica"
 
-msgid "Minimum Rate"
-msgstr "Velocità minima"
-
 msgid "Minimum hold time"
 msgstr "Velocità minima"
 
@@ -2030,9 +2017,6 @@ msgstr ""
 msgid "Move up"
 msgstr ""
 
-msgid "Multicast Rate"
-msgstr "Velocità multicast"
-
 msgid "Multicast address"
 msgstr ""
 
@@ -2045,6 +2029,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2237,8 +2224,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2275,9 +2267,6 @@ msgstr ""
 msgid "Outbound:"
 msgstr "In uscita:"
 
-msgid "Outdoor Channels"
-msgstr ""
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2457,6 +2446,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2648,9 +2643,6 @@ msgstr "Sto ricollegando l'interfaccia"
 msgid "References"
 msgstr ""
 
-msgid "Regulatory Domain"
-msgstr ""
-
 msgid "Relay"
 msgstr ""
 
@@ -2699,15 +2691,15 @@ msgstr ""
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2852,9 +2844,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Isola utenti"
 
-msgid "Separate WDS"
-msgstr "WDS separati"
-
 msgid "Server Settings"
 msgstr ""
 
@@ -2878,6 +2867,11 @@ msgstr ""
 msgid "Services"
 msgstr "Servizi"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 msgid "Set up Time Synchronization"
 msgstr ""
 
@@ -3020,9 +3014,6 @@ msgstr "Leases statici"
 msgid "Static Routes"
 msgstr "Instradamenti Statici"
 
-msgid "Static WDS"
-msgstr "WDS statico"
-
 msgid "Static address"
 msgstr "Indirizzo Statico"
 
@@ -3418,9 +3409,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Modalità turbo"
-
 msgid "Tx-Power"
 msgstr ""
 
@@ -3707,9 +3695,6 @@ msgstr "Scrittura delle richiesta DNS ricevute nel syslog"
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "Supporto XR"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3722,9 +3707,9 @@ msgstr ""
 "potrebbe diventare inaccessibile!</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
-"È necessario attivare Java Script nel tuo browser o LuCI non funzionerà "
+"È necessario attivare JavaScript nel tuo browser o LuCI non funzionerà "
 "correttamente."
 
 msgid ""
@@ -3897,6 +3882,48 @@ msgstr "Sì"
 msgid "« Back"
 msgstr "« Indietro"
 
+#~ msgid "AR Support"
+#~ msgstr "Supporto AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Dispositivo Wireless Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "Scansione in background"
+
+#~ msgid "Compression"
+#~ msgstr "Compressione"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Disabilita Timer Beacon HW"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Disabilita Probe-Responses"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Frame veloci"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Velocità massima"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Velocità minima"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Velocità multicast"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDS separati"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS statico"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Modalità turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Supporto XR"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr "Sarà creata una rete aggiuntiva se lasci questo senza spunta."
 
index f6ac3be..3101e05 100644 (file)
@@ -3,14 +3,14 @@ msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2017-02-11 03:28+0900\n"
+"PO-Revision-Date: 2017-04-03 02:32+0900\n"
 "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
 "Language: ja\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.0\n"
 "Language-Team: \n"
 
 msgid "%s is untagged in multiple VLANs!"
@@ -38,13 +38,13 @@ msgid "-- custom --"
 msgstr "-- 手動設定 --"
 
 msgid "-- match by device --"
-msgstr "-- ã\83\87ã\83\90ã\82¤ã\82¹ã\81§è¨­定 --"
+msgstr "-- ã\83\87ã\83\90ã\82¤ã\82¹ã\82\92æ\8c\87定 --"
 
 msgid "-- match by label --"
-msgstr "-- ã\83©ã\83\99ã\83«ã\81§è¨­定 --"
+msgstr "-- ã\83©ã\83\99ã\83«ã\82\92æ\8c\87定 --"
 
 msgid "-- match by uuid --"
-msgstr "-- UUIDã\81§è¨­定 --"
+msgstr "-- UUIDã\82\92æ\8c\87定 --"
 
 msgid "1 Minute Load:"
 msgstr "過去1分の負荷:"
@@ -56,7 +56,7 @@ msgid "4-character hexadecimal ID"
 msgstr ""
 
 msgid "464XLAT (CLAT)"
-msgstr ""
+msgstr "464XLAT (CLAT)"
 
 msgid "5 Minute Load:"
 msgstr "過去5分の負荷:"
@@ -65,7 +65,7 @@ msgid "6-octet identifier as a hex string - no colons"
 msgstr ""
 
 msgid "802.11r Fast Transition"
-msgstr ""
+msgstr "802.11r 高速ローミング"
 
 msgid "802.11w Association SA Query maximum timeout"
 msgstr "802.11w アソシエーションSAクエリの最大タイムアウト時間です。"
@@ -153,6 +153,11 @@ msgstr "<abbr title=\"maximal\">最大</abbr> 並列処理クエリ"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr ""
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -171,9 +176,6 @@ msgstr ""
 msgid "APN"
 msgstr "APN"
 
-msgid "AR Support"
-msgstr "ARサポート"
-
 msgid "ARP retry threshold"
 msgstr "ARP再試行しきい値"
 
@@ -228,7 +230,7 @@ msgstr ""
 "稼働中の <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-経路情報"
 
 msgid "Active Connections"
-msgstr "アクティブコネクション"
+msgstr "アクティブ コネクション"
 
 msgid "Active DHCP Leases"
 msgstr "アクティブなDHCPリース"
@@ -258,7 +260,7 @@ msgid "Address"
 msgstr "アドレス"
 
 msgid "Address to access local relay bridge"
-msgstr "ローカルリレーブリッジにアクセスするためのIPアドレス"
+msgstr "ローカル リレーブリッジにアクセスするためのIPアドレス"
 
 msgid "Administration"
 msgstr "管理画面"
@@ -414,9 +416,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "認証済み端末"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s 無線LANコントローラ"
-
 msgid "Auth Group"
 msgstr "認証グループ"
 
@@ -445,7 +444,7 @@ msgid "Automatic Homenet (HNCP)"
 msgstr ""
 
 msgid "Automatically check filesystem for errors before mounting"
-msgstr "マウント実行前にファイルシステムのエラーを自動チェックします。"
+msgstr "マウント実行前にファイルシステムのエラーを自動的にチェックします。"
 
 msgid "Automatically mount filesystems on hotplug"
 msgstr "ホットプラグによってファイルシステムを自動的にマウントします。"
@@ -495,9 +494,6 @@ msgstr "概要へ戻る"
 msgid "Back to scan results"
 msgstr "スキャン結果へ戻る"
 
-msgid "Background Scan"
-msgstr "バックグラウンドスキャン"
-
 msgid "Backup / Flash Firmware"
 msgstr "バックアップ / ファームウェア更新"
 
@@ -505,7 +501,7 @@ msgid "Backup / Restore"
 msgstr "バックアップ / 復元"
 
 msgid "Backup file list"
-msgstr "ã\83\90ã\83\83ã\82¯ã\82¢ã\83\83ã\83\97ã\83»ã\83\95ã\82¡ã\82¤ã\83«リスト"
+msgstr "ã\83\90ã\83\83ã\82¯ã\82¢ã\83\83ã\83\97ã\83\95ã\82¡ã\82¤ã\83« リスト"
 
 msgid "Bad address specified!"
 msgstr "無効なアドレスです!"
@@ -521,9 +517,9 @@ msgid ""
 "configuration files marked by opkg, essential base files and the user "
 "defined backup patterns."
 msgstr ""
-"以ä¸\8bã\81¯ã\83\90ã\83\83ã\82¯ã\82¢ã\83\83ã\83\97ã\81®é\9a\9bã\81«å\90«ã\81¾ã\82\8cã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\83ªã\82¹ã\83\88ã\81§ã\81\99ã\80\82ã\81\93ã\81®ã\83ªã\82¹ã\83\88ã\81¯ã\80\81opkgã\81«ã\82\88ã\81£"
-"ã\81¦èª\8dè­\98ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8b設å®\9aã\83\95ã\82¡ã\82¤ã\83«ã\80\81é\87\8dè¦\81ã\81ªã\83\99ã\83¼ã\82¹ã\83\95ã\82¡ã\82¤ã\83«ã\80\81ã\83¦ã\83¼ã\82¶ã\83¼ã\81\8c設å®\9aã\81\97ã\81\9fæ­£è¦\8f表"
-"現に一致したファイルの一覧です。"
+"以ä¸\8bã\81¯ã\80\81ã\83\90ã\83\83ã\82¯ã\82¢ã\83\83ã\83\97ã\81®é\9a\9bã\81«å\90«ã\81¾ã\82\8cã\82\8bã\83\95ã\82¡ã\82¤ã\83«ã\81®ã\83ªã\82¹ã\83\88ã\81§ã\81\99ã\80\82ã\81\93ã\81®ã\83ªã\82¹ã\83\88ã\81¯ã\80\81opkgã\81«"
+"ã\82\88ã\81£ã\81¦èª\8dè­\98ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8b設å®\9aã\83\95ã\82¡ã\82¤ã\83«ã\80\81é\87\8dè¦\81ã\81ªã\83\99ã\83¼ã\82¹ã\83\95ã\82¡ã\82¤ã\83«ã\80\81ã\83¦ã\83¼ã\82¶ã\83¼ã\81\8c設å®\9aã\81\97ã\81\9fæ­£"
+"規表現に一致したファイルの一覧です。"
 
 msgid "Bind interface"
 msgstr ""
@@ -545,10 +541,10 @@ msgid "Bridge"
 msgstr "ブリッジ"
 
 msgid "Bridge interfaces"
-msgstr "ブリッジインターフェース"
+msgstr "ブリッジ インターフェース"
 
 msgid "Bridge unit number"
-msgstr "ブリッジユニット番号"
+msgstr "ブリッジ ユニット番号"
 
 msgid "Bring up on boot"
 msgstr "デフォルトで起動する"
@@ -573,7 +569,7 @@ msgid "Buttons"
 msgstr "ボタン"
 
 msgid "CA certificate; if empty it will be saved after the first connection."
-msgstr ""
+msgstr "CA証明書(空白の場合、初回の接続後に保存されます。)"
 
 msgid "CPU usage (%)"
 msgstr "CPU使用率 (%)"
@@ -618,10 +614,10 @@ msgid ""
 "fill out the <em>create</em> field to define a new zone and attach the "
 "interface to it."
 msgstr ""
-"このインターフェースに設定するファイウォール・ゾーンを選択してください。<em>"
-"設定しない</em>を選択すると、設定済みのゾーンを削除します。また、<em>作成</"
-"em>フィールドにゾーン名を入力すると、新しくゾーンを作成し、このインターフェー"
-"ã\82¹ã\81«è¨­å®\9aã\81\97ã\81¾ã\81\99ã\80\82"
+"このインターフェースに設定するファイウォール ゾーンを選択してください。<em>設"
+"定しない</em>を選択すると、設定済みのゾーンを削除します。また、<em>作成</em>"
+"フィールドにゾーン名を入力すると、新しくゾーンを作成し、このインターフェース"
+"に設定します。"
 
 msgid ""
 "Choose the network(s) you want to attach to this wireless interface or fill "
@@ -641,10 +637,10 @@ msgid ""
 "configuration files. To reset the firmware to its initial state, click "
 "\"Perform reset\" (only possible with squashfs images)."
 msgstr ""
-"\"バックアップアーカイブの作成\"をクリックすると、現在の設定ファイルをtar形式"
-"のアーカイブファイルとしてダウンロードします。設定のリセットを行う場合、\"設"
-"å®\9aã\83ªã\82»ã\83\83ã\83\88\"ã\82\92ã\82¯ã\83ªã\83\83ã\82¯ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82\81\9fã\81 ã\81\97ã\80\81squashfsã\82\92ã\81\8a使ã\81\84ã\81®å ´å\90\88ã\81®ã\81¿ä½¿ç\94¨å\8f¯"
-"能です)"
+"\"バックアップ アーカイブの作成\"をクリックすると、現在の設定ファイルをtar形"
+"式のアーカイブファイルとしてダウンロードします。設定のリセットを行う場"
+"å\90\88ã\80\81\"設å®\9aã\83ªã\82»ã\83\83ã\83\88\"ã\82\92ã\82¯ã\83ªã\83\83ã\82¯ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82\81\9fã\81 ã\81\97ã\80\81squashfsã\82\92ã\81\8a使ã\81\84ã\81®å ´å\90\88ã\81®"
+"み使用可能です)"
 
 msgid "Client"
 msgstr "クライアント"
@@ -671,9 +667,6 @@ msgstr "コマンド"
 msgid "Common Configuration"
 msgstr "一般設定"
 
-msgid "Compression"
-msgstr "圧縮"
-
 msgid "Configuration"
 msgstr "設定"
 
@@ -714,7 +707,7 @@ msgid "Cover the following interfaces"
 msgstr "インターフェースの指定"
 
 msgid "Create / Assign firewall-zone"
-msgstr "ファイアウォールゾーンの作成 / 割り当て"
+msgstr "ファイアウォール ゾーンの作成 / 割り当て"
 
 msgid "Create Interface"
 msgstr "インターフェースの作成"
@@ -788,7 +781,7 @@ msgid "DNS-Label / FQDN"
 msgstr ""
 
 msgid "DNSSEC"
-msgstr ""
+msgstr "DNSSEC"
 
 msgid "DNSSEC check unsigned"
 msgstr ""
@@ -803,7 +796,7 @@ msgid "DSL"
 msgstr "DSL"
 
 msgid "DSL Status"
-msgstr ""
+msgstr "DSL ステータス"
 
 msgid "DSL line mode"
 msgstr ""
@@ -821,7 +814,7 @@ msgid "Default %d"
 msgstr "標準設定 %d"
 
 msgid "Default gateway"
-msgstr "デフォルトゲートウェイ"
+msgstr "デフォルト ゲートウェイ"
 
 msgid "Default is stateless + stateful"
 msgstr "デフォルトは ステートレス + ステートフル です。"
@@ -895,9 +888,6 @@ msgstr "DNSセットアップを無効にする"
 msgid "Disable Encryption"
 msgstr "暗号化を無効にする"
 
-msgid "Disable HW-Beacon timer"
-msgstr "HWビーコンタイマーを無効にする"
-
 msgid "Disabled"
 msgstr "無効"
 
@@ -908,7 +898,7 @@ msgid "Discard upstream RFC1918 responses"
 msgstr "RFC1918の応答を破棄します"
 
 msgid "Displaying only packages containing"
-msgstr "右記の表示を含んだパッケージのみを表示中"
+msgstr "右記の文字列を含んだパッケージのみを表示中"
 
 msgid "Distance Optimization"
 msgstr "距離の最適化"
@@ -938,19 +928,16 @@ msgstr ""
 "無効なリプライをキャッシュしません (例:存在しないドメインからの返答など)"
 
 msgid "Do not forward requests that cannot be answered by public name servers"
-msgstr "パブリックDNSサーバーが返答できなかったリクエストを転送しません"
+msgstr "パブリック DNSサーバーが返答できなかったリクエストを転送しません"
 
 msgid "Do not forward reverse lookups for local networks"
-msgstr "ローカルネットワークへの逆引きを転送しません"
-
-msgid "Do not send probe responses"
-msgstr "プローブレスポンスを送信しない"
+msgstr "ローカル ネットワークへの逆引きを転送しません"
 
 msgid "Domain required"
 msgstr "ドメイン必須"
 
 msgid "Domain whitelist"
-msgstr "ドメインホワイトリスト"
+msgstr "ドメイン ホワイトリスト"
 
 msgid "Don't Fragment"
 msgstr ""
@@ -966,7 +953,7 @@ msgid "Download and install package"
 msgstr "パッケージのダウンロードとインストール"
 
 msgid "Download backup"
-msgstr "バックアップアーカイブのダウンロード"
+msgstr "バックアップ アーカイブのダウンロード"
 
 msgid "Dropbear Instance"
 msgstr "Dropbear設定"
@@ -983,8 +970,7 @@ msgid "Dual-Stack Lite (RFC6333)"
 msgstr "Dual-Stack Lite (RFC6333)"
 
 msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
-msgstr ""
-"ダイナミック <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr "動的 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
 
 msgid "Dynamic tunnel"
 msgstr "動的トンネル機能"
@@ -1032,10 +1018,10 @@ msgid "Enable IPv6 negotiation"
 msgstr "IPv6 ネゴシエーションの有効化"
 
 msgid "Enable IPv6 negotiation on the PPP link"
-msgstr "PPPリンクのIPv6ネゴシエーションを有効にする"
+msgstr "PPPリンクのIPv6 ネゴシエーションを有効にする"
 
 msgid "Enable Jumbo Frame passthrough"
-msgstr "ジャンボフレームパススルーを有効にする"
+msgstr "ジャンボフレーム パススルーを有効にする"
 
 msgid "Enable NTP client"
 msgstr "NTPクライアント機能を有効にする"
@@ -1053,7 +1039,7 @@ msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr "WPS プッシュボタンを有効化するには、WPA(2)-PSKが必要です。"
 
 msgid "Enable learning and aging"
-msgstr "ラーニングエイジング機能を有効にする"
+msgstr "ラーニング エイジング機能を有効にする"
 
 msgid "Enable mirroring of incoming packets"
 msgstr ""
@@ -1082,7 +1068,7 @@ msgid ""
 msgstr ""
 
 msgid "Enables the Spanning Tree Protocol on this bridge"
-msgstr "スパニングツリープロトコルを有効にする"
+msgstr "スパニングツリー プロトコルを有効にする"
 
 msgid "Encapsulation mode"
 msgstr "カプセル化モード"
@@ -1136,10 +1122,10 @@ msgid "External R1 Key Holder List"
 msgstr ""
 
 msgid "External system log server"
-msgstr "外部システムログサーバー"
+msgstr "外部システムログ サーバー"
 
 msgid "External system log server port"
-msgstr "外部システムログ・サーバーポート"
+msgstr "外部システムログ・サーバー ポート"
 
 msgid "External system log server protocol"
 msgstr "外部システムログ・サーバー プロトコル"
@@ -1147,9 +1133,6 @@ msgstr "外部システムログ・サーバー プロトコル"
 msgid "Extra SSH command options"
 msgstr "拡張 SSHコマンドオプション"
 
-msgid "Fast Frames"
-msgstr "ファスト・フレーム"
-
 msgid "File"
 msgstr "ファイル"
 
@@ -1166,7 +1149,7 @@ msgid "Filter private"
 msgstr "プライベートフィルター"
 
 msgid "Filter useless"
-msgstr "Filter useless"
+msgstr ""
 
 msgid ""
 "Find all currently attached filesystems and swap and replace configuration "
@@ -1176,7 +1159,7 @@ msgstr ""
 "づいてデフォルト設定を置き換えます。"
 
 msgid "Find and join network"
-msgstr "ã\83\8dã\83\83ã\83\88ã\83¯ã\83¼ã\82¯ã\82\92æ¤\9cç´¢ã\81\97ã\81¦参加"
+msgstr "ã\83\8dã\83\83ã\83\88ã\83¯ã\83¼ã\82¯ã\81®æ¤\9cç´¢ã\81¨参加"
 
 msgid "Find package"
 msgstr "パッケージを検索"
@@ -1187,17 +1170,20 @@ msgstr "終了"
 msgid "Firewall"
 msgstr "ファイアウォール"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "ファイアウォール設定"
 
 msgid "Firewall Status"
-msgstr "ファイアウォールステータス"
+msgstr "ファイアウォール ステータス"
 
 msgid "Firmware File"
 msgstr "ファームウェア ファイル"
 
 msgid "Firmware Version"
-msgstr "ファームウェアバージョン"
+msgstr "ファームウェア バージョン"
 
 msgid "Fixed source port for outbound DNS queries"
 msgstr "DNSクエリを送信する送信元ポートを固定します"
@@ -1233,6 +1219,9 @@ msgstr "TKIP を使用"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "TKIP 及びCCMP (AES) を使用"
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr "NAT-Tの強制使用"
 
@@ -1246,13 +1235,13 @@ msgid "Forward Error Correction Seconds (FECS)"
 msgstr ""
 
 msgid "Forward broadcast traffic"
-msgstr "ブロードキャストトラフィックを転送する"
+msgstr "ブロードキャスト トラフィックを転送する"
 
 msgid "Forwarding mode"
 msgstr "転送モード"
 
 msgid "Fragmentation Threshold"
-msgstr "フラグメンテーション値"
+msgstr "フラグメンテーションしきい値"
 
 msgid "Frame Bursting"
 msgstr "フレームバースト"
@@ -1280,7 +1269,7 @@ msgid "Gateway"
 msgstr "ゲートウェイ"
 
 msgid "Gateway ports"
-msgstr "ゲートウェイポート"
+msgstr "ゲートウェイ ポート"
 
 msgid "General Settings"
 msgstr "一般設定"
@@ -1295,7 +1284,7 @@ msgid "Generate Config"
 msgstr "コンフィグ生成"
 
 msgid "Generate archive"
-msgstr "バックアップアーカイブの作成"
+msgstr "バックアップ アーカイブの作成"
 
 msgid "Generic 802.11%s Wireless Controller"
 msgstr "802.11%s 無線LANコントローラ"
@@ -1325,7 +1314,7 @@ msgid "HE.net password"
 msgstr "HE.net パスワード"
 
 msgid "HE.net username"
-msgstr ""
+msgstr "HE.net ユーザー名"
 
 msgid "HT mode (802.11n)"
 msgstr "HT モード (802.11n)"
@@ -1363,7 +1352,7 @@ msgid "Host"
 msgstr "ホスト"
 
 msgid "Host entries"
-msgstr "ホストエントリー"
+msgstr "ホスト エントリー"
 
 msgid "Host expiry timeout"
 msgstr ""
@@ -1506,20 +1495,21 @@ 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 ""
-"固定のデバイスã\83\8eã\83¼ã\83\89å\90\8dã\81®ã\81\8bã\82\8fã\82\8aã\81«ã\80\81設å®\9aã\81\97ã\81\9fã\83\91ã\83¼ã\83\86ã\82£ã\82·ã\83§ã\83³ã\83©ã\83\99ã\83«ã\82\92使ç\94¨ã\81\97ã\81¦ã\83\9eã\82¦"
-"ントします。"
+"固定のデバイス ã\83\8eã\83¼ã\83\89å\90\8dã\81®ã\81\8bã\82\8fã\82\8aã\81«ã\80\81設å®\9aã\81\95ã\82\8cã\81\9fã\83\91ã\83¼ã\83\86ã\82£ã\82·ã\83§ã\83³ ã\83©ã\83\99ã\83«ã\82\92使ç\94¨ã\81\97ã\81¦"
+"ã\83\9eã\82¦ã\83³ã\83\88ã\81\97ã\81¾ã\81\99ã\80\82"
 
 msgid "If unchecked, no default route is configured"
-msgstr "チェックされていない場合、デフォルトルートを設定しません"
+msgstr "チェックされていない場合、デフォルト ルートを設定しません"
 
 msgid "If unchecked, the advertised DNS server addresses are ignored"
-msgstr "チェックされていない場合、通知されたDNSサーバーアドレスを無視します"
+msgstr "チェックされていない場合、通知されたDNSサーバー アドレスを無視します"
 
 msgid ""
 "If your physical memory is insufficient unused data can be temporarily "
@@ -1528,11 +1518,11 @@ msgid ""
 "slow process as the swap-device cannot be accessed with the high datarates "
 "of the <abbr title=\"Random Access Memory\">RAM</abbr>."
 msgstr ""
-"ç\89©ç\90\86ã\83¡ã\83¢ã\83ªã\81\8cä¸\8d足ã\81\99ã\82\8bå ´å\90\88ã\80\81ä¸\80æ\99\82ç\9a\84ã\81«ã\83\87ã\83¼ã\82¿ã\82\92ã\82\88ã\82\8a大容é\87\8fã\81ª<abbr title=\"Random "
-"Access Memory\">RAM</abbr>デバイスにスワップすることが出来ます。ただし、デー"
-"ã\82¿ã\81®ã\82¹ã\83¯ã\83\83ã\83\97ã\81¯é\9d\9e常ã\81«é\81\85ã\81\84å\87¦ç\90\86ã\81§ã\81\82ã\82\8bã\81\9fã\82\81ã\80\81ã\82¹ã\83¯ã\83\83ã\83\97ã\81\99ã\82\8bã\83\87ã\83\90ã\82¤ã\82¹ã\81«ã\81¯é«\98é\80\9fã\81«<abbr "
-"title=\"Random Access Memory\">RAM</abbr>にアクセスすることができなくなる恐れ"
-"ã\81\8cã\81\82ã\82\8aます。"
+"ç\89©ç\90\86ã\83¡ã\83¢ã\83ªã\81\8cä¸\8d足ã\81\99ã\82\8bå ´å\90\88ã\80\81使ç\94¨ã\81\95ã\82\8cã\81¦ã\81\84ã\81ªã\81\84ã\83\87ã\83¼ã\82¿ã\82\92ä¸\80æ\99\82ç\9a\84ã\81«ã\82¹ã\83¯ã\83\83ã\83\97 ã\83\87ã\83\90ã\82¤ã\82¹ã\81«"
+"スワップし、<abbr title=\"Random Access Memory\">RAM</abbr>の使用可能領域を増"
+"ã\82\84ã\81\99ã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\99ã\80\82ã\81\9fã\81 ã\81\97ã\80\81ã\82¹ã\83¯ã\83\83ã\83\97 ã\83\87ã\83\90ã\82¤ã\82¹ã\81¯<abbr title=\"Random Access "
+"Memory\">RAM</abbr>から高速にアクセスすることができないため、データのスワップ"
+"ã\81¯é\9d\9e常ã\81«é\81\85ã\81\84å\87¦ç\90\86ã\81§ã\81\82ã\82\8bã\81\93ã\81¨ã\81«æ³¨æ\84\8fã\81\97ます。"
 
 msgid "Ignore <code>/etc/hosts</code>"
 msgstr "<code>/etc/hosts</code>を無視"
@@ -1541,7 +1531,7 @@ msgid "Ignore interface"
 msgstr "インターフェースを無視する"
 
 msgid "Ignore resolve file"
-msgstr "リゾルバファイルを無視する"
+msgstr "リゾルバ ファイルを無視する"
 
 msgid "Image"
 msgstr "イメージ"
@@ -1618,7 +1608,7 @@ msgid "Internal"
 msgstr "内部"
 
 msgid "Internal Server Error"
-msgstr "内部サーバーエラー"
+msgstr "内部サーバー エラー"
 
 msgid "Invalid"
 msgstr "入力値が不正です"
@@ -1630,7 +1620,11 @@ msgid "Invalid VLAN ID given! Only unique IDs are allowed"
 msgstr "無効なVLAN IDです! ユニークなIDを入力してください。"
 
 msgid "Invalid username and/or password! Please try again."
-msgstr "ユーザー名とパスワードが不正です! もう一度入力してください。"
+msgstr ""
+"ユーザー名かパスワード、もしくは両方が不正です!もう一度入力してください。"
+
+msgid "Isolate Clients"
+msgstr ""
 
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1639,7 +1633,7 @@ msgstr ""
 "更新しようとしたイメージファイルはこのフラッシュメモリに適合しません。イメー"
 "ジファイルを確認してください!"
 
-msgid "Java Script required!"
+msgid "JavaScript required!"
 msgstr "JavaScriptを有効にしてください!"
 
 msgid "Join Network"
@@ -1649,16 +1643,16 @@ msgid "Join Network: Wireless Scan"
 msgstr "ネットワークに接続する: 無線LANスキャン"
 
 msgid "Joining Network: %q"
-msgstr "次のネットワークに参加: %q"
+msgstr "ネットワークに接続: %q"
 
 msgid "Keep settings"
 msgstr "設定を保持する"
 
 msgid "Kernel Log"
-msgstr "カーネルログ"
+msgstr "カーネル ログ"
 
 msgid "Kernel Version"
-msgstr "カーネルバージョン"
+msgstr "カーネル バージョン"
 
 msgid "Key"
 msgstr "暗号キー"
@@ -1815,13 +1809,13 @@ msgid "Local Service Only"
 msgstr ""
 
 msgid "Local Startup"
-msgstr "ローカル Startup"
+msgstr "ローカル スタートアップ"
 
 msgid "Local Time"
 msgstr "時刻"
 
 msgid "Local domain"
-msgstr "ローカルドメイン"
+msgstr "ローカル ドメイン"
 
 msgid ""
 "Local domain specification. Names matching this domain are never forwarded "
@@ -1830,11 +1824,11 @@ msgstr ""
 
 msgid "Local domain suffix appended to DHCP names and hosts file entries"
 msgstr ""
-"DHCP名とhostsファイルのエントリーに付される、ローカルドメインサフィックスで"
+"DHCP名とhostsファイルのエントリーに付される、ローカルドメイン サフィックスで"
 "す。"
 
 msgid "Local server"
-msgstr "ローカルサーバー"
+msgstr "ローカル サーバー"
 
 msgid ""
 "Localise hostname depending on the requesting subnet if multiple IPs are "
@@ -1851,7 +1845,7 @@ msgid "Log output level"
 msgstr "ログ出力レベル"
 
 msgid "Log queries"
-msgstr "ログクエリー"
+msgstr "ログ クエリ"
 
 msgid "Logging"
 msgstr "ログ"
@@ -1873,7 +1867,7 @@ msgid "MAC-Address"
 msgstr "MAC-アドレス"
 
 msgid "MAC-Address Filter"
-msgstr "MAC-アドレスフィルタ"
+msgstr "MAC-アドレス フィルタ"
 
 msgid "MAC-Filter"
 msgstr "MAC-フィルタ"
@@ -1882,7 +1876,7 @@ msgid "MAC-List"
 msgstr "MAC-リスト"
 
 msgid "MAP / LW4over6"
-msgstr ""
+msgstr "MAP / LW4over6"
 
 msgid "MB/s"
 msgstr "MB/s"
@@ -1908,9 +1902,6 @@ msgstr "手動"
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "最大レート"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "DHCPリースの許可される最大数"
 
@@ -1948,9 +1939,6 @@ msgstr "メモリ使用率 (%)"
 msgid "Metric"
 msgstr "メトリック"
 
-msgid "Minimum Rate"
-msgstr "最小レート"
-
 msgid "Minimum hold time"
 msgstr "最短保持時間"
 
@@ -1973,7 +1961,7 @@ msgid "Model"
 msgstr "モデル"
 
 msgid "Modem device"
-msgstr "モデムデバイス"
+msgstr "モデム デバイス"
 
 msgid "Modem init timeout"
 msgstr "モデム初期化タイムアウト"
@@ -2024,11 +2012,8 @@ msgstr "下へ"
 msgid "Move up"
 msgstr "上へ"
 
-msgid "Multicast Rate"
-msgstr "マルチキャストレート"
-
 msgid "Multicast address"
-msgstr "マルチキャストアドレス"
+msgstr "マルチキャスト アドレス"
 
 msgid "NAS ID"
 msgstr "NAS ID"
@@ -2039,6 +2024,9 @@ msgstr "NAT-T モード"
 msgid "NAT64 Prefix"
 msgstr "NAT64 プレフィクス"
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr "NDP-プロキシ"
 
@@ -2070,10 +2058,10 @@ msgid "Network"
 msgstr "ネットワーク"
 
 msgid "Network Utilities"
-msgstr "ネットワークユーティリティ"
+msgstr "ネットワーク ユーティリティ"
 
 msgid "Network boot image"
-msgstr "ã\83\8dã\83\83ã\83\88ã\83¯ã\83¼ã\82¯ã\83»ã\83\96ã\83¼ã\83\88ç\94¨ã\82¤ã\83¡ã\83¼ã\82¸"
+msgstr "ネットワークブート用イメージ"
 
 msgid "Network without interfaces."
 msgstr ""
@@ -2106,7 +2094,7 @@ msgid "No network name specified"
 msgstr "ネットワーク名が設定されていません"
 
 msgid "No package lists available"
-msgstr "パッケージリストがありません"
+msgstr "パッケージ リストがありません"
 
 msgid "No password set!"
 msgstr "パスワードが設定されていません!"
@@ -2182,18 +2170,18 @@ msgid ""
 "<samp>INTERFACE.VLANNR</samp> (<abbr title=\"for example\">e.g.</abbr>: "
 "<samp>eth0.1</samp>)."
 msgstr ""
-"このページではネットワークインターフェースの設定を行うことが出来ます。\"ブ"
-"ã\83ªã\83\83ã\82¸ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹\"ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\82\92ã\83\81ã\82§ã\83\83ã\82¯ã\81\97ã\80\81è¤\87æ\95°ã\81®ã\83\8dã\83\83ã\83\88ã\83¯ã\83¼ã\82¯ã\82¤ã\83³ã\82¿ã\83¼"
-"ã\83\95ã\82§ã\83¼ã\82¹å\90\8dã\82\92ã\82¹ã\83\9aã\83¼ã\82¹ã\81§å\8cºå\88\87ã\82\8aã\81§å\85¥å\8a\9bã\81\99ã\82\8bã\81\93ã\81¨ã\81§è¤\87æ\95°ã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\82\92ã\83\96ã\83ªã\83\83ã\82¸"
-"ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cå\87ºæ\9d¥ã\81¾ã\81\99ã\80\82ã\81¾ã\81\9fã\80\81<samp>INTERFACE.VLANNR</samp>ã\81¨ã\81\84ã\81\86表è¨\98ã\81«ã\82\88ã\82\8a<abbr "
-"title=\"Virtual Local Area Network\">VLAN</abbr>も使用することが出来ます。"
-"(<abbr title=\"for example\">例</abbr>: <samp>eth0.1</samp>)"
+"このページではネットワーク インターフェースの設定を行うことが出来ます。\"ブ"
+"ã\83ªã\83\83ã\82¸ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹\"ã\83\95ã\82£ã\83¼ã\83«ã\83\89ã\81«ã\83\81ã\82§ã\83\83ã\82¯ã\82\92ä»\98ã\81\91ã\80\81è¤\87æ\95°ã\81®ã\83\8dã\83\83ã\83\88ã\83¯ã\83¼ã\82¯ ã\82¤ã\83³"
+"ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\82\92ã\83ªã\82¹ã\83\88ã\81\8bã\82\89é\81¸æ\8a\9eã\81\99ã\82\8bã\81\93ã\81¨ã\81§è¤\87æ\95°ã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\82\92ã\83\96ã\83ªã\83\83ã\82¸ã\81\99ã\82\8bã\81\93"
+"ã\81¨ã\81\8cå\87ºæ\9d¥ã\81¾ã\81\99ã\80\82ã\81¾ã\81\9fã\80\81<samp>INTERFACE.VLANNR</samp>ã\81¨ã\81\84ã\81\86表è¨\98ã\81«ã\82\88ã\82\8a<abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>も使用することが出来ます。(<abbr "
+"title=\"for example\">例</abbr>: <samp>eth0.1</samp>)"
 
 msgid "On-State Delay"
 msgstr "点灯時間"
 
 msgid "One of hostname or mac address must be specified!"
-msgstr "1つ以上のホスト名またはmacアドレスを設定してください!"
+msgstr "1つ以上のホスト名またはMACアドレスを設定してください!"
 
 msgid "One or more fields contain invalid values!"
 msgstr "1つ以上のフィールドに無効な値が設定されています!"
@@ -2232,8 +2220,13 @@ msgid "Optional."
 msgstr "(オプション)"
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2274,9 +2267,6 @@ msgstr "アウト"
 msgid "Outbound:"
 msgstr "送信:"
 
-msgid "Outdoor Channels"
-msgstr "屋外用周波数"
-
 msgid "Output Interface"
 msgstr "出力インターフェース"
 
@@ -2360,7 +2350,7 @@ msgid "Package libiwinfo required!"
 msgstr "libiwinfo パッケージをインストールしてください!"
 
 msgid "Package lists are older than 24 hours"
-msgstr "パッケージリストは24時間以上前のものです"
+msgstr "パッケージ リストは24時間以上前のものです"
 
 msgid "Package name"
 msgstr "パッケージ名"
@@ -2458,6 +2448,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr "委任されたプレフィクス (PD)"
 
@@ -2505,7 +2501,7 @@ msgid "Protocol of the new interface"
 msgstr "新しいインターフェースのプロトコル"
 
 msgid "Protocol support is not installed"
-msgstr "プロトコルサポートがインストールされていません"
+msgstr "プロトコル サポートがインストールされていません"
 
 msgid "Provide NTP server"
 msgstr "NTPサーバー機能を有効にする"
@@ -2538,7 +2534,7 @@ msgid "RFC3947 NAT-T mode"
 msgstr "RFC3947 NAT-Tモード"
 
 msgid "RTS/CTS Threshold"
-msgstr "RTS/CTS値"
+msgstr "RTS/CTSしきい値"
 
 msgid "RX"
 msgstr "RX"
@@ -2550,7 +2546,7 @@ msgid "RaLink 802.11%s Wireless Controller"
 msgstr "RaLink 802.11%s 無線LANコントローラ"
 
 msgid "Radius-Accounting-Port"
-msgstr "Radiusアカウントサーバーポート番号"
+msgstr "Radiusアカウントサーバー ポート番号"
 
 msgid "Radius-Accounting-Secret"
 msgstr "Radiusアカウント秘密鍵"
@@ -2559,7 +2555,7 @@ msgid "Radius-Accounting-Server"
 msgstr "Radiusアカウントサーバー"
 
 msgid "Radius-Authentication-Port"
-msgstr "Radius認証サーバーポート番号"
+msgstr "Radius認証サーバー ポート番号"
 
 msgid "Radius-Authentication-Secret"
 msgstr "Radius認証秘密鍵"
@@ -2618,7 +2614,7 @@ msgid "Realtime Connections"
 msgstr "リアルタイム・コネクション"
 
 msgid "Realtime Graphs"
-msgstr "リアルタイムグラフ"
+msgstr "リアルタイム グラフ"
 
 msgid "Realtime Load"
 msgstr "リアルタイム・ロード"
@@ -2662,9 +2658,6 @@ msgstr "インターフェース再接続中"
 msgid "References"
 msgstr "参照カウンタ"
 
-msgid "Regulatory Domain"
-msgstr "規制ドメイン"
-
 msgid "Relay"
 msgstr "リレー"
 
@@ -2678,7 +2671,7 @@ msgid "Relay bridge"
 msgstr "リレーブリッジ"
 
 msgid "Remote IPv4 address"
-msgstr "リモートIPv4アドレス"
+msgstr "リモート IPv4アドレス"
 
 msgid "Remote IPv4 address or FQDN"
 msgstr "リモート IPv4アドレス または FQDN"
@@ -2713,21 +2706,21 @@ msgstr "DOCSIS 3.0を使用するいくつかのISPでは必要になります"
 msgid "Required. Base64-encoded private key for this interface."
 msgstr "このインターフェースに使用するBase64-エンコード 秘密鍵(必須)"
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr "ピアの公開鍵(必須)"
-
 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 と、無線LANドライバーによるサポートが必要で"
-"す。<br />(2017年2月現在: ath9k と ath10k、LEDE内では mwlwifi と mt76)"
+"す。<br />(2017年2月現在: ath9k 及び ath10k、LEDE内では mwlwifi 及び mt76)"
 
 msgid ""
 "Requires upstream supports DNSSEC; verify unsigned domain responses really "
@@ -2786,7 +2779,7 @@ msgid "Router Advertisement-Service"
 msgstr "ルーター アドバタイズメント-サービス"
 
 msgid "Router Password"
-msgstr "ルーターパスワード"
+msgstr "ルーター パスワード"
 
 msgid "Routes"
 msgstr "経路情報"
@@ -2870,9 +2863,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "クライアントの分離"
 
-msgid "Separate WDS"
-msgstr "WDSを分離する"
-
 msgid "Server Settings"
 msgstr "サーバー設定"
 
@@ -2896,6 +2886,11 @@ msgstr "サービスタイプ"
 msgid "Services"
 msgstr "サービス"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 msgid "Set up Time Synchronization"
 msgstr "時刻同期設定"
 
@@ -3033,9 +3028,6 @@ msgstr "静的リース"
 msgid "Static Routes"
 msgstr "静的ルーティング"
 
-msgid "Static WDS"
-msgstr "静的WDS"
-
 msgid "Static address"
 msgstr "静的アドレス"
 
@@ -3104,10 +3096,10 @@ msgid "System Log"
 msgstr "システムログ"
 
 msgid "System Properties"
-msgstr "システムプロパティ"
+msgstr "システム プロパティ"
 
 msgid "System log buffer size"
-msgstr "システムログバッファサイズ"
+msgstr "システムログ バッファサイズ"
 
 msgid "TCP:"
 msgstr "TCP:"
@@ -3331,21 +3323,21 @@ msgid ""
 "This is the content of /etc/rc.local. Insert your own commands here (in "
 "front of 'exit 0') to execute them at the end of the boot process."
 msgstr ""
-"/etc/rc.localを表示しています。あなたの実行したいコマンドを'exit 0'行より上に"
-"入力してください。これらのコマンドはブートプロセスの最後に実行されます。"
+"/etc/rc.localを表示しています。実行したいコマンドを'exit 0'行より上に入力して"
+"ください。これらのコマンドはブートプロセスの最後に実行されます。"
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
 "ends with <code>:2</code>"
 msgstr ""
-"プロバイダからアサインされた、ローカルのエンドポイントアドレスです。通常、"
+"プロバイダからアサインされた、ローカルのエンドポイント アドレスです。通常、"
 "<code>:2</code>が終端に設定されます。"
 
 msgid ""
 "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
 "abbr> in the local network"
 msgstr ""
-"ローカルネットワーク内のみの <abbr title=\"Dynamic Host Configuration "
+"ローカル ネットワーク内のみの <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr>として使用する"
 
 msgid "This is the plain username for logging into the account"
@@ -3357,7 +3349,7 @@ msgstr ""
 
 msgid "This is the system crontab in which scheduled tasks can be defined."
 msgstr ""
-"スケジュールタスクシステムを使用することで、定期的に特定のタスクの実行を行う"
+"スケジュールタスク システムを使用することで、定期的に特定のタスクの実行を行う"
 "ことが可能です。"
 
 msgid ""
@@ -3393,7 +3385,7 @@ msgid ""
 "To restore configuration files, you can upload a previously generated backup "
 "archive here."
 msgstr ""
-"設定を復元するには、作成しておいたバックアップアーカイブをアップロードしてく"
+"設定を復元するには、作成しておいたバックアップ アーカイブをアップロードしてく"
 "ださい。"
 
 msgid "Tone"
@@ -3447,9 +3439,6 @@ msgstr "トンネルセットアップ サーバー"
 msgid "Tunnel type"
 msgstr "トンネルタイプ"
 
-msgid "Turbo Mode"
-msgstr "ターボモード"
-
 msgid "Tx-Power"
 msgstr "送信電力"
 
@@ -3506,13 +3495,13 @@ msgid ""
 "Check \"Keep settings\" to retain the current configuration (requires a "
 "compatible firmware image)."
 msgstr ""
-"システムをアップデートする場合、sysupgrade機能に互換性のあるファームウェアイ"
-"ã\83¡ã\83¼ã\82¸ã\82\92ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82\"設å®\9aã\81®ä¿\9dæ\8c\81\"ã\82\92æ\9c\89å\8a¹ã\81«ã\81\99ã\82\8bã\81¨ã\80\81ç\8f¾å\9c¨ã\81®è¨­å®\9aã\82\92"
-"維持してアップデートを行います。ただし、OpenWrt/LEDE互換のファームウェアイ"
-"メージがアップロードされた場合のみ、設定は保持されます。"
+"システムをアップデートする場合、sysupgrade機能に互換性のあるファームウェア イ"
+"ã\83¡ã\83¼ã\82¸ã\82\92ã\81\93ã\81\93ã\81«ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82\"設å®\9aã\81®ä¿\9dæ\8c\81\"ã\82\92æ\9c\89å\8a¹ã\81«ã\81\99ã\82\8bã\81¨ã\80\81ç\8f¾å\9c¨ã\81®"
+"設定を維持してアップデートを行います(互換性のあるファームウェア イメージが必"
+"要)。"
 
 msgid "Upload archive..."
-msgstr "アーカイブをアップロード"
+msgstr "アーカイブをアップロード..."
 
 msgid "Uploaded File"
 msgstr "アップロード完了"
@@ -3533,10 +3522,10 @@ msgid "Use ISO/IEC 3166 alpha2 country codes."
 msgstr "ISO/IEC 3166 alpha2の国コードを使用します。"
 
 msgid "Use MTU on tunnel interface"
-msgstr "トンネルインターフェースのMTUを設定"
+msgstr "トンネル インターフェースのMTUを設定"
 
 msgid "Use TTL on tunnel interface"
-msgstr "トンネルインターフェースのTTLを設定"
+msgstr "トンネル インターフェースのTTLを設定"
 
 msgid "Use as external overlay (/overlay)"
 msgstr "外部オーバーレイとして使用する (/overlay)"
@@ -3545,7 +3534,7 @@ msgid "Use as root filesystem (/)"
 msgstr "ルート ファイルシステムとして使用する (/)"
 
 msgid "Use broadcast flag"
-msgstr "ブロードキャストフラグを使用する"
+msgstr "ブロードキャスト フラグを使用する"
 
 msgid "Use builtin IPv6-management"
 msgstr "ビルトインのIPv6-マネジメントを使用する"
@@ -3554,10 +3543,10 @@ msgid "Use custom DNS servers"
 msgstr "DNSサーバーを手動で設定"
 
 msgid "Use default gateway"
-msgstr "デフォルトゲートウェイを使用する"
+msgstr "デフォルト ゲートウェイを使用する"
 
 msgid "Use gateway metric"
-msgstr "ゲートウェイメトリックを使用する"
+msgstr "ゲートウェイ メトリックを使用する"
 
 msgid "Use routing table"
 msgstr ""
@@ -3738,9 +3727,6 @@ msgstr "受信したDNSリクエストをsyslogへ記録します"
 msgid "Write system log to file"
 msgstr "システムログをファイルに書き込む"
 
-msgid "XR Support"
-msgstr "XRサポート"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3752,8 +3738,8 @@ msgstr ""
 "</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
-msgstr "Java Scriptを有効にしない場合、LuCIは正しく動作しません。"
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr "JavaScriptを有効にしない場合、LuCIは正しく動作しません。"
 
 msgid ""
 "Your Internet Explorer is too old to display this page correctly. Please "
@@ -3927,6 +3913,57 @@ msgstr "はい"
 msgid "« Back"
 msgstr "« 戻る"
 
+#~ msgid "AR Support"
+#~ msgstr "ARサポート"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s 無線LANコントローラ"
+
+#~ msgid "Background Scan"
+#~ msgstr "バックグラウンドスキャン"
+
+#~ msgid "Compression"
+#~ msgstr "圧縮"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "HWビーコンタイマーを無効にする"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "プローブレスポンスを送信しない"
+
+#~ msgid "Fast Frames"
+#~ msgstr "ファスト・フレーム"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "最大レート"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "最小レート"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "マルチキャストレート"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "屋外用周波数"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "規制ドメイン"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDSを分離する"
+
+#~ msgid "Static WDS"
+#~ msgstr "静的WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "ターボモード"
+
+#~ msgid "XR Support"
+#~ msgstr "XRサポート"
+
+#~ msgid "Required. Public key of peer."
+#~ msgstr "ピアの公開鍵(必須)"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr "チェックボックスがオフの場合、追加のネットワークが作成されます。"
 
index 59372bd..7683df1 100644 (file)
@@ -148,6 +148,11 @@ msgstr "<abbr title=\"maximal\">최대</abbr> 동시 처리 query 수"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr ""
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -166,9 +171,6 @@ msgstr ""
 msgid "APN"
 msgstr ""
 
-msgid "AR Support"
-msgstr ""
-
 msgid "ARP retry threshold"
 msgstr ""
 
@@ -406,9 +408,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "연결된 station 들"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
 msgid "Auth Group"
 msgstr ""
 
@@ -487,9 +486,6 @@ msgstr ""
 msgid "Back to scan results"
 msgstr ""
 
-msgid "Background Scan"
-msgstr ""
-
 msgid "Backup / Flash Firmware"
 msgstr "Firmware 백업 / Flash"
 
@@ -658,9 +654,6 @@ msgstr "명령어"
 msgid "Common Configuration"
 msgstr "공통 설정"
 
-msgid "Compression"
-msgstr ""
-
 msgid "Configuration"
 msgstr "설정"
 
@@ -883,9 +876,6 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
 msgid "Disabled"
 msgstr ""
 
@@ -929,9 +919,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr ""
 
-msgid "Do not send probe responses"
-msgstr ""
-
 msgid "Domain required"
 msgstr ""
 
@@ -1127,9 +1114,6 @@ msgstr "외부 system log 서버 프로토콜"
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr ""
-
 msgid "File"
 msgstr ""
 
@@ -1165,6 +1149,9 @@ msgstr ""
 msgid "Firewall"
 msgstr "방화벽"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "방화벽 설정"
 
@@ -1210,6 +1197,9 @@ msgstr ""
 msgid "Force TKIP and CCMP (AES)"
 msgstr ""
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1601,12 +1591,15 @@ msgstr ""
 msgid "Invalid username and/or password! Please try again."
 msgstr ""
 
+msgid "Isolate Clients"
+msgstr ""
+
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
 "flash memory, please verify the image file!"
 msgstr ""
 
-msgid "Java Script required!"
+msgid "JavaScript required!"
 msgstr ""
 
 msgid "Join Network"
@@ -1869,9 +1862,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr ""
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Active DHCP lease 건의 최대 허용 숫자"
 
@@ -1907,9 +1897,6 @@ msgstr "메모리 사용량 (%)"
 msgid "Metric"
 msgstr ""
 
-msgid "Minimum Rate"
-msgstr ""
-
 msgid "Minimum hold time"
 msgstr ""
 
@@ -1981,9 +1968,6 @@ msgstr ""
 msgid "Move up"
 msgstr ""
 
-msgid "Multicast Rate"
-msgstr ""
-
 msgid "Multicast address"
 msgstr ""
 
@@ -1996,6 +1980,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2189,8 +2176,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2227,9 +2219,6 @@ msgstr ""
 msgid "Outbound:"
 msgstr ""
 
-msgid "Outdoor Channels"
-msgstr ""
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2411,6 +2400,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2601,9 +2596,6 @@ msgstr "인터페이스 재연결중입니다"
 msgid "References"
 msgstr ""
 
-msgid "Regulatory Domain"
-msgstr ""
-
 msgid "Relay"
 msgstr ""
 
@@ -2652,15 +2644,15 @@ msgstr "특정 ISP 들에 요구됨.  예: Charter (DOCSIS 3 기반)"
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2805,9 +2797,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr ""
 
-msgid "Separate WDS"
-msgstr ""
-
 msgid "Server Settings"
 msgstr "서버 설정"
 
@@ -2831,6 +2820,11 @@ msgstr ""
 msgid "Services"
 msgstr "서비스"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 msgid "Set up Time Synchronization"
 msgstr ""
 
@@ -2965,9 +2959,6 @@ msgstr "Static Lease 들"
 msgid "Static Routes"
 msgstr "Static Route 경로"
 
-msgid "Static WDS"
-msgstr ""
-
 msgid "Static address"
 msgstr ""
 
@@ -3354,9 +3345,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr ""
-
 msgid "Tx-Power"
 msgstr ""
 
@@ -3642,9 +3630,6 @@ msgstr "받은 DNS 요청 내용을 systlog 에 기록합니다"
 msgid "Write system log to file"
 msgstr "System log 출력 파일 경로"
 
-msgid "XR Support"
-msgstr ""
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3656,7 +3641,7 @@ msgstr ""
 "다!</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
 
 msgid ""
index 517d237..f847e1a 100644 (file)
@@ -145,6 +145,11 @@ msgstr ""
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr ""
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -163,9 +168,6 @@ msgstr ""
 msgid "APN"
 msgstr ""
 
-msgid "AR Support"
-msgstr "AR-Penyokong"
-
 msgid "ARP retry threshold"
 msgstr ""
 
@@ -401,9 +403,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "Associated Stesen"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
 msgid "Auth Group"
 msgstr ""
 
@@ -482,9 +481,6 @@ msgstr "Kembali ke ikhtisar"
 msgid "Back to scan results"
 msgstr "Kembali ke keputusan scan"
 
-msgid "Background Scan"
-msgstr "Latar Belakang Scan"
-
 msgid "Backup / Flash Firmware"
 msgstr ""
 
@@ -640,9 +636,6 @@ msgstr "Perintah"
 msgid "Common Configuration"
 msgstr ""
 
-msgid "Compression"
-msgstr "Mampatan"
-
 msgid "Configuration"
 msgstr "Konfigurasi"
 
@@ -856,9 +849,6 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "Mematikan pemasa HW-Beacon"
-
 msgid "Disabled"
 msgstr ""
 
@@ -904,9 +894,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr ""
 
-msgid "Do not send probe responses"
-msgstr "Jangan menghantar jawapan penyelidikan"
-
 msgid "Domain required"
 msgstr "Domain diperlukan"
 
@@ -1099,9 +1086,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "Frame Cepat"
-
 msgid "File"
 msgstr ""
 
@@ -1137,6 +1121,9 @@ msgstr "Selesai"
 msgid "Firewall"
 msgstr "Firewall"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "Tetapan Firewall"
 
@@ -1182,6 +1169,9 @@ msgstr ""
 msgid "Force TKIP and CCMP (AES)"
 msgstr ""
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1577,6 +1567,9 @@ msgstr ""
 msgid "Invalid username and/or password! Please try again."
 msgstr "Username dan / atau password tak sah! Sila cuba lagi."
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1585,7 +1578,7 @@ msgstr ""
 "Tampak bahawa anda cuba untuk flash fail gambar yang tidak sesuai dengan "
 "memori flash, sila buat pengesahan pada fail gambar!"
 
-msgid "Java Script required!"
+msgid "JavaScript required!"
 msgstr ""
 
 #, fuzzy
@@ -1847,9 +1840,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Rate Maksimum"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -1886,9 +1876,6 @@ msgstr "Penggunaan Memori (%)"
 msgid "Metric"
 msgstr "Metrik"
 
-msgid "Minimum Rate"
-msgstr "Rate Minimum"
-
 #, fuzzy
 msgid "Minimum hold time"
 msgstr "Memegang masa minimum"
@@ -1963,9 +1950,6 @@ msgstr ""
 msgid "Move up"
 msgstr ""
 
-msgid "Multicast Rate"
-msgstr "Multicast Rate"
-
 msgid "Multicast address"
 msgstr ""
 
@@ -1978,6 +1962,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2170,8 +2157,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2208,9 +2200,6 @@ msgstr "Keluar"
 msgid "Outbound:"
 msgstr ""
 
-msgid "Outdoor Channels"
-msgstr "Saluran Outdoor"
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2390,6 +2379,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2577,9 +2572,6 @@ msgstr ""
 msgid "References"
 msgstr "Rujukan"
 
-msgid "Regulatory Domain"
-msgstr "Peraturan Domain"
-
 msgid "Relay"
 msgstr ""
 
@@ -2628,15 +2620,15 @@ msgstr ""
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2781,9 +2773,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Pisahkan Pelanggan"
 
-msgid "Separate WDS"
-msgstr "Pisahkan WDS"
-
 msgid "Server Settings"
 msgstr ""
 
@@ -2807,6 +2796,11 @@ msgstr ""
 msgid "Services"
 msgstr "Perkhidmatan"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 msgid "Set up Time Synchronization"
 msgstr ""
 
@@ -2942,9 +2936,6 @@ msgstr "Statische Einträge"
 msgid "Static Routes"
 msgstr "Laluan Statik"
 
-msgid "Static WDS"
-msgstr ""
-
 msgid "Static address"
 msgstr ""
 
@@ -3328,9 +3319,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Mod Turbo"
-
 msgid "Tx-Power"
 msgstr ""
 
@@ -3610,9 +3598,6 @@ msgstr ""
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "Sokongan XR"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3620,7 +3605,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
 
 msgid ""
@@ -3789,3 +3774,45 @@ msgstr ""
 
 msgid "« Back"
 msgstr "« Kembali"
+
+#~ msgid "AR Support"
+#~ msgstr "AR-Penyokong"
+
+#~ msgid "Background Scan"
+#~ msgstr "Latar Belakang Scan"
+
+#~ msgid "Compression"
+#~ msgstr "Mampatan"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Mematikan pemasa HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Jangan menghantar jawapan penyelidikan"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Frame Cepat"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Rate Maksimum"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Rate Minimum"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicast Rate"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Saluran Outdoor"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Peraturan Domain"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Pisahkan WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Mod Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Sokongan XR"
index d17e4aa..65fc39e 100644 (file)
@@ -147,6 +147,11 @@ msgstr "<abbr title=\"Maksimal\">Maks.</abbr> samtidige spørringer"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Parvis: %s / Gruppe: %s'>%s - %s</abbr>"
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -165,9 +170,6 @@ msgstr ""
 msgid "APN"
 msgstr "<abbr title=\"Aksesspunkt Navn\">APN</abbr>"
 
-msgid "AR Support"
-msgstr "AR Støtte"
-
 msgid "ARP retry threshold"
 msgstr "APR terskel for nytt forsøk"
 
@@ -410,9 +412,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "Tilkoblede Klienter"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s Trådløs Kontroller"
-
 msgid "Auth Group"
 msgstr ""
 
@@ -491,9 +490,6 @@ msgstr "Tilbake til oversikt"
 msgid "Back to scan results"
 msgstr "Tilbake til skanne resultat"
 
-msgid "Background Scan"
-msgstr "Bakgrunns Skanning"
-
 msgid "Backup / Flash Firmware"
 msgstr "Sikkerhetskopiering/Firmware oppgradering"
 
@@ -662,9 +658,6 @@ msgstr "Kommando"
 msgid "Common Configuration"
 msgstr "Vanlige Innstillinger"
 
-msgid "Compression"
-msgstr "Komprimering"
-
 msgid "Configuration"
 msgstr "Konfigurasjon"
 
@@ -884,9 +877,6 @@ msgstr "Deaktiver DNS oppsett"
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "Deaktiver HW-Beacon timer"
-
 msgid "Disabled"
 msgstr "Deaktivert"
 
@@ -933,9 +923,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr "Ikke videresend reverserte oppslag for lokale nettverk"
 
-msgid "Do not send probe responses"
-msgstr "Ikke send probe svar"
-
 msgid "Domain required"
 msgstr "Domene kreves"
 
@@ -1135,9 +1122,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "Fast Frames"
-
 msgid "File"
 msgstr "Fil"
 
@@ -1173,6 +1157,9 @@ msgstr "Fullfør"
 msgid "Firewall"
 msgstr "Brannmur"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "Brannmur Innstillinger"
 
@@ -1219,6 +1206,9 @@ msgstr "Bruk TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "Bruk TKIP og CCMP (AES)"
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1615,6 +1605,9 @@ msgstr "Ugyldig VLAN ID gitt! Bare unike ID'er er tillatt"
 msgid "Invalid username and/or password! Please try again."
 msgstr "Ugyldig brukernavn og/eller passord! Vennligst prøv igjen."
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1623,8 +1616,8 @@ msgstr ""
 "Det virker som du prøver å flashe med en firmware som ikke passer inn i "
 "flash-minnet, vennligst kontroller firmware filen!"
 
-msgid "Java Script required!"
-msgstr "Java Script kreves!"
+msgid "JavaScript required!"
+msgstr "JavaScript kreves!"
 
 msgid "Join Network"
 msgstr "Koble til nettverket"
@@ -1892,9 +1885,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Maksimal hastighet"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Maksimalt antall aktive DHCP leieavtaler"
 
@@ -1930,9 +1920,6 @@ msgstr "Minne forbruk (%)"
 msgid "Metric"
 msgstr "Metrisk"
 
-msgid "Minimum Rate"
-msgstr "Minimum hastighet"
-
 msgid "Minimum hold time"
 msgstr "Minimum holde tid"
 
@@ -2006,9 +1993,6 @@ msgstr "Flytt ned"
 msgid "Move up"
 msgstr "Flytt opp"
 
-msgid "Multicast Rate"
-msgstr "Multicast hastighet"
-
 msgid "Multicast address"
 msgstr "Multicast adresse"
 
@@ -2021,6 +2005,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2214,8 +2201,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2252,9 +2244,6 @@ msgstr "Ut"
 msgid "Outbound:"
 msgstr "Ugående:"
 
-msgid "Outdoor Channels"
-msgstr "Utendørs Kanaler"
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2436,6 +2425,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2638,9 +2633,6 @@ msgstr "Kobler til igjen"
 msgid "References"
 msgstr "Referanser"
 
-msgid "Regulatory Domain"
-msgstr "Regulerende Domene"
-
 msgid "Relay"
 msgstr "Relay"
 
@@ -2689,15 +2681,15 @@ msgstr "Er nødvendig for noen nettleverandører, f.eks Charter med DOCSIS 3"
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2844,9 +2836,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Separerte Klienter"
 
-msgid "Separate WDS"
-msgstr "Separert WDS"
-
 msgid "Server Settings"
 msgstr "Server Innstillinger"
 
@@ -2870,6 +2859,11 @@ msgstr "Tjeneste type"
 msgid "Services"
 msgstr "Tjenester"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 #, fuzzy
 msgid "Set up Time Synchronization"
 msgstr "Oppsett tidssynkronisering"
@@ -3009,9 +3003,6 @@ msgstr "Statiske Leier"
 msgid "Static Routes"
 msgstr "Statiske Ruter"
 
-msgid "Static WDS"
-msgstr "Statisk WDS"
-
 msgid "Static address"
 msgstr "Statisk adresse"
 
@@ -3433,9 +3424,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Turbo Modus"
-
 msgid "Tx-Power"
 msgstr "Tx-Styrke"
 
@@ -3722,9 +3710,6 @@ msgstr "Skriv mottatte DNS forespørsler til syslog"
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "XR Støtte"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3736,9 +3721,9 @@ msgstr ""
 "utilgjengelig! </strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
-"Du må aktivere Java Script i nettleseren din ellers vil ikke LuCI fungere "
+"Du må aktivere JavaScript i nettleseren din ellers vil ikke LuCI fungere "
 "skikkelig."
 
 msgid ""
@@ -3910,6 +3895,54 @@ msgstr "ja"
 msgid "« Back"
 msgstr "« Tilbake"
 
+#~ msgid "AR Support"
+#~ msgstr "AR Støtte"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s Trådløs Kontroller"
+
+#~ msgid "Background Scan"
+#~ msgstr "Bakgrunns Skanning"
+
+#~ msgid "Compression"
+#~ msgstr "Komprimering"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Deaktiver HW-Beacon timer"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Ikke send probe svar"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Fast Frames"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Maksimal hastighet"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Minimum hastighet"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicast hastighet"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Utendørs Kanaler"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Regulerende Domene"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Separert WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "Statisk WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo Modus"
+
+#~ msgid "XR Support"
+#~ msgstr "XR Støtte"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr "Et nytt nettverk vil bli opprettet hvis du tar bort haken."
 
index 8b0368b..2223f53 100644 (file)
@@ -152,6 +152,11 @@ msgstr "<abbr title=\"Maksymalna ilość\">Maks.</abbr> zapytań równoczesnych"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Par: %s / Grup: %s'>%s - %s</abbr>"
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -170,10 +175,6 @@ msgstr ""
 msgid "APN"
 msgstr "APN"
 
-# Wydaje mi się że brakuje litery R...
-msgid "AR Support"
-msgstr "Wsparcie dla ARP"
-
 msgid "ARP retry threshold"
 msgstr "Próg powtórzeń ARP"
 
@@ -425,9 +426,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "Połączone stacje"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Bezprzewodowy kontroler Atheros 802.11%s"
-
 msgid "Auth Group"
 msgstr ""
 
@@ -507,9 +505,6 @@ msgstr "Wróć do przeglądu"
 msgid "Back to scan results"
 msgstr "Wróć do wyników skanowania"
 
-msgid "Background Scan"
-msgstr "Skanowanie w tle"
-
 msgid "Backup / Flash Firmware"
 msgstr "Kopia zapasowa/aktualizacja firmware"
 
@@ -681,9 +676,6 @@ msgstr "Polecenie"
 msgid "Common Configuration"
 msgstr "Konfiguracja podstawowa"
 
-msgid "Compression"
-msgstr "Kompresja"
-
 msgid "Configuration"
 msgstr "Konfiguracja"
 
@@ -906,9 +898,6 @@ msgstr "Wyłącz konfigurowanie DNS"
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "Wyłącz zegar HW-Beacon"
-
 msgid "Disabled"
 msgstr "Wyłączony"
 
@@ -957,9 +946,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr "Nie przekazuj odwrotnych lookup`ów do sieci lokalnych"
 
-msgid "Do not send probe responses"
-msgstr "Nie wysyłaj ramek probe response"
-
 msgid "Domain required"
 msgstr "Wymagana domena"
 
@@ -1166,9 +1152,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "Szybkie ramki (Fast Frames)"
-
 msgid "File"
 msgstr "Plik"
 
@@ -1204,6 +1187,9 @@ msgstr "Zakończ"
 msgid "Firewall"
 msgstr "Firewall"
 
+msgid "Firewall Mark"
+msgstr ""
+
 # Nie ma potrzeby pisania z dużej litery
 msgid "Firewall Settings"
 msgstr "Ustawienia firewalla"
@@ -1251,6 +1237,9 @@ msgstr "Wymuś TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "Wymuś TKIP i CCMP (AES)"
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1660,6 +1649,9 @@ msgstr "Podano niewłaściwy ID VLAN`u! Dozwolone są tylko unikalne ID."
 msgid "Invalid username and/or password! Please try again."
 msgstr "Niewłaściwy login i/lub hasło! Spróbuj ponownie."
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1668,8 +1660,8 @@ msgstr ""
 "Wygląda na to, że próbujesz wgrać obraz większy niż twoja pamięć flash, "
 "proszę sprawdź czy to właściwy obraz!"
 
-msgid "Java Script required!"
-msgstr "Java Script jest wymagany!"
+msgid "JavaScript required!"
+msgstr "JavaScript jest wymagany!"
 
 msgid "Join Network"
 msgstr "Połącz z siecią"
@@ -1938,9 +1930,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Maksymalna Szybkość"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Maksymalna dozwolona liczba aktywnych dzierżaw DHCP"
 
@@ -1976,9 +1965,6 @@ msgstr "Użycie pamięci (%)"
 msgid "Metric"
 msgstr "Metryka"
 
-msgid "Minimum Rate"
-msgstr "Minimalna Szybkość"
-
 msgid "Minimum hold time"
 msgstr "Minimalny czas podtrzymania"
 
@@ -2052,9 +2038,6 @@ msgstr "Przesuń w dół"
 msgid "Move up"
 msgstr "Przesuń w górę"
 
-msgid "Multicast Rate"
-msgstr "Szybkość Multicast`u"
-
 msgid "Multicast address"
 msgstr "Adres Multicast`u"
 
@@ -2067,6 +2050,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2259,8 +2245,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2297,9 +2288,6 @@ msgstr "Wychodzące"
 msgid "Outbound:"
 msgstr "Wychodzący:"
 
-msgid "Outdoor Channels"
-msgstr "Kanały zewnętrzne"
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2483,6 +2471,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2687,9 +2681,6 @@ msgstr "Łączę ponownie interfejs"
 msgid "References"
 msgstr "Referencje"
 
-msgid "Regulatory Domain"
-msgstr "Domena regulacji"
-
 msgid "Relay"
 msgstr "Przekaźnik"
 
@@ -2738,15 +2729,15 @@ msgstr "Wymagany dla niektórych dostawców internetu, np. Charter z DOCSIS 3"
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2895,9 +2886,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Rozdziel klientów"
 
-msgid "Separate WDS"
-msgstr "Rozdziel WDS"
-
 msgid "Server Settings"
 msgstr "Ustawienia serwera"
 
@@ -2921,6 +2909,11 @@ msgstr "Typ serwisu"
 msgid "Services"
 msgstr "Serwisy"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 #, fuzzy
 msgid "Set up Time Synchronization"
 msgstr "Ustawienia synchronizacji czasu"
@@ -3062,9 +3055,6 @@ msgstr "Dzierżawy statyczne"
 msgid "Static Routes"
 msgstr "Statyczne ścieżki routingu"
 
-msgid "Static WDS"
-msgstr "Statyczny WDS"
-
 msgid "Static address"
 msgstr "Stały adres"
 
@@ -3496,9 +3486,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Tryb Turbo"
-
 msgid "Tx-Power"
 msgstr "Moc nadawania"
 
@@ -3787,9 +3774,6 @@ msgstr "Zapisz otrzymane żądania DNS do syslog'a"
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "Wsparcie XR"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3801,9 +3785,9 @@ msgstr ""
 "się nieosiągalne!</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
-"Musisz włączyć obsługę Java Script w swojej przeglądarce, inaczej LuCI nie "
+"Musisz włączyć obsługę JavaScript w swojej przeglądarce, inaczej LuCI nie "
 "będzie działać poprawnie."
 
 msgid ""
@@ -3976,6 +3960,55 @@ msgstr "tak"
 msgid "« Back"
 msgstr "« Wróć"
 
+# Wydaje mi się że brakuje litery R...
+#~ msgid "AR Support"
+#~ msgstr "Wsparcie dla ARP"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Bezprzewodowy kontroler Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "Skanowanie w tle"
+
+#~ msgid "Compression"
+#~ msgstr "Kompresja"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Wyłącz zegar HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Nie wysyłaj ramek probe response"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Szybkie ramki (Fast Frames)"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Maksymalna Szybkość"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Minimalna Szybkość"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Szybkość Multicast`u"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Kanały zewnętrzne"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Domena regulacji"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Rozdziel WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "Statyczny WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Tryb Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Wsparcie XR"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr ""
 #~ "Zostanie utworzona dodatkowa sieć jeśli zostawisz tą opcję niezaznaczoną."
index 413cc79..2767cee 100644 (file)
@@ -1,20 +1,20 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2014-03-29 23:31+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-02-22 20:30-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"Language-Team: \n"
 
 msgid "%s is untagged in multiple VLANs!"
-msgstr ""
+msgstr "%s está sem etiqueta em múltiplas VLANs!"
 
 msgid "(%d minute window, %d second interval)"
 msgstr "(janela de %d minutos, intervalo de %d segundos)"
@@ -38,13 +38,15 @@ msgid "-- custom --"
 msgstr "-- personalizado --"
 
 msgid "-- match by device --"
-msgstr ""
+msgstr "-- casar por dispositivo --"
 
 msgid "-- match by label --"
-msgstr ""
+msgstr "-- casar por rótulo --"
 
 msgid "-- match by uuid --"
 msgstr ""
+"-- casar por <abbr title=\"Universal Unique IDentifier/Identificador Único "
+"Universal\">UUID</abbr> --"
 
 msgid "1 Minute Load:"
 msgstr "Carga 1 Minuto:"
@@ -53,34 +55,36 @@ msgid "15 Minute Load:"
 msgstr "Carga 15 Minutos:"
 
 msgid "4-character hexadecimal ID"
-msgstr ""
+msgstr "Identificador hexadecimal de 4 caracteres"
 
 msgid "464XLAT (CLAT)"
-msgstr ""
+msgstr "464XLAT (CLAT)"
 
 msgid "5 Minute Load:"
 msgstr "Carga 5 Minutos:"
 
 msgid "6-octet identifier as a hex string - no colons"
 msgstr ""
+"Identificador de 6 octetos como uma cadeia hexadecimal - sem dois pontos"
 
 msgid "802.11r Fast Transition"
-msgstr ""
+msgstr "802.11r Fast Transition"
 
 msgid "802.11w Association SA Query maximum timeout"
-msgstr ""
+msgstr "Tempo de expiração máximo da consulta da Associação SA do 802.11w"
 
 msgid "802.11w Association SA Query retry timeout"
 msgstr ""
+"Tempo de expiração de tentativa de consulta da Associação SA do 802.11w"
 
 msgid "802.11w Management Frame Protection"
-msgstr ""
+msgstr "Proteção do Quadro de Gerenciamento do 802.11w"
 
 msgid "802.11w maximum timeout"
-msgstr ""
+msgstr "Estouro de tempo máximo do 802.11w"
 
 msgid "802.11w retry timeout"
-msgstr ""
+msgstr "Estouro de tempo da nova tentativa do 802.11w"
 
 msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
 msgstr ""
@@ -127,6 +131,8 @@ msgstr "Roteador <abbr title=\"Protocolo de Internet Versão 6\">IPv6</abbr>"
 
 msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
 msgstr ""
+"<abbr title=\"Internet Protocol Version 6/Protocolo Internet Versão "
+"6\">IPv6</abbr>-Suffix (hex)"
 
 msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
 msgstr "Configuração do <abbr title=\"Diodo Emissor de Luz\">LED</abbr>"
@@ -157,43 +163,53 @@ msgstr "Número máximo de consultas concorrentes"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Par: %s / Grupo: %s'>%s - %s</abbr>"
 
-msgid "A43C + J43 + A43"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
 msgstr ""
 
+msgid "A43C + J43 + A43"
+msgstr "A43C + J43 + A43"
+
 msgid "A43C + J43 + A43 + V43"
-msgstr ""
+msgstr "A43C + J43 + A43 + V43"
 
 msgid "ADSL"
 msgstr ""
+"<abbr title=\"Assymetrical Digital Subscriber Line/Linha Digital Assimétrica "
+"para Assinante\">ADSL</abbr>"
 
 msgid "AICCU (SIXXS)"
 msgstr ""
+"<abbr title=\"Automatic IPv6 Connectivity Client Utility/Utilitário Cliente "
+"de Conectividade IPv6 Automática\">AICCU (SIXXS)</abbr>"
 
 msgid "ANSI T1.413"
-msgstr ""
+msgstr "ANSI T1.413"
 
 msgid "APN"
 msgstr "<abbr title=\"Access Point Name\">APN</abbr>"
 
-msgid "AR Support"
-msgstr "Suporte AR"
-
 msgid "ARP retry threshold"
 msgstr ""
 "Limite de retentativas do <abbr title=\"Address Resolution Protocol\">ARP</"
 "abbr>"
 
 msgid "ATM (Asynchronous Transfer Mode)"
-msgstr ""
+msgstr "ATM (Asynchronous Transfer Mode)"
 
 msgid "ATM Bridges"
 msgstr "Ponte ATM"
 
 msgid "ATM Virtual Channel Identifier (VCI)"
-msgstr "Identificador de Canal Virtual ATM (VCI)"
+msgstr ""
+"Identificador de Canal Virtual ATM (<abbr title=\"Virtual Channel Identifier"
+"\">VCI</abbr>)"
 
 msgid "ATM Virtual Path Identifier (VPI)"
-msgstr "Identificador de Caminho Virtual ATM (VPI)"
+msgstr ""
+"Identificador de Caminho Virtual ATM (<abbr title=\"Virtual Path Identifier"
+"\">VPI</abbr>)"
 
 msgid ""
 "ATM bridges expose encapsulated ethernet in AAL5 connections as virtual "
@@ -208,10 +224,10 @@ msgid "ATM device number"
 msgstr "Número do dispositivo ATM"
 
 msgid "ATU-C System Vendor ID"
-msgstr ""
+msgstr "Identificador de"
 
 msgid "AYIYA"
-msgstr ""
+msgstr "AYIYA"
 
 msgid "Access Concentrator"
 msgstr "Concentrador de Acesso"
@@ -261,7 +277,7 @@ msgid "Additional Hosts files"
 msgstr "Arquivos adicionais de equipamentos conhecidos (hosts)"
 
 msgid "Additional servers file"
-msgstr ""
+msgstr "Arquivo de servidores adicionais"
 
 msgid "Address"
 msgstr "Endereço"
@@ -277,6 +293,8 @@ msgstr "Opções Avançadas"
 
 msgid "Aggregate Transmit Power(ACTATP)"
 msgstr ""
+"Potência de Transmissão Agregada (<abbr title=\"Aggregate Transmit Power"
+"\">ACTATP</abbr>)"
 
 msgid "Alert"
 msgstr "Alerta"
@@ -285,9 +303,11 @@ msgid ""
 "Allocate IP addresses sequentially, starting from the lowest available "
 "address"
 msgstr ""
+"Alocar endereços IP sequencialmente, iniciando a partir do endereço mais "
+"baixo disponível"
 
 msgid "Allocate IP sequentially"
-msgstr ""
+msgstr "Alocar endereços IP sequencialmente"
 
 msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
 msgstr ""
@@ -320,78 +340,81 @@ msgstr ""
 "exemplo, para os serviços RBL"
 
 msgid "Allowed IPs"
-msgstr ""
+msgstr "Endereços IP autorizados"
 
 msgid ""
 "Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison"
 "\">Tunneling Comparison</a> on SIXXS"
 msgstr ""
+"Veja também a <a href=\"https://www.sixxs.net/faq/connectivity/?"
+"faq=comparison\">Comparação de Tunelamentos</a> em SIXXS"
 
 msgid "Always announce default router"
-msgstr ""
+msgstr "Sempre anuncie o roteador padrão"
 
 msgid "Annex"
-msgstr ""
+msgstr "Anexo"
 
 msgid "Annex A + L + M (all)"
-msgstr ""
+msgstr "Anexos A + L + M (todo)"
 
 msgid "Annex A G.992.1"
-msgstr ""
+msgstr "Anexo A G.992.1"
 
 msgid "Annex A G.992.2"
-msgstr ""
+msgstr "Anexo A G.992.2"
 
 msgid "Annex A G.992.3"
-msgstr ""
+msgstr "Anexo A G.992.3"
 
 msgid "Annex A G.992.5"
-msgstr ""
+msgstr "Anexo A G.992.5"
 
 msgid "Annex B (all)"
-msgstr ""
+msgstr "Anexo B (todo)"
 
 msgid "Annex B G.992.1"
-msgstr ""
+msgstr "Anexo B G.992.1"
 
 msgid "Annex B G.992.3"
-msgstr ""
+msgstr "Anexo B G.992.3"
 
 msgid "Annex B G.992.5"
-msgstr ""
+msgstr "Anexo B G.992.5"
 
 msgid "Annex J (all)"
-msgstr ""
+msgstr "Anexo J (todo)"
 
 msgid "Annex L G.992.3 POTS 1"
-msgstr ""
+msgstr "Anexo L G.992.3 POTS 1"
 
 msgid "Annex M (all)"
-msgstr ""
+msgstr "Anexo M (todo)"
 
 msgid "Annex M G.992.3"
-msgstr ""
+msgstr "Anexo M G.992.3"
 
 msgid "Annex M G.992.5"
-msgstr ""
+msgstr "Anexo M G.992.5"
 
 msgid "Announce as default router even if no public prefix is available."
 msgstr ""
+"Anuncie-se como rotador padrão mesmo se não existir um prefixo público."
 
 msgid "Announced DNS domains"
-msgstr ""
+msgstr "Domínios DNS anunciados"
 
 msgid "Announced DNS servers"
-msgstr ""
+msgstr "Servidores DNS anunciados"
 
 msgid "Anonymous Identity"
-msgstr ""
+msgstr "Identidade Anônima"
 
 msgid "Anonymous Mount"
-msgstr ""
+msgstr "Montagem Anônima"
 
 msgid "Anonymous Swap"
-msgstr ""
+msgstr "Espaço de Troca (swap) Anônimo"
 
 msgid "Antenna 1"
 msgstr "Antena 1"
@@ -414,6 +437,8 @@ msgstr "Aplicar as alterações"
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
 msgstr ""
+"Atribua uma parte do comprimento de cada prefixo IPv6 público para esta "
+"interface"
 
 msgid "Assign interfaces..."
 msgstr "atribuir as interfaces"
@@ -421,24 +446,23 @@ msgstr "atribuir as interfaces"
 msgid ""
 "Assign prefix parts using this hexadecimal subprefix ID for this interface."
 msgstr ""
+"Atribua partes do prefixo usando este identificador hexadecimal do "
+"subprefixo para esta interface"
 
 msgid "Associated Stations"
 msgstr "Estações associadas"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Controlador Wireless Atheros 802.11%s"
-
 msgid "Auth Group"
-msgstr ""
+msgstr "Grupo de Autenticação"
 
 msgid "AuthGroup"
-msgstr ""
+msgstr "Grupo de Autenticação"
 
 msgid "Authentication"
 msgstr "Autenticação"
 
 msgid "Authentication Type"
-msgstr ""
+msgstr "Tipo de Autenticação"
 
 msgid "Authoritative"
 msgstr "Autoritário"
@@ -450,25 +474,29 @@ msgid "Auto Refresh"
 msgstr "Atualização Automática"
 
 msgid "Automatic"
-msgstr ""
+msgstr "Automático"
 
 msgid "Automatic Homenet (HNCP)"
 msgstr ""
+"Rede Doméstica Automática (<abbr title=\"Homenet Control Protocol\">HNCP</"
+"abbr>)"
 
 msgid "Automatically check filesystem for errors before mounting"
 msgstr ""
+"Execute automaticamente a verificação do sistema de arquivos antes da "
+"montagem do dispositivo"
 
 msgid "Automatically mount filesystems on hotplug"
-msgstr ""
+msgstr "Monte automaticamente o espaço de troca (swap) ao conectar"
 
 msgid "Automatically mount swap on hotplug"
-msgstr ""
+msgstr "Monte automaticamente o espaço de troca (swap) ao conectar"
 
 msgid "Automount Filesystem"
-msgstr ""
+msgstr "Montagem Automática de Sistema de Arquivo"
 
 msgid "Automount Swap"
-msgstr ""
+msgstr "Montagem Automática do Espaço de Troca (swap) "
 
 msgid "Available"
 msgstr "Disponível"
@@ -480,13 +508,13 @@ msgid "Average:"
 msgstr "Média:"
 
 msgid "B43 + B43C"
-msgstr ""
+msgstr "B43 + B43C"
 
 msgid "B43 + B43C + V43"
-msgstr ""
+msgstr "B43 + B43C + V43"
 
 msgid "BR / DMR / AFTR"
-msgstr ""
+msgstr "BR / DMR / AFTR"
 
 msgid "BSSID"
 msgstr "BSSID"
@@ -506,9 +534,6 @@ msgstr "Voltar para visão geral"
 msgid "Back to scan results"
 msgstr "Voltar para os resultados da busca"
 
-msgid "Background Scan"
-msgstr "Busca em Segundo Plano"
-
 msgid "Backup / Flash Firmware"
 msgstr "Cópia de Segurança / Gravar Firmware"
 
@@ -522,10 +547,10 @@ msgid "Bad address specified!"
 msgstr "Endereço especificado está incorreto!"
 
 msgid "Band"
-msgstr ""
+msgstr "Banda"
 
 msgid "Behind NAT"
-msgstr ""
+msgstr "Atrás da NAT"
 
 msgid ""
 "Below is the determined list of files to backup. It consists of changed "
@@ -537,13 +562,15 @@ msgstr ""
 "padrões para a cópia de segurança definidos pelo usuário."
 
 msgid "Bind interface"
-msgstr ""
+msgstr "Interface Vinculada"
 
 msgid "Bind only to specific interfaces rather than wildcard address."
 msgstr ""
+"Vincule somente para as explicitamenteinterfaces ao invés do endereço "
+"coringa."
 
 msgid "Bind the tunnel to this interface (optional)."
-msgstr ""
+msgstr "Vincule o túnel a esta interface (opcional)"
 
 msgid "Bitrate"
 msgstr "Taxa de bits"
@@ -576,12 +603,15 @@ msgid ""
 "Build/distribution specific feed definitions. This file will NOT be "
 "preserved in any sysupgrade."
 msgstr ""
+"Fonte de pacotes específico da compilação/distribuição. Esta NÃO será "
+"preservada em qualquer atualização do sistema."
 
 msgid "Buttons"
 msgstr "Botões"
 
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
+"Certificado da CA; se em branco, será salvo depois da primeira conexão."
 
 msgid "CPU usage (%)"
 msgstr "Uso da CPU (%)"
@@ -590,7 +620,7 @@ msgid "Cancel"
 msgstr "Cancelar"
 
 msgid "Category"
-msgstr ""
+msgstr "Categoria"
 
 msgid "Chain"
 msgstr "Cadeia"
@@ -612,9 +642,10 @@ msgstr "Verificar"
 
 msgid "Check fileystems before mount"
 msgstr ""
+"Execute a verificação do sistema de arquivos antes da montagem do dispositivo"
 
 msgid "Check this option to delete the existing networks from this radio."
-msgstr ""
+msgstr "Marque esta opção para remover as redes existentes neste rádio."
 
 msgid "Checksum"
 msgstr "Soma de verificação"
@@ -641,7 +672,7 @@ msgid "Cipher"
 msgstr "Cifra"
 
 msgid "Cisco UDP encapsulation"
-msgstr ""
+msgstr "Encapsulamento UDP da Cisco"
 
 msgid ""
 "Click \"Generate archive\" to download a tar archive of the current "
@@ -678,9 +709,6 @@ msgstr "Comando"
 msgid "Common Configuration"
 msgstr "Configuração Comum"
 
-msgid "Compression"
-msgstr "Compressão"
-
 msgid "Configuration"
 msgstr "Configuração"
 
@@ -703,7 +731,7 @@ msgid "Connection Limit"
 msgstr "Limite de conexão"
 
 msgid "Connection to server fails when TLS cannot be used"
-msgstr ""
+msgstr "A conexão para este servidor falhará quando o TLS não puder ser usado"
 
 msgid "Connections"
 msgstr "Conexões"
@@ -739,15 +767,17 @@ msgid "Custom Interface"
 msgstr "Interface Personalizada"
 
 msgid "Custom delegated IPv6-prefix"
-msgstr ""
+msgstr "Prefixo IPv6 delegado personalizado"
 
 msgid ""
 "Custom feed definitions, e.g. private feeds. This file can be preserved in a "
 "sysupgrade."
 msgstr ""
+"Definições de fonte de pacotes personalizadas, ex: fontes privadas. Este "
+"arquivo será preservado em uma atualização do sistema."
 
 msgid "Custom feeds"
-msgstr ""
+msgstr "Fontes de pacotes customizadas"
 
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
@@ -775,13 +805,13 @@ msgid "DHCPv6 Leases"
 msgstr "Alocações DHCPv6"
 
 msgid "DHCPv6 client"
-msgstr ""
+msgstr "Cliente DHCPv6"
 
 msgid "DHCPv6-Mode"
-msgstr ""
+msgstr "Modo DHCPv6"
 
 msgid "DHCPv6-Service"
-msgstr ""
+msgstr "Serviço DHCPv6"
 
 msgid "DNS"
 msgstr "DNS"
@@ -790,34 +820,34 @@ msgid "DNS forwardings"
 msgstr "Encaminhamentos DNS"
 
 msgid "DNS-Label / FQDN"
-msgstr ""
+msgstr "Rótulo DNS / FQDN"
 
 msgid "DNSSEC"
-msgstr ""
+msgstr "DNSSEC"
 
 msgid "DNSSEC check unsigned"
-msgstr ""
+msgstr "Verificar DNSSEC sem assinatura"
 
 msgid "DPD Idle Timeout"
-msgstr ""
+msgstr "Tempo de expiração para ociosidade do DPD"
 
 msgid "DS-Lite AFTR address"
-msgstr ""
+msgstr "Endereço DS-Lite AFTR"
 
 msgid "DSL"
-msgstr ""
+msgstr "DSL"
 
 msgid "DSL Status"
-msgstr ""
+msgstr "Estado da DSL"
 
 msgid "DSL line mode"
-msgstr ""
+msgstr "Modo de linha DSL"
 
 msgid "DUID"
 msgstr "DUID"
 
 msgid "Data Rate"
-msgstr ""
+msgstr "Taxa de Dados"
 
 msgid "Debug"
 msgstr "Depurar"
@@ -829,10 +859,10 @@ msgid "Default gateway"
 msgstr "Roteador Padrão"
 
 msgid "Default is stateless + stateful"
-msgstr ""
+msgstr "O padrão é sem estado + com estado"
 
 msgid "Default route"
-msgstr ""
+msgstr "Rota padrão"
 
 msgid "Default state"
 msgstr "Estado padrão"
@@ -871,10 +901,10 @@ msgid "Device Configuration"
 msgstr "Configuração do Dispositivo"
 
 msgid "Device is rebooting..."
-msgstr ""
+msgstr "O dispositivo está reiniciando..."
 
 msgid "Device unreachable"
-msgstr ""
+msgstr "Dispositivo não alcançável"
 
 msgid "Diagnostics"
 msgstr "Diagnóstico"
@@ -899,16 +929,13 @@ msgid "Disable DNS setup"
 msgstr "Desabilita a configuração do DNS"
 
 msgid "Disable Encryption"
-msgstr ""
-
-msgid "Disable HW-Beacon timer"
-msgstr "Desativar temporizador de Beacon de Hardware"
+msgstr "Desabilitar Cifragem"
 
 msgid "Disabled"
 msgstr "Desabilitado"
 
 msgid "Disabled (default)"
-msgstr ""
+msgstr "Desabilitado (padrão)"
 
 msgid "Discard upstream RFC1918 responses"
 msgstr ""
@@ -924,7 +951,7 @@ msgid "Distance to farthest network member in meters."
 msgstr "Distância para o computador mais distante da rede (em metros)."
 
 msgid "Distribution feeds"
-msgstr ""
+msgstr "Fontes de pacotes da distribuição"
 
 msgid "Diversity"
 msgstr "Diversidade"
@@ -953,9 +980,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr "Não encaminhe buscas por endereço reverso das redes local"
 
-msgid "Do not send probe responses"
-msgstr "Não enviar respostas de exames"
-
 msgid "Domain required"
 msgstr "Requerer domínio"
 
@@ -963,7 +987,7 @@ msgid "Domain whitelist"
 msgstr "Lista branca de domínios"
 
 msgid "Don't Fragment"
-msgstr ""
+msgstr "Não Fragmentar"
 
 msgid ""
 "Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
@@ -991,7 +1015,7 @@ msgstr ""
 "integrado"
 
 msgid "Dual-Stack Lite (RFC6333)"
-msgstr ""
+msgstr "Duas Pilhas Leve (RFC6333)"
 
 msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
 msgstr ""
@@ -1009,7 +1033,7 @@ msgstr ""
 "somente os clientes com atribuições estáticas serão servidos. "
 
 msgid "EA-bits length"
-msgstr ""
+msgstr "Comprimento dos bits EA"
 
 msgid "EAP-Method"
 msgstr "Método EAP"
@@ -1021,6 +1045,8 @@ msgid ""
 "Edit the raw configuration data above to fix any error and hit \"Save\" to "
 "reload the page."
 msgstr ""
+"Edite os dados de configuração brutos abaixo para arrumar qualquer erro e "
+"clique em \"Salvar\" para recarregar a página."
 
 msgid "Edit this interface"
 msgstr "Editar esta interface"
@@ -1041,7 +1067,7 @@ msgid "Enable HE.net dynamic endpoint update"
 msgstr "Ativar a atualização de ponto final dinâmico HE.net"
 
 msgid "Enable IPv6 negotiation"
-msgstr ""
+msgstr "Ativar a negociação de IPv6"
 
 msgid "Enable IPv6 negotiation on the PPP link"
 msgstr "Ativar a negociação de IPv6 no enlace PPP"
@@ -1053,7 +1079,7 @@ msgid "Enable NTP client"
 msgstr "Ativar o cliente <abbr title=\"Network Time Protocol\">NTP</abbr>"
 
 msgid "Enable Single DES"
-msgstr ""
+msgstr "Habilitar DES Simples"
 
 msgid "Enable TFTP server"
 msgstr "Ativar servidor TFTP"
@@ -1062,19 +1088,19 @@ msgid "Enable VLAN functionality"
 msgstr "Ativar funcionalidade de VLAN"
 
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
-msgstr ""
+msgstr "Habilite o botão WPS. requer WPA(2)-PSK"
 
 msgid "Enable learning and aging"
 msgstr "Ativar o aprendizado e obsolescência"
 
 msgid "Enable mirroring of incoming packets"
-msgstr ""
+msgstr "Habilitar espelhamento dos pacotes entrantes"
 
 msgid "Enable mirroring of outgoing packets"
-msgstr ""
+msgstr "Habilitar espelhamento dos pacotes saintes"
 
 msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
-msgstr ""
+msgstr "Habilita o campo DF (Não Fragmentar) dos pacotes encapsulados."
 
 msgid "Enable this mount"
 msgstr "Ativar esta montagem"
@@ -1092,6 +1118,8 @@ msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
 msgstr ""
+"Ativa a troca rápida entre pontos de acesso que pertencem ao mesmo Domínio "
+"de Mobilidade"
 
 msgid "Enables the Spanning Tree Protocol on this bridge"
 msgstr "Ativa o protocolo STP nesta ponte"
@@ -1103,10 +1131,10 @@ msgid "Encryption"
 msgstr "Cifragem"
 
 msgid "Endpoint Host"
-msgstr ""
+msgstr "Equipamento do ponto final"
 
 msgid "Endpoint Port"
-msgstr ""
+msgstr "Porta do ponto final"
 
 msgid "Erasing..."
 msgstr "Apagando..."
@@ -1115,7 +1143,7 @@ msgid "Error"
 msgstr "Erro"
 
 msgid "Errored seconds (ES)"
-msgstr ""
+msgstr "Segundos com erro (ES)"
 
 msgid "Ethernet Adapter"
 msgstr "Adaptador Ethernet"
@@ -1124,7 +1152,7 @@ msgid "Ethernet Switch"
 msgstr "Switch Ethernet"
 
 msgid "Exclude interfaces"
-msgstr ""
+msgstr "Excluir interfaces"
 
 msgid "Expand hosts"
 msgstr "Expandir arquivos de equipamentos conhecidos (hosts)"
@@ -1132,7 +1160,6 @@ msgstr "Expandir arquivos de equipamentos conhecidos (hosts)"
 msgid "Expires"
 msgstr "Expira"
 
-#, fuzzy
 msgid ""
 "Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
 msgstr ""
@@ -1140,13 +1167,13 @@ msgstr ""
 "code>)."
 
 msgid "External"
-msgstr ""
+msgstr "Externo"
 
 msgid "External R0 Key Holder List"
-msgstr ""
+msgstr "Lista dos Detentor de Chave R0 Externa"
 
 msgid "External R1 Key Holder List"
-msgstr ""
+msgstr "Lista dos Detentor de Chave R1 Externa"
 
 msgid "External system log server"
 msgstr "Servidor externo de registros do sistema (syslog)"
@@ -1155,13 +1182,10 @@ msgid "External system log server port"
 msgstr "Porta do servidor externo de registro do sistema (syslog)"
 
 msgid "External system log server protocol"
-msgstr ""
+msgstr "Protocolo do servidor externo de registro do sistema (syslog)"
 
 msgid "Extra SSH command options"
-msgstr ""
-
-msgid "Fast Frames"
-msgstr "Quadros Rápidos"
+msgstr "Opções adicionais do comando SSH"
 
 msgid "File"
 msgstr "Arquivo"
@@ -1185,6 +1209,9 @@ msgid ""
 "Find all currently attached filesystems and swap and replace configuration "
 "with defaults based on what was detected"
 msgstr ""
+"Encontre todos os sistemas de arquivos e espaços de troca (swap) atualmente "
+"conectados e substitua a configuração com valores padrão baseados no que foi "
+"detectado"
 
 msgid "Find and join network"
 msgstr "Procurar e conectar à rede"
@@ -1198,6 +1225,9 @@ msgstr "Terminar"
 msgid "Firewall"
 msgstr "Firewall"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "Configurações do Firewall"
 
@@ -1205,7 +1235,7 @@ msgid "Firewall Status"
 msgstr "Estado do Firewall"
 
 msgid "Firmware File"
-msgstr ""
+msgstr "Arquivo da Firmware"
 
 msgid "Firmware Version"
 msgstr "Versão do Firmware"
@@ -1243,17 +1273,22 @@ msgstr "Forçar TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "Forçar TKIP e CCMP (AES)"
 
-msgid "Force use of NAT-T"
+msgid "Force link"
 msgstr ""
 
+msgid "Force use of NAT-T"
+msgstr "Force o uso do NAT-T"
+
 msgid "Form token mismatch"
-msgstr ""
+msgstr "Chave eletrônica do formulário não casa"
 
 msgid "Forward DHCP traffic"
 msgstr "Encaminhar tráfego DHCP"
 
 msgid "Forward Error Correction Seconds (FECS)"
 msgstr ""
+"Segundos a frente de correção de erros ( <abbr title=\"Forward Error "
+"Correction Seconds\">FECS</abbr>)"
 
 msgid "Forward broadcast traffic"
 msgstr "Encaminhar tráfego broadcast"
@@ -1277,6 +1312,8 @@ msgid ""
 "Further information about WireGuard interfaces and peers at <a href=\"http://"
 "wireguard.io\">wireguard.io</a>."
 msgstr ""
+"Mais informações sobre interfaces e parceiros WireGuard em <a href=\"http://"
+"wireguard.io\">wireguard.io</a>."
 
 msgid "GHz"
 msgstr "GHz"
@@ -1297,10 +1334,10 @@ msgid "General Setup"
 msgstr "Configurações Gerais"
 
 msgid "General options for opkg"
-msgstr ""
+msgstr "Opções gerais para o opkg"
 
 msgid "Generate Config"
-msgstr ""
+msgstr "Gerar Configuração"
 
 msgid "Generate archive"
 msgstr "Gerar arquivo"
@@ -1312,10 +1349,10 @@ msgid "Given password confirmation did not match, password not changed!"
 msgstr "A senha de confirmação informada não casa. Senha não alterada!"
 
 msgid "Global Settings"
-msgstr ""
+msgstr "Configurações Globais"
 
 msgid "Global network options"
-msgstr ""
+msgstr "Opções de rede globais"
 
 msgid "Go to password configuration..."
 msgstr "Ir para a configuração de senha..."
@@ -1324,19 +1361,21 @@ msgid "Go to relevant configuration page"
 msgstr "Ir para a página de configuração pertinente"
 
 msgid "Group Password"
-msgstr ""
+msgstr "Senha do Grupo"
 
 msgid "Guest"
-msgstr ""
+msgstr "Convidado\t"
 
 msgid "HE.net password"
 msgstr "Senha HE.net"
 
 msgid "HE.net username"
-msgstr ""
+msgstr "Usuário do HE.net"
 
 msgid "HT mode (802.11n)"
 msgstr ""
+"Modo <abbr title=\"High Throughput/Alta Taxa de Transferência\">HT</abbr>  "
+"(802.11n)"
 
 # Não sei que contexto isto está sendo usado
 msgid "Handler"
@@ -1347,9 +1386,11 @@ msgstr "Suspender"
 
 msgid "Header Error Code Errors (HEC)"
 msgstr ""
+"Erros de Código de Erro de Cabeçalho (<abbr title=\"Header Error Code\">HEC</"
+"abbr>)"
 
 msgid "Heartbeat"
-msgstr ""
+msgstr "Pulso de vida"
 
 msgid ""
 "Here you can configure the basic aspects of your device like its hostname or "
@@ -1374,7 +1415,7 @@ msgstr ""
 "\">ESSID</abbr>"
 
 msgid "Host"
-msgstr ""
+msgstr "Equipamento"
 
 msgid "Host entries"
 msgstr "Entradas de Equipamentos"
@@ -1397,13 +1438,15 @@ msgid "Hostnames"
 msgstr "Nome dos equipamentos"
 
 msgid "Hybrid"
-msgstr ""
+msgstr "Híbrido"
 
 msgid "IKE DH Group"
 msgstr ""
+"Grupo <abbr title=\"Diffie-Hellman\">DH</abbr>  do <abbr title=\"Internet "
+"Key Exchange/Troca de Chaves na Internet\">IKE</abbr>"
 
 msgid "IP Addresses"
-msgstr ""
+msgstr "Endereços IP"
 
 msgid "IP address"
 msgstr "Endereço IP"
@@ -1424,7 +1467,7 @@ msgid "IPv4 and IPv6"
 msgstr "IPv4 e IPv6"
 
 msgid "IPv4 assignment length"
-msgstr ""
+msgstr "Tamanho da atribuição IPv4"
 
 msgid "IPv4 broadcast"
 msgstr "Broadcast IPv4"
@@ -1439,7 +1482,7 @@ msgid "IPv4 only"
 msgstr "Somente IPv4"
 
 msgid "IPv4 prefix"
-msgstr ""
+msgstr "Prefixo IPv4"
 
 msgid "IPv4 prefix length"
 msgstr "Tamanho do prefixo IPv4"
@@ -1448,7 +1491,7 @@ msgid "IPv4-Address"
 msgstr "Endereço IPv4"
 
 msgid "IPv4-in-IPv4 (RFC2003)"
-msgstr ""
+msgstr "IPv4-in-IPv4 (RFC2003)"
 
 msgid "IPv6"
 msgstr "IPv6"
@@ -1457,13 +1500,15 @@ msgid "IPv6 Firewall"
 msgstr "Firewall para IPv6"
 
 msgid "IPv6 Neighbours"
-msgstr ""
+msgstr "Vizinhos IPv6"
 
 msgid "IPv6 Settings"
-msgstr ""
+msgstr "Configurações IPv6"
 
 msgid "IPv6 ULA-Prefix"
 msgstr ""
+"Prefixo <abbr title=\"Unique Local Address/Endereço Local Único\">ULA</abbr> "
+"IPv6"
 
 msgid "IPv6 WAN Status"
 msgstr "Estado IPv6 da WAN"
@@ -1472,13 +1517,13 @@ msgid "IPv6 address"
 msgstr "Endereço IPv6"
 
 msgid "IPv6 address delegated to the local tunnel endpoint (optional)"
-msgstr ""
+msgstr "Endereços IPv6 delegados para o ponta local do túnel (opcional)"
 
 msgid "IPv6 assignment hint"
-msgstr ""
+msgstr "Sugestão de atribuição IPv6"
 
 msgid "IPv6 assignment length"
-msgstr ""
+msgstr "Tamanho da atribuição IPv6"
 
 msgid "IPv6 gateway"
 msgstr "Roteador padrão do IPv6"
@@ -1493,13 +1538,13 @@ msgid "IPv6 prefix length"
 msgstr "Tamanho Prefixo IPv6"
 
 msgid "IPv6 routed prefix"
-msgstr ""
+msgstr "Prefixo roteável IPv6"
 
 msgid "IPv6-Address"
 msgstr "Endereço IPv6"
 
 msgid "IPv6-PD"
-msgstr ""
+msgstr "IPv6-PD"
 
 msgid "IPv6-in-IPv4 (RFC4213)"
 msgstr "IPv6-in-IPv4 (RFC4213)"
@@ -1514,10 +1559,10 @@ msgid "Identity"
 msgstr "Identidade PEAP"
 
 msgid "If checked, 1DES is enaled"
-msgstr ""
+msgstr "Se marcado, a cifragem 1DES será habilitada"
 
 msgid "If checked, encryption is disabled"
-msgstr ""
+msgstr "Se marcado, a cifragem estará desabilitada"
 
 msgid ""
 "If specified, mount the device by its UUID instead of a fixed device node"
@@ -1573,6 +1618,8 @@ 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 ""
+"Para prevenir acesso não autorizado neste sistema, sua requisição foi "
+"bloqueada. Clique abaixo em \"Continuar »\" para retornar à página anterior."
 
 msgid "Inactivity timeout"
 msgstr "Tempo limite de inatividade"
@@ -1593,7 +1640,7 @@ msgid "Install"
 msgstr "Instalar"
 
 msgid "Install iputils-traceroute6 for IPv6 traceroute"
-msgstr ""
+msgstr "Instale iputils-traceroute6 para rastrear rotas IPv6"
 
 msgid "Install package %q"
 msgstr "Instalar pacote %q"
@@ -1620,7 +1667,7 @@ msgid "Interface is shutting down..."
 msgstr "A interface está desligando..."
 
 msgid "Interface name"
-msgstr ""
+msgstr "Nome da Interface"
 
 msgid "Interface not present or not connected yet."
 msgstr "A interface não está presente ou não está conectada ainda."
@@ -1635,7 +1682,7 @@ msgid "Interfaces"
 msgstr "Interfaces"
 
 msgid "Internal"
-msgstr ""
+msgstr "Interno"
 
 msgid "Internal Server Error"
 msgstr "erro no servidor interno"
@@ -1656,7 +1703,9 @@ msgstr ""
 msgid "Invalid username and/or password! Please try again."
 msgstr "Usuário e/ou senha inválida! Por favor, tente novamente."
 
-#, fuzzy
+msgid "Isolate Clients"
+msgstr ""
+
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
 "flash memory, please verify the image file!"
@@ -1664,8 +1713,8 @@ msgstr ""
 "A imagem que está a tentar carregar aparenta nao caber na flash do "
 "equipamento. Por favor verifique o arquivo da imagem!"
 
-msgid "Java Script required!"
-msgstr "É necessário Java Script!"
+msgid "JavaScript required!"
+msgstr "É necessário JavaScript!"
 
 msgid "Join Network"
 msgstr "Conectar à Rede"
@@ -1674,7 +1723,7 @@ msgid "Join Network: Wireless Scan"
 msgstr "Conectar à Rede: Busca por Rede Sem Fio"
 
 msgid "Joining Network: %q"
-msgstr ""
+msgstr "Juntando-se à rede %q"
 
 msgid "Keep settings"
 msgstr "Manter configurações"
@@ -1719,13 +1768,13 @@ msgid "Language and Style"
 msgstr "Idioma e Estilo"
 
 msgid "Latency"
-msgstr ""
+msgstr "Latência"
 
 msgid "Leaf"
-msgstr ""
+msgstr "Folha"
 
 msgid "Lease time"
-msgstr ""
+msgstr "Tempo de concessão"
 
 msgid "Lease validity time"
 msgstr "Tempo de validade da atribuição"
@@ -1753,21 +1802,23 @@ msgstr "Limite"
 
 msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
 msgstr ""
+"Limite o serviço DNS para subredes das interfaces nas quais estamos servindo "
+"DNS."
 
 msgid "Limit listening to these interfaces, and loopback."
-msgstr ""
+msgstr "Escute somente nestas interfaces e na interface local (loopback) "
 
 msgid "Line Attenuation (LATN)"
-msgstr ""
+msgstr "Atenuação de Linha (<abbr title=\"Line Attenuation\">LATN</abbr>)"
 
 msgid "Line Mode"
-msgstr ""
+msgstr "Modo da Linha"
 
 msgid "Line State"
-msgstr ""
+msgstr "Estado da Linha"
 
 msgid "Line Uptime"
-msgstr ""
+msgstr "Tempo de Atividade da Linha"
 
 msgid "Link On"
 msgstr "Enlace Ativo"
@@ -1786,6 +1837,11 @@ msgid ""
 "from the R0KH that the STA used during the Initial Mobility Domain "
 "Association."
 msgstr ""
+"Lista dos R0KHs no mesmo Domínio de Mobilidade. <br /> Formato: Endereço "
+"MAC, Identificador NAS, chave de 128 bits como cadeia hexadecimal. <br /> "
+"Esta lista é usada para mapear o Identificador R0KH (Identificador NAS) para "
+"um endereço MAC de destino ao solicitar a chave PMK-R1 a partir do R0KH que "
+"o STA usado durante a Associação de Domínio de Mobilidade Inicial."
 
 msgid ""
 "List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
@@ -1794,9 +1850,14 @@ msgid ""
 "R0KH. This is also the list of authorized R1KHs in the MD that can request "
 "PMK-R1 keys."
 msgstr ""
+"Lista dos R1KHs no mesmo Domínio de Mobilidade. <br /> Formato: Endereço "
+"MAC, R1KH-ID como 6 octetos com dois pontos, chave de 128 bits como cadeia "
+"hexadecimal. <br /> Esta lista é usada para mapear o identificador R1KH para "
+"um endereço MAC de destino ao enviar a chave PMK-R1 a partir do R0KH. Esta é "
+"também a lista de R1KHs autorizados no MD que podem solicitar chaves PMK-R1."
 
 msgid "List of SSH key files for auth"
-msgstr ""
+msgstr "Lista de arquivos de chaves SSH para autenticação"
 
 msgid "List of domains to allow RFC1918 responses for"
 msgstr ""
@@ -1809,10 +1870,10 @@ msgstr ""
 "fornecem resultados errados para consultas a domínios inexistentes (NX)"
 
 msgid "Listen Interfaces"
-msgstr ""
+msgstr "Interfaces de Escuta"
 
 msgid "Listen Port"
-msgstr ""
+msgstr "Porta de Escuta"
 
 msgid "Listen only on the given interface or, if unspecified, on all"
 msgstr ""
@@ -1831,7 +1892,7 @@ msgid "Loading"
 msgstr "Carregando"
 
 msgid "Local IP address to assign"
-msgstr ""
+msgstr "Endereço IP local para atribuir"
 
 msgid "Local IPv4 address"
 msgstr "Endereço IPv4 local"
@@ -1840,7 +1901,7 @@ msgid "Local IPv6 address"
 msgstr "Endereço IPv6 local"
 
 msgid "Local Service Only"
-msgstr ""
+msgstr "Somente Serviço Local"
 
 msgid "Local Startup"
 msgstr "Iniciação Local"
@@ -1851,7 +1912,6 @@ msgstr "Hora Local"
 msgid "Local domain"
 msgstr "Domínio Local"
 
-#, fuzzy
 msgid ""
 "Local domain specification. Names matching this domain are never forwarded "
 "and are resolved from DHCP or hosts files only"
@@ -1879,7 +1939,7 @@ msgid "Localise queries"
 msgstr "Localizar consultas"
 
 msgid "Locked to channel %s used by: %s"
-msgstr ""
+msgstr "Travado no canal %s usado por: %s"
 
 msgid "Log output level"
 msgstr "Nível de detalhamento de saída dos registros"
@@ -1898,6 +1958,8 @@ msgstr "Sair"
 
 msgid "Loss of Signal Seconds (LOSS)"
 msgstr ""
+"Segundos de Perda de Sinal (<abbr title=\"Loss of Signal Seconds\">LOSS</"
+"abbr>)"
 
 msgid "Lowest leased address as offset from the network address."
 msgstr "O endereço mais baixo concedido como deslocamento do endereço da rede."
@@ -1915,13 +1977,13 @@ msgid "MAC-List"
 msgstr "Lista de MAC"
 
 msgid "MAP / LW4over6"
-msgstr ""
+msgstr "MAP / LW4over6"
 
 msgid "MB/s"
 msgstr "MB/s"
 
 msgid "MD5"
-msgstr ""
+msgstr "MD5"
 
 msgid "MHz"
 msgstr "MHz"
@@ -1935,15 +1997,16 @@ msgid ""
 "Make sure to clone the root filesystem using something like the commands "
 "below:"
 msgstr ""
+"Certifique-se que clonou o sistema de arquivos raiz com algo como o comando "
+"abaixo:"
 
 msgid "Manual"
-msgstr ""
+msgstr "Manual"
 
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
-
-msgid "Maximum Rate"
-msgstr "Taxa Máxima"
+"Taxa de Dados Atingível Máxima (<abbr title=\"Maximum Attainable Data Rate"
+"\">ATTNDR</abbr>)"
 
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Número máximo permitido de alocações DHCP ativas"
@@ -1965,6 +2028,8 @@ msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
 msgstr ""
+"Comprimento máximo do nome é de 15 caracteres, incluindo o prefixo "
+"automático do protocolo/ponte (br-, 6in4- pppoe-, etc.)"
 
 msgid "Maximum number of leased addresses."
 msgstr "Número máximo de endereços atribuídos."
@@ -1981,29 +2046,26 @@ msgstr "Uso da memória (%)"
 msgid "Metric"
 msgstr "Métrica"
 
-msgid "Minimum Rate"
-msgstr "Taxa Mínima"
-
 msgid "Minimum hold time"
 msgstr "Tempo mínimo de espera"
 
 msgid "Mirror monitor port"
-msgstr ""
+msgstr "Porta de monitoramento do espelho"
 
 msgid "Mirror source port"
-msgstr ""
+msgstr "Porta de origem do espelho"
 
 msgid "Missing protocol extension for proto %q"
 msgstr "Extensão para o protocolo %q está ausente"
 
 msgid "Mobility Domain"
-msgstr ""
+msgstr "Domínio da Mobilidade"
 
 msgid "Mode"
 msgstr "Modo"
 
 msgid "Model"
-msgstr ""
+msgstr "Modelo"
 
 msgid "Modem device"
 msgstr "Dispositivo do Modem"
@@ -2037,7 +2099,7 @@ msgstr ""
 "anexado ao sistema de arquivos"
 
 msgid "Mount filesystems not specifically configured"
-msgstr ""
+msgstr "Monte sistemas de arquivos não especificamente configurados"
 
 msgid "Mount options"
 msgstr "Opções de montagem"
@@ -2046,7 +2108,7 @@ msgid "Mount point"
 msgstr "Ponto de montagem"
 
 msgid "Mount swap not specifically configured"
-msgstr ""
+msgstr "Montar espalho de troca (swap) não especificamente configurado"
 
 msgid "Mounted file systems"
 msgstr "Sistemas de arquivos montados"
@@ -2057,9 +2119,6 @@ msgstr "Mover para baixo"
 msgid "Move up"
 msgstr "Mover para cima"
 
-msgid "Multicast Rate"
-msgstr "Taxa de Multicast"
-
 msgid "Multicast address"
 msgstr "Endereço de Multicast"
 
@@ -2067,22 +2126,25 @@ msgid "NAS ID"
 msgstr "NAS ID"
 
 msgid "NAT-T Mode"
-msgstr ""
+msgstr "Modo NAT-T"
 
 msgid "NAT64 Prefix"
+msgstr "Prefixo NAT64"
+
+msgid "NCM"
 msgstr ""
 
 msgid "NDP-Proxy"
-msgstr ""
+msgstr "Proxy NDP"
 
 msgid "NT Domain"
-msgstr ""
+msgstr "Domínio NT"
 
 msgid "NTP server candidates"
 msgstr "Candidatos a servidor NTP"
 
 msgid "NTP sync time-out"
-msgstr ""
+msgstr "Tempo limite da sincronia do NTP"
 
 msgid "Name"
 msgstr "Nome"
@@ -2118,7 +2180,7 @@ msgid "No DHCP Server configured for this interface"
 msgstr "Nenhum Servidor DHCP configurado para esta interface"
 
 msgid "No NAT-T"
-msgstr ""
+msgstr "Sem NAT-T"
 
 msgid "No chains in this table"
 msgstr "Nenhuma cadeira nesta tabela"
@@ -2154,16 +2216,18 @@ msgid "Noise"
 msgstr "Ruído"
 
 msgid "Noise Margin (SNR)"
-msgstr ""
+msgstr "Margem de Ruído (<abbr title=\"Noise Margin\">SNR</abbr>)"
 
 msgid "Noise:"
 msgstr "Ruído:"
 
 msgid "Non Pre-emtive CRC errors (CRC_P)"
 msgstr ""
+"Erros CRC Não Preemptivos<abbr title=\"Non Pre-emptive CRC errors\">CRC_P</"
+"abbr>"
 
 msgid "Non-wildcard"
-msgstr ""
+msgstr "Sem caracter curinga"
 
 msgid "None"
 msgstr "Nenhum"
@@ -2184,7 +2248,7 @@ msgid "Note: Configuration files will be erased."
 msgstr "Nota: Os arquivos de configuração serão apagados."
 
 msgid "Note: interface name length"
-msgstr ""
+msgstr "Aviso: tamanho do nome da interface"
 
 msgid "Notice"
 msgstr "Aviso"
@@ -2199,10 +2263,10 @@ msgid "OPKG-Configuration"
 msgstr "Configuração-OPKG"
 
 msgid "Obfuscated Group Password"
-msgstr ""
+msgstr "Senha Ofuscada do Grupo"
 
 msgid "Obfuscated Password"
-msgstr ""
+msgstr "Senha Ofuscada"
 
 msgid "Off-State Delay"
 msgstr "Atraso no estado de desligado"
@@ -2233,7 +2297,7 @@ msgid "One or more fields contain invalid values!"
 msgstr "Um ou mais campos contém valores inválidos!"
 
 msgid "One or more invalid/required values on tab"
-msgstr ""
+msgstr "Um ou mais valores inválidos/obrigatórios na aba"
 
 msgid "One or more required fields have no value!"
 msgstr "Um ou mais campos obrigatórios não tem valor!"
@@ -2242,10 +2306,10 @@ msgid "Open list..."
 msgstr "Abrir lista..."
 
 msgid "OpenConnect (CISCO AnyConnect)"
-msgstr ""
+msgstr "OpenConnect (CISCO AnyConnect)"
 
 msgid "Operating frequency"
-msgstr ""
+msgstr "Frequência de Operação"
 
 msgid "Option changed"
 msgstr "Opção alterada"
@@ -2254,43 +2318,56 @@ msgid "Option removed"
 msgstr "Opção removida"
 
 msgid "Optional"
-msgstr ""
+msgstr "Opcional"
 
 msgid "Optional, specify to override default server (tic.sixxs.net)"
 msgstr ""
+"Opcional, especifique para sobrescrever o servidor padrão (tic.sixxs.net)"
 
 msgid "Optional, use when the SIXXS account has more than one tunnel"
-msgstr ""
+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. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
+"Opcional. Adiciona uma camada extra de cifragem simétrica para resistência "
+"pós quântica."
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
-msgstr ""
+msgstr "Opcional. Cria rotas para endereços IP Autorizados para este parceiro."
 
 msgid ""
 "Optional. Host of peer. Names are resolved prior to bringing up the "
 "interface."
 msgstr ""
+"Opcional. Equipamento do parceiro. Nomes serão resolvido antes de levantar a "
+"interface."
 
 msgid "Optional. Maximum Transmission Unit of tunnel interface."
-msgstr ""
+msgstr "Opcional. Unidade Máxima de Transmissão da interface do túnel."
 
 msgid "Optional. Port of peer."
-msgstr ""
+msgstr "Opcional. Porta do parceiro."
 
 msgid ""
 "Optional. Seconds between keep alive messages. Default is 0 (disabled). "
 "Recommended value if this device is behind a NAT is 25."
 msgstr ""
+"Opcional. Segundos entre mensagens para manutenção da conexão. O padrão é 0 "
+"(desabilitado). O valor recomendado caso este dispositivo esteja atrás de "
+"uma NAT é 25."
 
 msgid "Optional. UDP port used for outgoing and incoming packets."
-msgstr ""
+msgstr "opcional. Porta UDP usada para pacotes saintes ou entrantes."
 
 msgid "Options"
 msgstr "Opções"
@@ -2304,26 +2381,25 @@ msgstr "Saída"
 msgid "Outbound:"
 msgstr "Saindo:"
 
-msgid "Outdoor Channels"
-msgstr "Canais para externo"
-
 msgid "Output Interface"
-msgstr ""
+msgstr "Interface de Saída"
 
 msgid "Override MAC address"
 msgstr "Sobrescrever o endereço MAC"
 
 msgid "Override MTU"
-msgstr "Sobrescrever o MTU"
+msgstr ""
+"Sobrescrever o <abbr title=\"Maximum Transmission Unit/Unidade Máxima de "
+"Transmissão\">MTU</abbr>"
 
 msgid "Override TOS"
-msgstr ""
+msgstr "Sobrescrever o TOS"
 
 msgid "Override TTL"
-msgstr ""
+msgstr "Sobrescrever o TTL"
 
 msgid "Override default interface name"
-msgstr ""
+msgstr "Sobrescrever o nome da nova interface"
 
 msgid "Override the gateway in DHCP responses"
 msgstr "Sobrescrever o roteador padrão nas respostas do DHCP"
@@ -2358,7 +2434,7 @@ msgid "PIN"
 msgstr "PIN"
 
 msgid "PMK R1 Push"
-msgstr ""
+msgstr "PMK R1 Push"
 
 msgid "PPP"
 msgstr "PPP"
@@ -2373,19 +2449,19 @@ msgid "PPPoE"
 msgstr "PPPoE"
 
 msgid "PPPoSSH"
-msgstr ""
+msgstr "PPPoSSH"
 
 msgid "PPtP"
 msgstr "PPtP"
 
 msgid "PSID offset"
-msgstr ""
+msgstr "Deslocamento PSID"
 
 msgid "PSID-bits length"
-msgstr ""
+msgstr "Comprimento dos bits PSID"
 
 msgid "PTM/EFM (Packet Transfer Mode)"
-msgstr ""
+msgstr "PTM/EFM (Modo de Transferência de Pacotes)"
 
 msgid "Package libiwinfo required!"
 msgstr "O pacote libiwinfo é necessário!"
@@ -2412,7 +2488,7 @@ msgid "Password of Private Key"
 msgstr "Senha da Chave Privada"
 
 msgid "Password of inner Private Key"
-msgstr ""
+msgstr "Senha da Chave Privada interna"
 
 msgid "Password successfully changed!"
 msgstr "A senha foi alterada com sucesso!"
@@ -2430,25 +2506,25 @@ msgid "Path to executable which handles the button event"
 msgstr "Caminho para o executável que trata o evento do botão"
 
 msgid "Path to inner CA-Certificate"
-msgstr ""
+msgstr "Caminho para os certificados CA interno"
 
 msgid "Path to inner Client-Certificate"
-msgstr ""
+msgstr "Caminho para o Certificado do Cliente interno"
 
 msgid "Path to inner Private Key"
-msgstr ""
+msgstr "Caminho para a Chave Privada interna"
 
 msgid "Peak:"
 msgstr "Pico:"
 
 msgid "Peer IP address to assign"
-msgstr ""
+msgstr "Endereço IP do parceiro para atribuir"
 
 msgid "Peers"
-msgstr ""
+msgstr "Parceiros"
 
 msgid "Perfect Forward Secrecy"
-msgstr ""
+msgstr "Sigilo Encaminhado Perfeito"
 
 msgid "Perform reboot"
 msgstr "Reiniciar o sistema"
@@ -2457,7 +2533,7 @@ msgid "Perform reset"
 msgstr "Zerar configuração"
 
 msgid "Persistent Keep Alive"
-msgstr ""
+msgstr "Manutenção da Conexão Persistente"
 
 msgid "Phy Rate:"
 msgstr "Taxa física:"
@@ -2484,17 +2560,24 @@ msgid "Port status:"
 msgstr "Status da porta"
 
 msgid "Power Management Mode"
-msgstr ""
+msgstr "Modo de Gerenciamento de Energia"
 
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
+"Erros CRC Preemptivos<abbr title=\"Pre-emptive CRC errors\">CRCP_P</abbr>"
 
-msgid "Prefix Delegated"
+msgid "Prefer LTE"
 msgstr ""
 
-msgid "Preshared Key"
+msgid "Prefer UMTS"
 msgstr ""
 
+msgid "Prefix Delegated"
+msgstr "Prefixo Delegado"
+
+msgid "Preshared Key"
+msgstr "Chave Compartilhada"
+
 msgid ""
 "Presume peer to be dead after given amount of LCP echo failures, use 0 to "
 "ignore failures"
@@ -2503,7 +2586,7 @@ msgstr ""
 "echo do LCP. Use 0 para ignorar as falhas"
 
 msgid "Prevent listening on these interfaces."
-msgstr ""
+msgstr "Evite escutar nestas Interfaces."
 
 msgid "Prevents client-to-client communication"
 msgstr "Impede a comunicação de cliente para cliente"
@@ -2512,7 +2595,7 @@ msgid "Prism2/2.5/3 802.11b Wireless Controller"
 msgstr "Prism2/2.5/3 802.11b Wireless Controlador"
 
 msgid "Private Key"
-msgstr ""
+msgstr "Chave Privada"
 
 msgid "Proceed"
 msgstr "Proceder"
@@ -2521,7 +2604,7 @@ msgid "Processes"
 msgstr "Processos"
 
 msgid "Profile"
-msgstr ""
+msgstr "Perfil"
 
 msgid "Prot."
 msgstr "Protocolo"
@@ -2548,25 +2631,27 @@ msgid "Pseudo Ad-Hoc (ahdemo)"
 msgstr "Ad-Hoc falso (ahdemo)"
 
 msgid "Public Key"
-msgstr ""
+msgstr "Chave Pública"
 
 msgid "Public prefix routed to this device for distribution to clients."
 msgstr ""
+"Prefixo público roteado para este dispositivo para distribuição a seus "
+"clientes."
 
 msgid "QMI Cellular"
-msgstr ""
+msgstr "Celular QMI"
 
 msgid "Quality"
 msgstr "Qualidade"
 
 msgid "R0 Key Lifetime"
-msgstr ""
+msgstr "Validade da Chave R0"
 
 msgid "R1 Key Holder"
-msgstr ""
+msgstr "Detentor da Chave R1"
 
 msgid "RFC3947 NAT-T mode"
-msgstr ""
+msgstr "Modo NAT-T (RFC3947)"
 
 msgid "RTS/CTS Threshold"
 msgstr "Limiar RTS/CTS"
@@ -2625,7 +2710,6 @@ msgstr ""
 msgid "Really reset all changes?"
 msgstr "Realmente limpar todas as mudanças?"
 
-#, fuzzy
 msgid ""
 "Really shut down network?\\nYou might lose access to this device if you are "
 "connected via this interface."
@@ -2661,7 +2745,7 @@ msgid "Realtime Wireless"
 msgstr "Rede sem fio em Tempo Real"
 
 msgid "Reassociation Deadline"
-msgstr ""
+msgstr "Limite para Reassociação"
 
 msgid "Rebind protection"
 msgstr "Proteção contra \"Rebind\""
@@ -2682,7 +2766,7 @@ msgid "Receiver Antenna"
 msgstr "Antena de Recepção"
 
 msgid "Recommended. IP addresses of the WireGuard interface."
-msgstr ""
+msgstr "Recomendado. Endereços IP da interface do WireGuard."
 
 msgid "Reconnect this interface"
 msgstr "Reconectar esta interface"
@@ -2693,9 +2777,6 @@ msgstr "Reconectando interface"
 msgid "References"
 msgstr "Referências"
 
-msgid "Regulatory Domain"
-msgstr "Domínio Regulatório"
-
 msgid "Relay"
 msgstr "Retransmissor"
 
@@ -2712,7 +2793,7 @@ msgid "Remote IPv4 address"
 msgstr "Endereço IPv4 remoto"
 
 msgid "Remote IPv4 address or FQDN"
-msgstr ""
+msgstr "Endereço IPv4 remoto ou FQDN"
 
 msgid "Remove"
 msgstr "Remover"
@@ -2727,41 +2808,47 @@ msgid "Replace wireless configuration"
 msgstr "Substituir a configuração da rede sem fio"
 
 msgid "Request IPv6-address"
-msgstr ""
+msgstr "Solicita endereço IPv6"
 
 msgid "Request IPv6-prefix of length"
-msgstr ""
+msgstr "Solicita prefixo IPv6 de tamanho"
 
 msgid "Require TLS"
-msgstr ""
+msgstr "Requer TLS"
 
 msgid "Required"
-msgstr ""
+msgstr "Necessário"
 
 msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
-msgstr "Requerido para alguns provedores de internet, ex. Charter com DOCSIS 3"
+msgstr ""
+"Obrigatório para alguns provedores de internet, ex. Charter com DOCSIS 3"
 
 msgid "Required. Base64-encoded private key for this interface."
-msgstr ""
+msgstr "Obrigatório. Chave privada codificada em Base64 para esta interface."
+
+msgid "Required. Base64-encoded public key of peer."
+msgstr "Necessário. Chave Pública do parceiro codificada como Base64."
 
 msgid ""
 "Required. IP addresses and prefixes that this peer is allowed to use inside "
 "the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
 "routes through the tunnel."
 msgstr ""
-
-msgid "Required. Public key of peer."
-msgstr ""
+"Obrigatório. Endereços IP e prefixos que este parceiro está autorizado a "
+"usar dentro do túnel. Normalmente é o endereço IP do parceiro no túnel e as "
+"redes que o parceiro roteia através do túnel."
 
 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 ""
+msgstr "Obrigatório. Chave Pública do parceiro."
 
 msgid ""
 "Requires upstream supports DNSSEC; verify unsigned domain responses really "
 "come from unsigned domains"
 msgstr ""
+"Exige o suporte DNSSEC do servidor superior; verifica se resposta não "
+"assinadas realmente vẽm de domínios não assinados."
 
 msgid "Reset"
 msgstr "Limpar"
@@ -2800,19 +2887,19 @@ msgid "Root directory for files served via TFTP"
 msgstr "Diretório raiz para arquivos disponibilizados pelo TFTP"
 
 msgid "Root preparation"
-msgstr ""
+msgstr "Prepação da raiz (/)"
 
 msgid "Route Allowed IPs"
-msgstr ""
+msgstr "Roteie Andereços IP Autorizados"
 
 msgid "Route type"
-msgstr ""
+msgstr "Tipo de rota"
 
 msgid "Routed IPv6 prefix for downstream interfaces"
-msgstr ""
+msgstr "Prefixo roteável IPv6 para interfaces internas"
 
 msgid "Router Advertisement-Service"
-msgstr ""
+msgstr "Serviço de Anúncio de Roteador"
 
 msgid "Router Password"
 msgstr "Senha do Roteador"
@@ -2835,30 +2922,32 @@ msgid "Run filesystem check"
 msgstr "Execute a verificação do sistema de arquivos "
 
 msgid "SHA256"
-msgstr ""
+msgstr "SHA256"
 
 msgid ""
 "SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) "
 "use 6in4 instead"
 msgstr ""
+"O SIXXS suporta somente TIC. Use o 6in4 para túneis estáticos usando o "
+"protocolo IP 41 (RFC4213)"
 
 msgid "SIXXS-handle[/Tunnel-ID]"
-msgstr ""
+msgstr "Identificador do SIXXS[/Identificador do Túnel]"
 
 msgid "SNR"
-msgstr ""
+msgstr "SNR"
 
 msgid "SSH Access"
 msgstr "Acesso SSH"
 
 msgid "SSH server address"
-msgstr ""
+msgstr "Endereço do servidor SSH"
 
 msgid "SSH server port"
-msgstr ""
+msgstr "Porta do servidor SSH"
 
 msgid "SSH username"
-msgstr ""
+msgstr "Usuário do SSH"
 
 msgid "SSH-Keys"
 msgstr "Chaves SSH"
@@ -2900,22 +2989,21 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Isolar Clientes"
 
-msgid "Separate WDS"
-msgstr "Separar WDS"
-
 msgid "Server Settings"
 msgstr "Configurações do Servidor"
 
 msgid "Server password"
-msgstr ""
+msgstr "Senha do servidor"
 
 msgid ""
 "Server password, enter the specific password of the tunnel when the username "
 "contains the tunnel ID"
 msgstr ""
+"Senha do servidor. Informe a senha para este túnel quando o nome do usuário "
+"contiver o identificador do túnel"
 
 msgid "Server username"
-msgstr ""
+msgstr "Usuário do servidor"
 
 msgid "Service Name"
 msgstr "Nome do Serviço"
@@ -2926,7 +3014,11 @@ msgstr "Tipo do Serviço"
 msgid "Services"
 msgstr "Serviços"
 
-#, fuzzy
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 msgid "Set up Time Synchronization"
 msgstr "Configurar a Sincronização do Horário"
 
@@ -2935,9 +3027,11 @@ msgstr "Configurar Servidor DHCP"
 
 msgid "Severely Errored Seconds (SES)"
 msgstr ""
+"Segundos com erro severos (<abbr title=\"Severely Errored Seconds\">SES</"
+"abbr>)"
 
 msgid "Short GI"
-msgstr ""
+msgstr "Intervalo de guarda curto"
 
 msgid "Show current backup file list"
 msgstr "Mostra a lista atual de arquivos para a cópia de segurança"
@@ -2952,7 +3046,7 @@ msgid "Signal"
 msgstr "Sinal"
 
 msgid "Signal Attenuation (SATN)"
-msgstr ""
+msgstr "Atenuação do Sinal (<abbr title=\"Signal Attenuation\">SATN</abbr>)"
 
 msgid "Signal:"
 msgstr "Sinal:"
@@ -2961,7 +3055,7 @@ msgid "Size"
 msgstr "Tamanho"
 
 msgid "Size (.ipk)"
-msgstr ""
+msgstr "Tamanho (.ipk)"
 
 msgid "Skip"
 msgstr "Pular"
@@ -2979,7 +3073,7 @@ msgid "Software"
 msgstr "Software"
 
 msgid "Software VLAN"
-msgstr ""
+msgstr "VLAN em Software"
 
 msgid "Some fields are invalid, cannot save values!"
 msgstr "Alguns campos estão inválidos e os valores não podem ser salvos!"
@@ -3006,7 +3100,7 @@ msgid "Source"
 msgstr "Origem"
 
 msgid "Source routing"
-msgstr ""
+msgstr "Roteamento pela origem"
 
 msgid "Specifies the button state to handle"
 msgstr "Especifica o estado do botão para ser tratado"
@@ -3032,17 +3126,21 @@ msgstr ""
 "equipamento está morto"
 
 msgid "Specify a TOS (Type of Service)."
-msgstr ""
+msgstr "Especifique um Tipo de Serviço (TOS)"
 
 msgid ""
 "Specify a TTL (Time to Live) for the encapsulating packet other than the "
 "default (64)."
 msgstr ""
+"Especifica o tempo de vida (<abbr title=\"Time to Live\">TTL</abbr>) para os "
+"pacotes encapsulados ao invés do padrão (64)."
 
 msgid ""
 "Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
 "bytes)."
 msgstr ""
+"Especifica a unidade máxima de transmissão (<abbr title=\"Maximum "
+"Transmission Unit\">MTU</abbr>) ao invés do valor padrão (1280 bytes)"
 
 msgid "Specify the secret encryption key here."
 msgstr "Especifique a chave de cifragem secreta aqui."
@@ -3068,9 +3166,6 @@ msgstr "Alocações Estáticas"
 msgid "Static Routes"
 msgstr "Rotas Estáticas"
 
-msgid "Static WDS"
-msgstr "WDS Estático"
-
 msgid "Static address"
 msgstr "Endereço Estático"
 
@@ -3097,13 +3192,13 @@ msgid "Submit"
 msgstr "Enviar"
 
 msgid "Suppress logging"
-msgstr ""
+msgstr "Suprimir registros (log)"
 
 msgid "Suppress logging of the routine operation of these protocols"
-msgstr ""
+msgstr "Suprimir registros (log) de operações rotineiras destes protocolos"
 
 msgid "Swap"
-msgstr ""
+msgstr "Espaço de Troca (swap)"
 
 msgid "Swap Entry"
 msgstr "Entrada do espaço de troca (Swap)"
@@ -3120,9 +3215,11 @@ msgstr "Switch %q (%s)"
 msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
+"O Switch %q tem uma topologia desconhecida - as configurações de VLAN podem "
+"não ser precisas."
 
 msgid "Switch VLAN"
-msgstr ""
+msgstr "Switch VLAN"
 
 msgid "Switch protocol"
 msgstr "Trocar o protocolo"
@@ -3167,12 +3264,11 @@ msgid "Target"
 msgstr "Destino"
 
 msgid "Target network"
-msgstr ""
+msgstr "Rede de destino"
 
 msgid "Terminate"
 msgstr "Terminar"
 
-#, fuzzy
 msgid ""
 "The <em>Device Configuration</em> section covers physical settings of the "
 "radio hardware such as channel, transmit power or antenna selection which "
@@ -3198,10 +3294,12 @@ msgid ""
 "The HE.net endpoint update configuration changed, you must now use the plain "
 "username instead of the user ID!"
 msgstr ""
+"A configuração da atualização de pontas HE.net mudou. Você deve agora usar o "
+"nome do usuário ao invés do identificador do usuário!"
 
 msgid ""
 "The IPv4 address or the fully-qualified domain name of the remote tunnel end."
-msgstr ""
+msgstr "O endereço IPv4 ou o nome completo (FQDN) da ponta remota do túnel."
 
 msgid ""
 "The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
@@ -3217,13 +3315,14 @@ msgstr ""
 
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
+"O arquivo de configuração não pode ser carregado devido ao seguinte erro:"
 
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
 msgstr ""
-"O arquivo do dispositivo de armazenamento ou da partição (<abbr title=\"por "
-"exemplo\">ex.</abbr> <code>/dev/sda1</code>)"
+"O arquivo do dispositivo de armazenamento ou da partição (ex: <code>/dev/"
+"sda1</code>)"
 
 msgid ""
 "The filesystem that was used to format the memory (<abbr title=\"for example"
@@ -3256,7 +3355,6 @@ msgstr "As seguintes regras estão atualmente ativas neste sistema."
 msgid "The given network name is not unique"
 msgstr "O nome de rede informado não é único"
 
-#, fuzzy
 msgid ""
 "The hardware is not multi-SSID capable and the existing configuration will "
 "be replaced if you proceed."
@@ -3274,7 +3372,7 @@ msgid "The length of the IPv6 prefix in bits"
 msgstr "O comprimento do prefixo IPv6 em bits"
 
 msgid "The local IPv4 address over which the tunnel is created (optional)."
-msgstr ""
+msgstr "O endereço IPv4 local sobre o qual o túnel será criado (opcional)."
 
 msgid ""
 "The network ports on this device can be combined to several <abbr title="
@@ -3296,7 +3394,7 @@ msgid "The selected protocol needs a device assigned"
 msgstr "O protocolo selecionado necessita estar associado a um dispositivo"
 
 msgid "The submitted security token is invalid or already expired!"
-msgstr ""
+msgstr "A chave eletrônica enviada é inválida ou já expirou!"
 
 msgid ""
 "The system is erasing the configuration partition now and will reboot itself "
@@ -3305,7 +3403,6 @@ msgstr ""
 "O sistema está apagando agora a partição da configuração e irá reiniciar "
 "quando terminado."
 
-#, fuzzy
 msgid ""
 "The system is flashing now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a "
 "few minutes before you try to reconnect. It might be necessary to renew the "
@@ -3321,6 +3418,8 @@ msgid ""
 "The tunnel end-point is behind NAT, defaults to disabled and only applies to "
 "AYIYA"
 msgstr ""
+"O final do túnel está atrás de um NAT. Por padrão será desabilitado e "
+"somente se aplica a AYIYA"
 
 msgid ""
 "The uploaded image file does not contain a supported format. Make sure that "
@@ -3363,6 +3462,9 @@ msgid ""
 "'server=1.2.3.4' fordomain-specific or full upstream <abbr title=\"Domain "
 "Name System\">DNS</abbr> servers."
 msgstr ""
+"Este arquivo deve conter linhas como 'server=/domain/1.2.3.4' ou "
+"'server=1.2.3.4' para servidores <abbr title=\"Domain Name System/Sistema de "
+"Nomes de Domínios\">DNS</abbr> por domínio ou completos."
 
 msgid ""
 "This is a list of shell glob patterns for matching files and directories to "
@@ -3378,6 +3480,8 @@ msgid ""
 "This is either the \"Update Key\" configured for the tunnel or the account "
 "password if no update key has been configured"
 msgstr ""
+"Isto é a \"Update Key\" configurada para o túnel ou a senha da cpnta se não "
+"tem uma \"Update Keu\" configurada"
 
 msgid ""
 "This is the content of /etc/rc.local. Insert your own commands here (in "
@@ -3401,11 +3505,13 @@ msgstr ""
 "\">DHCP</abbr> na rede local"
 
 msgid "This is the plain username for logging into the account"
-msgstr ""
+msgstr "Este é o nome do usuário em para se autenticar na sua conta"
 
 msgid ""
 "This is the prefix routed to you by the tunnel broker for use by clients"
 msgstr ""
+"Este é o prefixo roteado pelo agente do tunel para você usar com seus "
+"clientes"
 
 msgid "This is the system crontab in which scheduled tasks can be defined."
 msgstr "Este é o sistema de agendamento de tarefas."
@@ -3449,7 +3555,7 @@ msgstr ""
 "de segurança anterior."
 
 msgid "Tone"
-msgstr ""
+msgstr "Tom"
 
 msgid "Total Available"
 msgstr "Total Disponível"
@@ -3488,19 +3594,16 @@ msgid "Tunnel Interface"
 msgstr "Interface de Tunelamento"
 
 msgid "Tunnel Link"
-msgstr ""
+msgstr "Enlace do túnel"
 
 msgid "Tunnel broker protocol"
-msgstr ""
+msgstr "Protocolo do agente do túnel"
 
 msgid "Tunnel setup server"
-msgstr ""
+msgstr "Servidor de configuração do túnel"
 
 msgid "Tunnel type"
-msgstr ""
-
-msgid "Turbo Mode"
-msgstr "Modo Turbo"
+msgstr "Tipo de túnel"
 
 msgid "Tx-Power"
 msgstr "Potência de transmissão"
@@ -3521,7 +3624,7 @@ msgid "USB Device"
 msgstr "Dispositivo USB"
 
 msgid "USB Ports"
-msgstr ""
+msgstr "Portas USB"
 
 msgid "UUID"
 msgstr "UUID"
@@ -3531,6 +3634,8 @@ msgstr "Não é possível a expedição"
 
 msgid "Unavailable Seconds (UAS)"
 msgstr ""
+"Segundos de indisponibilidade (<abbr title=\"Unavailable Seconds\">UAS</"
+"abbr>)"
 
 msgid "Unknown"
 msgstr "Desconhecido"
@@ -3542,7 +3647,7 @@ msgid "Unmanaged"
 msgstr "Não gerenciado"
 
 msgid "Unmount"
-msgstr ""
+msgstr "Desmontar"
 
 msgid "Unsaved Changes"
 msgstr "Alterações Não Salvas"
@@ -3584,22 +3689,24 @@ msgid "Use ISO/IEC 3166 alpha2 country codes."
 msgstr "Usar códigos de países ISO/IEC 3166 alpha2."
 
 msgid "Use MTU on tunnel interface"
-msgstr "Use MTU na interface do túnel"
+msgstr ""
+"Use o <abbr title=\"Maximum Transmission Unit/Unidade Máxima de Transmissão"
+"\">MTU</abbr> na interface do túnel"
 
 msgid "Use TTL on tunnel interface"
 msgstr "Use TTL na interface do túnel"
 
 msgid "Use as external overlay (/overlay)"
-msgstr ""
+msgstr "Use como uma sobreposição externa (/overlay)"
 
 msgid "Use as root filesystem (/)"
-msgstr ""
+msgstr "Usar como o sistema de arquivos raiz (/)"
 
 msgid "Use broadcast flag"
 msgstr "Use a marcação de broadcast"
 
 msgid "Use builtin IPv6-management"
-msgstr ""
+msgstr "Use o gerenciamento do IPv6 embarcado"
 
 msgid "Use custom DNS servers"
 msgstr "Use servidores DNS personalizados"
@@ -3636,12 +3743,14 @@ msgid ""
 "Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
 "needed with normal WPA(2)-PSK."
 msgstr ""
+"Usado para dois diferentes propósitos: identificador do RADIUS NAS e do "
+"802.11r R0KH. Não necessário com o WPA(2)-PSK normal."
 
 msgid "User certificate (PEM encoded)"
-msgstr ""
+msgstr "Certificado do usuário (codificado em formato PEM)"
 
 msgid "User key (PEM encoded)"
-msgstr ""
+msgstr "Chave do usuário (codificada em formato PEM)"
 
 msgid "Username"
 msgstr "Usuário"
@@ -3650,7 +3759,7 @@ msgid "VC-Mux"
 msgstr "VC-Mux"
 
 msgid "VDSL"
-msgstr ""
+msgstr "VDSL"
 
 msgid "VLANs on %q"
 msgstr "VLANs em %q"
@@ -3659,34 +3768,34 @@ msgid "VLANs on %q (%s)"
 msgstr "VLANs em %q (%s)"
 
 msgid "VPN Local address"
-msgstr ""
+msgstr "Endereço Local da VPN"
 
 msgid "VPN Local port"
-msgstr ""
+msgstr "Porta Local da VPN"
 
 msgid "VPN Server"
 msgstr "Servidor VPN"
 
 msgid "VPN Server port"
-msgstr ""
+msgstr "Porta do Servidor VPN"
 
 msgid "VPN Server's certificate SHA1 hash"
-msgstr ""
+msgstr "Resumo digital SHA1 do certificado do servidor VPN"
 
 msgid "VPNC (CISCO 3000 (and others) VPN)"
-msgstr ""
+msgstr "VPNC (VPN do CISCO 3000 (e outros))"
 
 msgid "Vendor"
-msgstr ""
+msgstr "Fabricante"
 
 msgid "Vendor Class to send when requesting DHCP"
 msgstr "Classe do fabricante para enviar quando requisitar o DHCP"
 
 msgid "Verbose"
-msgstr ""
+msgstr "Detalhado"
 
 msgid "Verbose logging by aiccu daemon"
-msgstr ""
+msgstr "Habilite registros detalhados do serviço AICCU"
 
 msgid "Verify"
 msgstr "Verificar"
@@ -3722,6 +3831,8 @@ msgstr ""
 msgid ""
 "Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)"
 msgstr ""
+"Espere esta quantidade de segundos pela sincronia do NTP. Definindo como 0 "
+"desabilita a espera (opcional)"
 
 msgid "Waiting for changes to be applied..."
 msgstr "Esperando a aplicação das mudanças..."
@@ -3730,25 +3841,25 @@ msgid "Waiting for command to complete..."
 msgstr "Esperando o término do comando..."
 
 msgid "Waiting for device..."
-msgstr ""
+msgstr "Esperando pelo dispositivo..."
 
 msgid "Warning"
 msgstr "Atenção"
 
 msgid "Warning: There are unsaved changes that will get lost on reboot!"
-msgstr ""
+msgstr "Atenção: Existem mudanças não salvas que serão perdidas ao reiniciar!"
 
 msgid "Whether to create an IPv6 default route over the tunnel"
-msgstr ""
+msgstr "Se deve criar uma rota padrão IPv6 sobre o túnel"
 
 msgid "Whether to route only packets from delegated prefixes"
-msgstr ""
+msgstr "Se deve rotear somente pacotes de prefixos delegados"
 
 msgid "Width"
-msgstr ""
+msgstr "Largura"
 
 msgid "WireGuard VPN"
-msgstr ""
+msgstr "VPN WireGuard"
 
 msgid "Wireless"
 msgstr "Rede sem fio"
@@ -3787,10 +3898,7 @@ msgid "Write received DNS requests to syslog"
 msgstr "Escreva as requisições DNS para o servidor de registro (syslog)"
 
 msgid "Write system log to file"
-msgstr ""
-
-msgid "XR Support"
-msgstr "Suporte a XR"
+msgstr "Escrever registo do sistema (log) no arquivo"
 
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
@@ -3804,7 +3912,7 @@ msgstr ""
 "inacessível!</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
 "Você precisa habilitar o JavaScript no seu navegador ou o LuCI não irá "
 "funcionar corretamente."
@@ -3814,6 +3922,9 @@ msgid ""
 "upgrade it to at least version 7 or use another browser like Firefox, Opera "
 "or Safari."
 msgstr ""
+"Seu Internet Explorer é muito velho para mostrar esta página corretamente. "
+"Por favor, atualiza para, ao menos, a versão 7 ou use outro navegador como o "
+"Firefox, Opera ou Safari."
 
 msgid "any"
 msgstr "qualquer"
@@ -3821,9 +3932,8 @@ msgstr "qualquer"
 msgid "auto"
 msgstr "automático"
 
-#, fuzzy
 msgid "automatic"
-msgstr "estático"
+msgstr "automático"
 
 msgid "baseT"
 msgstr "baseT"
@@ -3847,7 +3957,7 @@ msgid "disable"
 msgstr "desativar"
 
 msgid "disabled"
-msgstr ""
+msgstr "desabilitado"
 
 msgid "expired"
 msgstr "expirado"
@@ -3875,7 +3985,7 @@ msgid "hidden"
 msgstr "ocultar"
 
 msgid "hybrid mode"
-msgstr ""
+msgstr "Modo Híbrido"
 
 msgid "if target is a network"
 msgstr "se o destino for uma rede"
@@ -3897,13 +4007,13 @@ msgstr ""
 "Arquivo local de <abbr title=\"Sistema de Nomes de Domínios\">DNS</abbr>"
 
 msgid "minimum 1280, maximum 1480"
-msgstr ""
+msgstr "mínimo 1280, máximo 1480"
 
 msgid "minutes"
-msgstr ""
+msgstr "minutos"
 
 msgid "navigation Navigation"
-msgstr ""
+msgstr "navegação Navegação"
 
 # Is this yes/no or no like in no one?
 msgid "no"
@@ -3916,7 +4026,7 @@ msgid "none"
 msgstr "nenhum"
 
 msgid "not present"
-msgstr ""
+msgstr "não presente "
 
 msgid "off"
 msgstr "desligado"
@@ -3928,37 +4038,37 @@ msgid "open"
 msgstr "aberto"
 
 msgid "overlay"
-msgstr ""
+msgstr "sobreposição"
 
 msgid "relay mode"
-msgstr ""
+msgstr "modo retransmissor"
 
 msgid "routed"
 msgstr "roteado"
 
 msgid "server mode"
-msgstr ""
+msgstr "modo servidor"
 
 msgid "skiplink1 Skip to navigation"
-msgstr ""
+msgstr "skiplink1 Pular para a navegação"
 
 msgid "skiplink2 Skip to content"
-msgstr ""
+msgstr "skiplink2 Pular para o conteúdo"
 
 msgid "stateful-only"
-msgstr ""
+msgstr "somente com estado"
 
 msgid "stateless"
-msgstr ""
+msgstr "sem estado"
 
 msgid "stateless + stateful"
-msgstr ""
+msgstr "sem estado + com estado"
 
 msgid "tagged"
 msgstr "etiquetado"
 
 msgid "time units (TUs / 1.024 ms) [1000-65535]"
-msgstr ""
+msgstr "unidades de tempo (TUs / 1.024 ms) [1000-65535]"
 
 msgid "unknown"
 msgstr "desconhecido"
@@ -3981,6 +4091,54 @@ msgstr "sim"
 msgid "« Back"
 msgstr "« Voltar"
 
+#~ msgid "AR Support"
+#~ msgstr "Suporte AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Controlador Wireless Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "Busca em Segundo Plano"
+
+#~ msgid "Compression"
+#~ msgstr "Compressão"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Desativar temporizador de Beacon de Hardware"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Não enviar respostas de exames"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Quadros Rápidos"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Taxa Máxima"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Taxa Mínima"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Taxa de Multicast"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Canais para externo"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Domínio Regulatório"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Separar WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS Estático"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Modo Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Suporte a XR"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr "Uma rede adicional será criada se você deixar isto desmarcado."
 
index 389b077..2c15673 100644 (file)
@@ -157,6 +157,11 @@ msgstr "<abbr title=\"máximo\">Max.</abbr> consultas concorrentes"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Emparelhada: %s / Grupo: %s'>%s - %s</abbr>"
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -175,9 +180,6 @@ msgstr ""
 msgid "APN"
 msgstr "APN"
 
-msgid "AR Support"
-msgstr "Suporte AR"
-
 msgid "ARP retry threshold"
 msgstr "Limiar de tentativas ARP"
 
@@ -423,9 +425,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "Estações Associadas"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Controlador Wireless Atheros 802.11%s"
-
 msgid "Auth Group"
 msgstr ""
 
@@ -504,9 +503,6 @@ msgstr "Voltar à vista global"
 msgid "Back to scan results"
 msgstr "Voltar aos resultados do scan"
 
-msgid "Background Scan"
-msgstr "Procurar em Segundo Plano"
-
 msgid "Backup / Flash Firmware"
 msgstr "Backup / Flashar Firmware"
 
@@ -675,9 +671,6 @@ msgstr "Comando"
 msgid "Common Configuration"
 msgstr "Configuração comum"
 
-msgid "Compression"
-msgstr "Compressão"
-
 msgid "Configuration"
 msgstr "Configuração"
 
@@ -898,9 +891,6 @@ msgstr "Desativar configuração de DNS"
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "Desativar temporizador de HW-Beacon"
-
 msgid "Disabled"
 msgstr "Desativado"
 
@@ -948,9 +938,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr "Não encaminhar lookups reversos para as redes locais"
 
-msgid "Do not send probe responses"
-msgstr "Não enviar respostas a sondas"
-
 msgid "Domain required"
 msgstr "Requerer domínio"
 
@@ -1153,9 +1140,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "Frames Rápidas"
-
 msgid "File"
 msgstr "Ficheiro"
 
@@ -1191,6 +1175,9 @@ msgstr "Terminar"
 msgid "Firewall"
 msgstr "Firewall"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "Definições da Firewall"
 
@@ -1236,6 +1223,9 @@ msgstr "Forçar TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "Forçar TKIP e CCMP (AES)"
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1639,6 +1629,9 @@ msgstr "O ID de VLAN fornecido é inválido! Só os IDs únicos são permitidos.
 msgid "Invalid username and/or password! Please try again."
 msgstr "Username inválido e/ou a password! Por favor, tente novamente."
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1647,8 +1640,8 @@ msgstr ""
 "A imagem que está a tentar carregar aparenta não caber na flash do "
 "equipamento. Por favor verifique o ficheiro de imagem."
 
-msgid "Java Script required!"
-msgstr "É necessário Javascript!"
+msgid "JavaScript required!"
+msgstr "É necessário JavaScript!"
 
 msgid "Join Network"
 msgstr "Associar Rede"
@@ -1916,9 +1909,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Taxa Máxima"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Número máximo permitido de concessões DHCP ativas"
 
@@ -1954,9 +1944,6 @@ msgstr "Uso de memória (%)"
 msgid "Metric"
 msgstr "Métrica"
 
-msgid "Minimum Rate"
-msgstr "Taxa Mínima"
-
 msgid "Minimum hold time"
 msgstr "Tempo de retenção mínimo"
 
@@ -2030,9 +2017,6 @@ msgstr "Subir"
 msgid "Move up"
 msgstr "Descer"
 
-msgid "Multicast Rate"
-msgstr "Taxa de Multicast"
-
 msgid "Multicast address"
 msgstr "Endereço de multicast"
 
@@ -2045,6 +2029,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2238,8 +2225,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2276,9 +2268,6 @@ msgstr "Saída"
 msgid "Outbound:"
 msgstr "Saída:"
 
-msgid "Outdoor Channels"
-msgstr "Canais de Outdoor"
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2458,6 +2447,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2657,9 +2652,6 @@ msgstr "A reconectar interface"
 msgid "References"
 msgstr "Referências"
 
-msgid "Regulatory Domain"
-msgstr "Domínio Regulatório"
-
 msgid "Relay"
 msgstr ""
 
@@ -2708,15 +2700,15 @@ msgstr "Necessário para certos ISPs, p.ex. Charter with DOCSIS 3"
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2862,9 +2854,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Isolar Clientes"
 
-msgid "Separate WDS"
-msgstr "Separar WDS"
-
 msgid "Server Settings"
 msgstr ""
 
@@ -2888,6 +2877,11 @@ msgstr "Tipo de Serviço"
 msgid "Services"
 msgstr "Serviços"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 #, fuzzy
 msgid "Set up Time Synchronization"
 msgstr "Configurar Sincronização Horária"
@@ -3023,9 +3017,6 @@ msgstr "Atribuições Estáticas"
 msgid "Static Routes"
 msgstr "Rotas Estáticas"
 
-msgid "Static WDS"
-msgstr "WDS Estático"
-
 msgid "Static address"
 msgstr "Endereço estático"
 
@@ -3434,9 +3425,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Modo Turbo"
-
 msgid "Tx-Power"
 msgstr "Potência de Tx"
 
@@ -3716,9 +3704,6 @@ msgstr "Escrever os pedidos de DNS para o syslog"
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "Suporte XR"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3731,9 +3716,9 @@ msgstr ""
 "inacessível!</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
-"Tem de activar o Java Script no seu browser ou a LuCI não funcionará "
+"Tem de activar o JavaScript no seu browser ou a LuCI não funcionará "
 "corretamente."
 
 msgid ""
@@ -3907,6 +3892,54 @@ msgstr "sim"
 msgid "« Back"
 msgstr "« Voltar"
 
+#~ msgid "AR Support"
+#~ msgstr "Suporte AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Controlador Wireless Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "Procurar em Segundo Plano"
+
+#~ msgid "Compression"
+#~ msgstr "Compressão"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Desativar temporizador de HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Não enviar respostas a sondas"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Frames Rápidas"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Taxa Máxima"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Taxa Mínima"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Taxa de Multicast"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Canais de Outdoor"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Domínio Regulatório"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Separar WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS Estático"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Modo Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Suporte XR"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr "Uma rede adicional será criada se deixar isto desmarcado."
 
index 365574b..1de4157 100644 (file)
@@ -148,6 +148,11 @@ msgstr "<abbr title=\"maximal\">Max.</abbr> interogari simultane"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -166,9 +171,6 @@ msgstr ""
 msgid "APN"
 msgstr "APN"
 
-msgid "AR Support"
-msgstr "Suport AR"
-
 msgid "ARP retry threshold"
 msgstr "ARP prag reincercare"
 
@@ -409,9 +411,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "Statiile asociate"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s Controler Fara Fir"
-
 msgid "Auth Group"
 msgstr ""
 
@@ -490,9 +489,6 @@ msgstr "Inapoi la vedere generala"
 msgid "Back to scan results"
 msgstr "Inapoi la rezultatele scanarii"
 
-msgid "Background Scan"
-msgstr "Scanare in fundal"
-
 msgid "Backup / Flash Firmware"
 msgstr "Salveaza / Scrie Firmware"
 
@@ -650,9 +646,6 @@ msgstr "Comanda"
 msgid "Common Configuration"
 msgstr "Configurarea obisnuita"
 
-msgid "Compression"
-msgstr "Comprimare"
-
 msgid "Configuration"
 msgstr "Configurare"
 
@@ -868,9 +861,6 @@ msgstr "Dezactiveaza configuratia DNS"
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
 msgid "Disabled"
 msgstr "Dezactivat"
 
@@ -911,9 +901,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr ""
 
-msgid "Do not send probe responses"
-msgstr ""
-
 msgid "Domain required"
 msgstr "Domeniul necesar"
 
@@ -1105,9 +1092,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr ""
-
 msgid "File"
 msgstr "Fisier"
 
@@ -1143,6 +1127,9 @@ msgstr "Termina"
 msgid "Firewall"
 msgstr "Firewall"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "Setarile firewall-ului"
 
@@ -1189,6 +1176,9 @@ msgstr "Forteaza TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "Forteaza TKIP si CCMP (AES)"
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1579,6 +1569,9 @@ msgstr ""
 msgid "Invalid username and/or password! Please try again."
 msgstr "Utilizator si/sau parola invalide! Incearcati din nou."
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1587,8 +1580,8 @@ msgstr ""
 "Se pare ca ai incercat sa rescrii o imagine care nu are loc in memoria "
 "flash, verifica fisierul din nou!"
 
-msgid "Java Script required!"
-msgstr "Ai nevoie de Java Script !"
+msgid "JavaScript required!"
+msgstr "Ai nevoie de JavaScript !"
 
 msgid "Join Network"
 msgstr ""
@@ -1848,9 +1841,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Rata maxima"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -1886,9 +1876,6 @@ msgstr "Utilizarea memoriei (%)"
 msgid "Metric"
 msgstr "Metrica"
 
-msgid "Minimum Rate"
-msgstr "Rata minima"
-
 msgid "Minimum hold time"
 msgstr ""
 
@@ -1960,9 +1947,6 @@ msgstr ""
 msgid "Move up"
 msgstr ""
 
-msgid "Multicast Rate"
-msgstr "Rata de multicast"
-
 msgid "Multicast address"
 msgstr ""
 
@@ -1975,6 +1959,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2162,8 +2149,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2200,9 +2192,6 @@ msgstr "Iesire"
 msgid "Outbound:"
 msgstr ""
 
-msgid "Outdoor Channels"
-msgstr ""
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2382,6 +2371,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2570,9 +2565,6 @@ msgstr "Interfata se reconecteaza chiar acum"
 msgid "References"
 msgstr "Referinte"
 
-msgid "Regulatory Domain"
-msgstr "Domeniu regulatoriu"
-
 msgid "Relay"
 msgstr ""
 
@@ -2621,15 +2613,15 @@ msgstr ""
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2772,9 +2764,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr ""
 
-msgid "Separate WDS"
-msgstr ""
-
 msgid "Server Settings"
 msgstr "Setarile serverului"
 
@@ -2798,6 +2787,11 @@ msgstr "Tip de serviciu"
 msgid "Services"
 msgstr "Servicii"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 #, fuzzy
 msgid "Set up Time Synchronization"
 msgstr "Configurare sincronizare timp"
@@ -2933,9 +2927,6 @@ msgstr ""
 msgid "Static Routes"
 msgstr "Rute statice"
 
-msgid "Static WDS"
-msgstr ""
-
 msgid "Static address"
 msgstr ""
 
@@ -3301,9 +3292,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Mod turbo"
-
 msgid "Tx-Power"
 msgstr "Puterea TX"
 
@@ -3583,9 +3571,6 @@ msgstr "Scrie cererile DNS primite in syslog"
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "Suport XR"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3593,7 +3578,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
 
 msgid ""
@@ -3763,6 +3748,36 @@ msgstr "da"
 msgid "« Back"
 msgstr "« Inapoi"
 
+#~ msgid "AR Support"
+#~ msgstr "Suport AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s Controler Fara Fir"
+
+#~ msgid "Background Scan"
+#~ msgstr "Scanare in fundal"
+
+#~ msgid "Compression"
+#~ msgstr "Comprimare"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Rata maxima"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Rata minima"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Rata de multicast"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Domeniu regulatoriu"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Mod turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Suport XR"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr ""
 #~ "Daca lasati aceasta optiune neselectata va fi creata o retea aditionala"
index d11fbc2..2907705 100644 (file)
@@ -155,6 +155,11 @@ msgstr ""
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Парный: %s / Групповой: %s'>%s - %s</abbr>"
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -173,9 +178,6 @@ msgstr ""
 msgid "APN"
 msgstr "APN"
 
-msgid "AR Support"
-msgstr "Поддержка AR"
-
 msgid "ARP retry threshold"
 msgstr "Порог повтора ARP"
 
@@ -422,9 +424,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "Подключенные клиенты"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Беспроводной 802.11%s контроллер Atheros"
-
 msgid "Auth Group"
 msgstr ""
 
@@ -503,9 +502,6 @@ msgstr "Назад к обзору"
 msgid "Back to scan results"
 msgstr "Назад к результатам сканирования"
 
-msgid "Background Scan"
-msgstr "Фоновое сканирование"
-
 msgid "Backup / Flash Firmware"
 msgstr "Резервная копия / прошивка"
 
@@ -675,9 +671,6 @@ msgstr "Команда"
 msgid "Common Configuration"
 msgstr "Общая конфигурация"
 
-msgid "Compression"
-msgstr "Сжатие"
-
 msgid "Configuration"
 msgstr "Конфигурация"
 
@@ -897,9 +890,6 @@ msgstr "Отключить настройку DNS"
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "Отключить таймер HW-Beacon"
-
 msgid "Disabled"
 msgstr "Отключено"
 
@@ -946,9 +936,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr "Не перенаправлять обратные DNS-запросы для локальных сетей"
 
-msgid "Do not send probe responses"
-msgstr "Не посылать тестовые ответы"
-
 msgid "Domain required"
 msgstr "Требуется домен"
 
@@ -1154,9 +1141,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "Быстрые кадры"
-
 msgid "File"
 msgstr "Файл"
 
@@ -1192,6 +1176,9 @@ msgstr "Завершить"
 msgid "Firewall"
 msgstr "Межсетевой экран"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "Настройки межсетевого экрана"
 
@@ -1238,6 +1225,9 @@ msgstr "Требовать TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "TKIP или CCMP (AES)"
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1643,6 +1633,9 @@ msgstr "Указан неверный VLAN ID! Доступны только у
 msgid "Invalid username and/or password! Please try again."
 msgstr "Неверный логин и/или пароль! Пожалуйста попробуйте снова."
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1651,8 +1644,8 @@ msgstr ""
 "Вы пытаетесь обновить прошивку файлом, который не помещается в память "
 "устройства! Пожалуйста, проверьте файл образа."
 
-msgid "Java Script required!"
-msgstr "Требуется Java Script!"
+msgid "JavaScript required!"
+msgstr "Требуется JavaScript!"
 
 msgid "Join Network"
 msgstr "Подключение к сети"
@@ -1921,9 +1914,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Максимальная скорость"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Максимальное количество активных арендованных DHCP-адресов"
 
@@ -1959,9 +1949,6 @@ msgstr "Использование памяти (%)"
 msgid "Metric"
 msgstr "Метрика"
 
-msgid "Minimum Rate"
-msgstr "Минимальная скорость"
-
 msgid "Minimum hold time"
 msgstr "Минимальное время удержания"
 
@@ -2036,9 +2023,6 @@ msgstr "Переместить вниз"
 msgid "Move up"
 msgstr "Переместить вверх"
 
-msgid "Multicast Rate"
-msgstr "Скорость групповой передачи"
-
 msgid "Multicast address"
 msgstr "Адрес групповой передачи"
 
@@ -2051,6 +2035,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2244,8 +2231,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2282,9 +2274,6 @@ msgstr "Вне"
 msgid "Outbound:"
 msgstr "Исходящий:"
 
-msgid "Outdoor Channels"
-msgstr "Внешние каналы"
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2466,6 +2455,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2668,9 +2663,6 @@ msgstr "Интерфейс переподключается"
 msgid "References"
 msgstr "Ссылки"
 
-msgid "Regulatory Domain"
-msgstr "Нормативная зона"
-
 msgid "Relay"
 msgstr "Ретранслятор"
 
@@ -2719,15 +2711,15 @@ msgstr "Требуется для некоторых интернет-прова
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2874,9 +2866,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Разделять клиентов"
 
-msgid "Separate WDS"
-msgstr "Отдельный WDS"
-
 msgid "Server Settings"
 msgstr "Настройки сервера"
 
@@ -2900,6 +2889,11 @@ msgstr "Тип службы"
 msgid "Services"
 msgstr "Сервисы"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 #, fuzzy
 msgid "Set up Time Synchronization"
 msgstr "Настроить синхронизацию времени"
@@ -3041,9 +3035,6 @@ msgstr "Постоянные аренды"
 msgid "Static Routes"
 msgstr "Статические маршруты"
 
-msgid "Static WDS"
-msgstr "Статический WDS"
-
 msgid "Static address"
 msgstr "Статический адрес"
 
@@ -3468,9 +3459,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Турбо-режим"
-
 msgid "Tx-Power"
 msgstr "Мощность передатчика"
 
@@ -3758,9 +3746,6 @@ msgstr "Записывать полученные DNS-запросы в сист
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "Поддержка XR"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3772,9 +3757,9 @@ msgstr ""
 "(например \"network\"), ваше устройство может оказаться недоступным!</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
-"Вам необходимо включить Java Script в вашем браузере для корректной работы "
+"Вам необходимо включить JavaScript в вашем браузере для корректной работы "
 "LuCI."
 
 msgid ""
@@ -3948,6 +3933,54 @@ msgstr "да"
 msgid "« Back"
 msgstr "« Назад"
 
+#~ msgid "AR Support"
+#~ msgstr "Поддержка AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Беспроводной 802.11%s контроллер Atheros"
+
+#~ msgid "Background Scan"
+#~ msgstr "Фоновое сканирование"
+
+#~ msgid "Compression"
+#~ msgstr "Сжатие"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Отключить таймер HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Не посылать тестовые ответы"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Быстрые кадры"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Максимальная скорость"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Минимальная скорость"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Скорость групповой передачи"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Внешние каналы"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Нормативная зона"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Отдельный WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "Статический WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Турбо-режим"
+
+#~ msgid "XR Support"
+#~ msgstr "Поддержка XR"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr ""
 #~ "Если вы не выберите эту опцию, то будет создана дополнительная сеть."
index 017865d..318d6f3 100644 (file)
@@ -139,6 +139,11 @@ msgstr ""
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr ""
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -157,9 +162,6 @@ msgstr ""
 msgid "APN"
 msgstr ""
 
-msgid "AR Support"
-msgstr ""
-
 msgid "ARP retry threshold"
 msgstr ""
 
@@ -395,9 +397,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr ""
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
 msgid "Auth Group"
 msgstr ""
 
@@ -476,9 +475,6 @@ msgstr ""
 msgid "Back to scan results"
 msgstr ""
 
-msgid "Background Scan"
-msgstr ""
-
 msgid "Backup / Flash Firmware"
 msgstr ""
 
@@ -633,9 +629,6 @@ msgstr ""
 msgid "Common Configuration"
 msgstr ""
 
-msgid "Compression"
-msgstr ""
-
 msgid "Configuration"
 msgstr ""
 
@@ -849,9 +842,6 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
 msgid "Disabled"
 msgstr ""
 
@@ -892,9 +882,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr ""
 
-msgid "Do not send probe responses"
-msgstr ""
-
 msgid "Domain required"
 msgstr ""
 
@@ -1086,9 +1073,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr ""
-
 msgid "File"
 msgstr ""
 
@@ -1124,6 +1108,9 @@ msgstr ""
 msgid "Firewall"
 msgstr ""
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr ""
 
@@ -1169,6 +1156,9 @@ msgstr ""
 msgid "Force TKIP and CCMP (AES)"
 msgstr ""
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1557,12 +1547,15 @@ msgstr ""
 msgid "Invalid username and/or password! Please try again."
 msgstr ""
 
+msgid "Isolate Clients"
+msgstr ""
+
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
 "flash memory, please verify the image file!"
 msgstr ""
 
-msgid "Java Script required!"
+msgid "JavaScript required!"
 msgstr ""
 
 msgid "Join Network"
@@ -1823,9 +1816,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr ""
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -1861,9 +1851,6 @@ msgstr ""
 msgid "Metric"
 msgstr ""
 
-msgid "Minimum Rate"
-msgstr ""
-
 msgid "Minimum hold time"
 msgstr ""
 
@@ -1935,9 +1922,6 @@ msgstr ""
 msgid "Move up"
 msgstr ""
 
-msgid "Multicast Rate"
-msgstr ""
-
 msgid "Multicast address"
 msgstr ""
 
@@ -1950,6 +1934,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2137,8 +2124,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2175,9 +2167,6 @@ msgstr ""
 msgid "Outbound:"
 msgstr ""
 
-msgid "Outdoor Channels"
-msgstr ""
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2357,6 +2346,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2543,9 +2538,6 @@ msgstr ""
 msgid "References"
 msgstr ""
 
-msgid "Regulatory Domain"
-msgstr ""
-
 msgid "Relay"
 msgstr ""
 
@@ -2594,15 +2586,15 @@ msgstr ""
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2745,9 +2737,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr ""
 
-msgid "Separate WDS"
-msgstr ""
-
 msgid "Server Settings"
 msgstr ""
 
@@ -2771,6 +2760,11 @@ msgstr ""
 msgid "Services"
 msgstr ""
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 msgid "Set up Time Synchronization"
 msgstr ""
 
@@ -2905,9 +2899,6 @@ msgstr ""
 msgid "Static Routes"
 msgstr ""
 
-msgid "Static WDS"
-msgstr ""
-
 msgid "Static address"
 msgstr ""
 
@@ -3271,9 +3262,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr ""
-
 msgid "Tx-Power"
 msgstr ""
 
@@ -3551,9 +3539,6 @@ msgstr ""
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr ""
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3561,7 +3546,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
 
 msgid ""
index e7e437f..4e262ef 100644 (file)
@@ -145,6 +145,11 @@ msgstr ""
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr ""
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -163,9 +168,6 @@ msgstr ""
 msgid "APN"
 msgstr ""
 
-msgid "AR Support"
-msgstr ""
-
 msgid "ARP retry threshold"
 msgstr ""
 
@@ -401,9 +403,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr ""
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
 msgid "Auth Group"
 msgstr ""
 
@@ -482,9 +481,6 @@ msgstr ""
 msgid "Back to scan results"
 msgstr ""
 
-msgid "Background Scan"
-msgstr ""
-
 msgid "Backup / Flash Firmware"
 msgstr ""
 
@@ -639,9 +635,6 @@ msgstr ""
 msgid "Common Configuration"
 msgstr ""
 
-msgid "Compression"
-msgstr ""
-
 msgid "Configuration"
 msgstr ""
 
@@ -855,9 +848,6 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
 msgid "Disabled"
 msgstr ""
 
@@ -898,9 +888,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr ""
 
-msgid "Do not send probe responses"
-msgstr ""
-
 msgid "Domain required"
 msgstr ""
 
@@ -1092,9 +1079,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr ""
-
 msgid "File"
 msgstr ""
 
@@ -1130,6 +1114,9 @@ msgstr ""
 msgid "Firewall"
 msgstr ""
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr ""
 
@@ -1175,6 +1162,9 @@ msgstr ""
 msgid "Force TKIP and CCMP (AES)"
 msgstr ""
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1563,12 +1553,15 @@ msgstr ""
 msgid "Invalid username and/or password! Please try again."
 msgstr ""
 
+msgid "Isolate Clients"
+msgstr ""
+
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
 "flash memory, please verify the image file!"
 msgstr ""
 
-msgid "Java Script required!"
+msgid "JavaScript required!"
 msgstr ""
 
 msgid "Join Network"
@@ -1829,9 +1822,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr ""
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -1867,9 +1857,6 @@ msgstr ""
 msgid "Metric"
 msgstr ""
 
-msgid "Minimum Rate"
-msgstr ""
-
 msgid "Minimum hold time"
 msgstr ""
 
@@ -1941,9 +1928,6 @@ msgstr ""
 msgid "Move up"
 msgstr ""
 
-msgid "Multicast Rate"
-msgstr ""
-
 msgid "Multicast address"
 msgstr ""
 
@@ -1956,6 +1940,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2143,8 +2130,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2181,9 +2173,6 @@ msgstr ""
 msgid "Outbound:"
 msgstr ""
 
-msgid "Outdoor Channels"
-msgstr ""
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2363,6 +2352,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2549,9 +2544,6 @@ msgstr ""
 msgid "References"
 msgstr ""
 
-msgid "Regulatory Domain"
-msgstr ""
-
 msgid "Relay"
 msgstr ""
 
@@ -2600,15 +2592,15 @@ msgstr ""
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2751,9 +2743,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr ""
 
-msgid "Separate WDS"
-msgstr ""
-
 msgid "Server Settings"
 msgstr ""
 
@@ -2777,6 +2766,11 @@ msgstr ""
 msgid "Services"
 msgstr ""
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 msgid "Set up Time Synchronization"
 msgstr ""
 
@@ -2911,9 +2905,6 @@ msgstr ""
 msgid "Static Routes"
 msgstr ""
 
-msgid "Static WDS"
-msgstr ""
-
 msgid "Static address"
 msgstr ""
 
@@ -3277,9 +3268,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr ""
-
 msgid "Tx-Power"
 msgstr ""
 
@@ -3557,9 +3545,6 @@ msgstr ""
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr ""
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3567,7 +3552,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
 
 msgid ""
index cc47c2c..704c295 100644 (file)
@@ -132,6 +132,11 @@ msgstr ""
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr ""
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -150,9 +155,6 @@ msgstr ""
 msgid "APN"
 msgstr ""
 
-msgid "AR Support"
-msgstr ""
-
 msgid "ARP retry threshold"
 msgstr ""
 
@@ -388,9 +390,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr ""
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
 msgid "Auth Group"
 msgstr ""
 
@@ -469,9 +468,6 @@ msgstr ""
 msgid "Back to scan results"
 msgstr ""
 
-msgid "Background Scan"
-msgstr ""
-
 msgid "Backup / Flash Firmware"
 msgstr ""
 
@@ -626,9 +622,6 @@ msgstr ""
 msgid "Common Configuration"
 msgstr ""
 
-msgid "Compression"
-msgstr ""
-
 msgid "Configuration"
 msgstr ""
 
@@ -842,9 +835,6 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
 msgid "Disabled"
 msgstr ""
 
@@ -885,9 +875,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr ""
 
-msgid "Do not send probe responses"
-msgstr ""
-
 msgid "Domain required"
 msgstr ""
 
@@ -1079,9 +1066,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr ""
-
 msgid "File"
 msgstr ""
 
@@ -1117,6 +1101,9 @@ msgstr ""
 msgid "Firewall"
 msgstr ""
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr ""
 
@@ -1162,6 +1149,9 @@ msgstr ""
 msgid "Force TKIP and CCMP (AES)"
 msgstr ""
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1550,12 +1540,15 @@ msgstr ""
 msgid "Invalid username and/or password! Please try again."
 msgstr ""
 
+msgid "Isolate Clients"
+msgstr ""
+
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
 "flash memory, please verify the image file!"
 msgstr ""
 
-msgid "Java Script required!"
+msgid "JavaScript required!"
 msgstr ""
 
 msgid "Join Network"
@@ -1816,9 +1809,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr ""
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -1854,9 +1844,6 @@ msgstr ""
 msgid "Metric"
 msgstr ""
 
-msgid "Minimum Rate"
-msgstr ""
-
 msgid "Minimum hold time"
 msgstr ""
 
@@ -1928,9 +1915,6 @@ msgstr ""
 msgid "Move up"
 msgstr ""
 
-msgid "Multicast Rate"
-msgstr ""
-
 msgid "Multicast address"
 msgstr ""
 
@@ -1943,6 +1927,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2130,8 +2117,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2168,9 +2160,6 @@ msgstr ""
 msgid "Outbound:"
 msgstr ""
 
-msgid "Outdoor Channels"
-msgstr ""
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2350,6 +2339,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2536,9 +2531,6 @@ msgstr ""
 msgid "References"
 msgstr ""
 
-msgid "Regulatory Domain"
-msgstr ""
-
 msgid "Relay"
 msgstr ""
 
@@ -2587,15 +2579,15 @@ msgstr ""
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2738,9 +2730,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr ""
 
-msgid "Separate WDS"
-msgstr ""
-
 msgid "Server Settings"
 msgstr ""
 
@@ -2764,6 +2753,11 @@ msgstr ""
 msgid "Services"
 msgstr ""
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 msgid "Set up Time Synchronization"
 msgstr ""
 
@@ -2898,9 +2892,6 @@ msgstr ""
 msgid "Static Routes"
 msgstr ""
 
-msgid "Static WDS"
-msgstr ""
-
 msgid "Static address"
 msgstr ""
 
@@ -3264,9 +3255,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr ""
-
 msgid "Tx-Power"
 msgstr ""
 
@@ -3544,9 +3532,6 @@ msgstr ""
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr ""
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3554,7 +3539,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
 
 msgid ""
index 0931273..5f829e0 100644 (file)
@@ -148,6 +148,11 @@ msgstr "<abbr title=\"maximal\">Maks.</abbr> eşzamanlı sorgu"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr ""
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -166,9 +171,6 @@ msgstr ""
 msgid "APN"
 msgstr "APN"
 
-msgid "AR Support"
-msgstr "AR Desteği"
-
 msgid "ARP retry threshold"
 msgstr "ARP yenileme aralığı"
 
@@ -408,9 +410,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr ""
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s Kablosuz Denetleyicisi"
-
 msgid "Auth Group"
 msgstr ""
 
@@ -489,9 +488,6 @@ msgstr "Genel Bakışa dön"
 msgid "Back to scan results"
 msgstr "Tarama sonuçlarına dön"
 
-msgid "Background Scan"
-msgstr "Arka Planda Tarama"
-
 msgid "Backup / Flash Firmware"
 msgstr ""
 
@@ -646,9 +642,6 @@ msgstr ""
 msgid "Common Configuration"
 msgstr ""
 
-msgid "Compression"
-msgstr ""
-
 msgid "Configuration"
 msgstr ""
 
@@ -862,9 +855,6 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
 msgid "Disabled"
 msgstr ""
 
@@ -905,9 +895,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr ""
 
-msgid "Do not send probe responses"
-msgstr ""
-
 msgid "Domain required"
 msgstr ""
 
@@ -1099,9 +1086,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr ""
-
 msgid "File"
 msgstr ""
 
@@ -1137,6 +1121,9 @@ msgstr ""
 msgid "Firewall"
 msgstr ""
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr ""
 
@@ -1182,6 +1169,9 @@ msgstr ""
 msgid "Force TKIP and CCMP (AES)"
 msgstr ""
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1570,12 +1560,15 @@ msgstr ""
 msgid "Invalid username and/or password! Please try again."
 msgstr ""
 
+msgid "Isolate Clients"
+msgstr ""
+
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
 "flash memory, please verify the image file!"
 msgstr ""
 
-msgid "Java Script required!"
+msgid "JavaScript required!"
 msgstr ""
 
 msgid "Join Network"
@@ -1836,9 +1829,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr ""
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -1874,9 +1864,6 @@ msgstr ""
 msgid "Metric"
 msgstr ""
 
-msgid "Minimum Rate"
-msgstr ""
-
 msgid "Minimum hold time"
 msgstr ""
 
@@ -1948,9 +1935,6 @@ msgstr ""
 msgid "Move up"
 msgstr ""
 
-msgid "Multicast Rate"
-msgstr ""
-
 msgid "Multicast address"
 msgstr ""
 
@@ -1963,6 +1947,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2150,8 +2137,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2188,9 +2180,6 @@ msgstr ""
 msgid "Outbound:"
 msgstr ""
 
-msgid "Outdoor Channels"
-msgstr ""
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2370,6 +2359,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2556,9 +2551,6 @@ msgstr ""
 msgid "References"
 msgstr ""
 
-msgid "Regulatory Domain"
-msgstr ""
-
 msgid "Relay"
 msgstr ""
 
@@ -2607,15 +2599,15 @@ msgstr ""
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2758,9 +2750,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr ""
 
-msgid "Separate WDS"
-msgstr ""
-
 msgid "Server Settings"
 msgstr ""
 
@@ -2784,6 +2773,11 @@ msgstr ""
 msgid "Services"
 msgstr ""
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 msgid "Set up Time Synchronization"
 msgstr ""
 
@@ -2918,9 +2912,6 @@ msgstr ""
 msgid "Static Routes"
 msgstr ""
 
-msgid "Static WDS"
-msgstr ""
-
 msgid "Static address"
 msgstr ""
 
@@ -3284,9 +3275,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr ""
-
 msgid "Tx-Power"
 msgstr ""
 
@@ -3564,9 +3552,6 @@ msgstr ""
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr ""
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3574,7 +3559,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
 "LuCI'nin düzgün çalışması için tarayıcınızda Java Scripti "
 "etkinleştirmelisiniz."
@@ -3745,3 +3730,12 @@ msgstr "evet"
 
 msgid "« Back"
 msgstr "« Geri"
+
+#~ msgid "AR Support"
+#~ msgstr "AR Desteği"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s Kablosuz Denetleyicisi"
+
+#~ msgid "Background Scan"
+#~ msgstr "Arka Planda Tarama"
index 5abf039..34bfb29 100644 (file)
@@ -163,6 +163,11 @@ msgstr "<abbr title=\"Максимум\">Max.</abbr> одночасних зап
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Парний: %s / Груповий: %s'>%s - %s</abbr>"
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -182,9 +187,6 @@ msgid "APN"
 msgstr ""
 "<abbr title=\"Access Point Name — символічна назва точки доступу\">APN</abbr>"
 
-msgid "AR Support"
-msgstr "Підтримка AR"
-
 msgid "ARP retry threshold"
 msgstr "Поріг повтору ARP"
 
@@ -432,9 +434,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "Приєднані станції"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Бездротовий 802.11%s контролер Atheros"
-
 msgid "Auth Group"
 msgstr ""
 
@@ -513,9 +512,6 @@ msgstr "Повернутися до переліку"
 msgid "Back to scan results"
 msgstr "Повернутися до результатів сканування"
 
-msgid "Background Scan"
-msgstr "Сканування у фоновому режимі"
-
 msgid "Backup / Flash Firmware"
 msgstr "Резервне копіювання / Оновлення прошивки"
 
@@ -684,9 +680,6 @@ msgstr "Команда"
 msgid "Common Configuration"
 msgstr "Загальна конфігурація"
 
-msgid "Compression"
-msgstr "Стиснення"
-
 msgid "Configuration"
 msgstr "Конфігурація"
 
@@ -907,9 +900,6 @@ msgstr "Вимкнути настроювання DNS"
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "Вимкнути таймер HW-Beacon"
-
 msgid "Disabled"
 msgstr "Вимкнено"
 
@@ -957,9 +947,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr "Не спрямовувати зворотний перегляд для локальних мереж"
 
-msgid "Do not send probe responses"
-msgstr "Не надсилати відповіді на зондування"
-
 msgid "Domain required"
 msgstr "Потрібен домен"
 
@@ -1162,9 +1149,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "Швидкі фрейми"
-
 msgid "File"
 msgstr "Файл"
 
@@ -1200,6 +1184,9 @@ msgstr "Готово"
 msgid "Firewall"
 msgstr "Брандмауер"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "Настройки брандмауера"
 
@@ -1245,6 +1232,9 @@ msgstr "Примусово TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "Примусово TKIP та CCMP (AES)"
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1650,6 +1640,9 @@ msgstr "Задано невірний VLAN ID! Доступні тільки у
 msgid "Invalid username and/or password! Please try again."
 msgstr "Неприпустиме ім’я користувача та/або пароль! Спробуйте ще раз."
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1658,8 +1651,8 @@ msgstr ""
 "Схоже, що ви намагаєтеся залити образ, який не вміщається у флеш-пам'ять! "
 "Перевірте файл образу!"
 
-msgid "Java Script required!"
-msgstr "Потрібен Java Script!"
+msgid "JavaScript required!"
+msgstr "Потрібен JavaScript!"
 
 msgid "Join Network"
 msgstr "Підключення до мережі"
@@ -1930,9 +1923,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Максимальна швидкість"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Максимально допустима кількість активних оренд DHCP"
 
@@ -1968,9 +1958,6 @@ msgstr "Використання пам'яті, %"
 msgid "Metric"
 msgstr "Метрика"
 
-msgid "Minimum Rate"
-msgstr "Мінімальна швидкість"
-
 msgid "Minimum hold time"
 msgstr "Мінімальний час утримування"
 
@@ -2044,9 +2031,6 @@ msgstr "Вниз"
 msgid "Move up"
 msgstr "Вгору"
 
-msgid "Multicast Rate"
-msgstr "Швидкість багатоадресного потоку"
-
 msgid "Multicast address"
 msgstr "Адреса багатоадресного потоку"
 
@@ -2059,6 +2043,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2252,8 +2239,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2290,9 +2282,6 @@ msgstr "Вих."
 msgid "Outbound:"
 msgstr "Вихідний:"
 
-msgid "Outdoor Channels"
-msgstr "Зовнішні канали"
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2477,6 +2466,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2681,9 +2676,6 @@ msgstr "Перепідключення інтерфейсу"
 msgid "References"
 msgstr "Посилання"
 
-msgid "Regulatory Domain"
-msgstr "Регулятивний домен"
-
 msgid "Relay"
 msgstr "Ретранслятор"
 
@@ -2732,15 +2724,15 @@ msgstr "Потрібно для деяких провайдерів, напри
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2887,9 +2879,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Розділяти клієнтів"
 
-msgid "Separate WDS"
-msgstr "Розділяти WDS"
-
 msgid "Server Settings"
 msgstr "Настройки сервера"
 
@@ -2913,6 +2902,11 @@ msgstr "Тип сервісу"
 msgid "Services"
 msgstr "Сервіси"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 #, fuzzy
 msgid "Set up Time Synchronization"
 msgstr "Настройки синхронізації часу"
@@ -3055,9 +3049,6 @@ msgstr "Статичні оренди"
 msgid "Static Routes"
 msgstr "Статичні маршрути"
 
-msgid "Static WDS"
-msgstr "Статичний WDS"
-
 msgid "Static address"
 msgstr "Статичні адреси"
 
@@ -3484,9 +3475,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Режим Turbo"
-
 msgid "Tx-Power"
 msgstr "Потужність передавача"
 
@@ -3773,9 +3761,6 @@ msgstr "Записувати отримані DNS-запити до систем
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "Підтримка XR"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3787,9 +3772,9 @@ msgstr ""
 "пристрій може стати недоступним!</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
-"Ви повинні увімкнути Java Script у вашому браузері, або LuCI не буде "
+"Ви повинні увімкнути JavaScript у вашому браузері, або LuCI не буде "
 "працювати належним чином."
 
 msgid ""
@@ -3963,6 +3948,54 @@ msgstr "так"
 msgid "« Back"
 msgstr "« Назад"
 
+#~ msgid "AR Support"
+#~ msgstr "Підтримка AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Бездротовий 802.11%s контролер Atheros"
+
+#~ msgid "Background Scan"
+#~ msgstr "Сканування у фоновому режимі"
+
+#~ msgid "Compression"
+#~ msgstr "Стиснення"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Вимкнути таймер HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Не надсилати відповіді на зондування"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Швидкі фрейми"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Максимальна швидкість"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Мінімальна швидкість"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Швидкість багатоадресного потоку"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Зовнішні канали"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Регулятивний домен"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Розділяти WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "Статичний WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Режим Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Підтримка XR"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr "Якщо ви залишите це невибраним, буде створена додаткова мережа."
 
index 162bd30..213e5ef 100644 (file)
@@ -146,6 +146,11 @@ msgstr ""
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr ""
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -164,9 +169,6 @@ msgstr ""
 msgid "APN"
 msgstr ""
 
-msgid "AR Support"
-msgstr "Hỗ trợ AR"
-
 msgid "ARP retry threshold"
 msgstr ""
 
@@ -402,9 +404,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr ""
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
 msgid "Auth Group"
 msgstr ""
 
@@ -483,9 +482,6 @@ msgstr ""
 msgid "Back to scan results"
 msgstr ""
 
-msgid "Background Scan"
-msgstr "Background Scan"
-
 msgid "Backup / Flash Firmware"
 msgstr ""
 
@@ -640,9 +636,6 @@ msgstr "Lệnh"
 msgid "Common Configuration"
 msgstr ""
 
-msgid "Compression"
-msgstr "Sức nén"
-
 msgid "Configuration"
 msgstr "Cấu hình"
 
@@ -858,9 +851,6 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "Vô hiệu hóa bộ chỉnh giờ HW-Beacon"
-
 msgid "Disabled"
 msgstr ""
 
@@ -905,9 +895,6 @@ msgstr ""
 msgid "Do not forward reverse lookups for local networks"
 msgstr ""
 
-msgid "Do not send probe responses"
-msgstr "Không gửi nhắc hồi đáp"
-
 msgid "Domain required"
 msgstr "Domain yêu cầu"
 
@@ -1104,9 +1091,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "Khung nhanh"
-
 msgid "File"
 msgstr ""
 
@@ -1142,6 +1126,9 @@ msgstr ""
 msgid "Firewall"
 msgstr "Firewall"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr ""
 
@@ -1187,6 +1174,9 @@ msgstr ""
 msgid "Force TKIP and CCMP (AES)"
 msgstr ""
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1582,6 +1572,9 @@ msgstr ""
 msgid "Invalid username and/or password! Please try again."
 msgstr "Tên và mật mã không đúng. Xin thử lại "
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1590,7 +1583,7 @@ msgstr ""
 "Dường như bạn cố gắng flash một hình ảnh không phù hợp với bộ nhớ flash, xin "
 "vui lòng xác minh các tập tin hình ảnh!"
 
-msgid "Java Script required!"
+msgid "JavaScript required!"
 msgstr ""
 
 msgid "Join Network"
@@ -1851,9 +1844,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "Mức cao nhất"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -1889,9 +1879,6 @@ msgstr "Memory usage (%)"
 msgid "Metric"
 msgstr "Metric"
 
-msgid "Minimum Rate"
-msgstr "Mức thấp nhất"
-
 msgid "Minimum hold time"
 msgstr "Mức thấp nhất"
 
@@ -1965,9 +1952,6 @@ msgstr ""
 msgid "Move up"
 msgstr ""
 
-msgid "Multicast Rate"
-msgstr "Multicast Rate"
-
 msgid "Multicast address"
 msgstr ""
 
@@ -1980,6 +1964,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2173,8 +2160,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2211,9 +2203,6 @@ msgstr "Ra khỏi"
 msgid "Outbound:"
 msgstr ""
 
-msgid "Outdoor Channels"
-msgstr "Kênh ngoại mạng"
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2393,6 +2382,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2581,9 +2576,6 @@ msgstr ""
 msgid "References"
 msgstr "Tham chiếu"
 
-msgid "Regulatory Domain"
-msgstr "Miền điều chỉnh"
-
 msgid "Relay"
 msgstr ""
 
@@ -2632,15 +2624,15 @@ msgstr ""
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2785,9 +2777,6 @@ msgstr ""
 msgid "Separate Clients"
 msgstr "Cô lập đối tượng"
 
-msgid "Separate WDS"
-msgstr "Phân tách WDS"
-
 msgid "Server Settings"
 msgstr ""
 
@@ -2811,6 +2800,11 @@ msgstr ""
 msgid "Services"
 msgstr "Dịch vụ "
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 msgid "Set up Time Synchronization"
 msgstr ""
 
@@ -2945,9 +2939,6 @@ msgstr "Thống kê leases"
 msgid "Static Routes"
 msgstr "Static Routes"
 
-msgid "Static WDS"
-msgstr ""
-
 msgid "Static address"
 msgstr ""
 
@@ -3326,9 +3317,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "Turbo Mode"
-
 msgid "Tx-Power"
 msgstr ""
 
@@ -3606,9 +3594,6 @@ msgstr ""
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "Hỗ trợ XR"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3620,7 +3605,7 @@ msgstr ""
 "bạn chó thể trở nên không truy cập được</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
 
 msgid ""
@@ -3792,3 +3777,45 @@ msgstr ""
 
 msgid "« Back"
 msgstr ""
+
+#~ msgid "AR Support"
+#~ msgstr "Hỗ trợ AR"
+
+#~ msgid "Background Scan"
+#~ msgstr "Background Scan"
+
+#~ msgid "Compression"
+#~ msgstr "Sức nén"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Vô hiệu hóa bộ chỉnh giờ HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Không gửi nhắc hồi đáp"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Khung nhanh"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Mức cao nhất"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Mức thấp nhất"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicast Rate"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Kênh ngoại mạng"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Miền điều chỉnh"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Phân tách WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo Mode"
+
+#~ msgid "XR Support"
+#~ msgstr "Hỗ trợ XR"
index dca93f0..eb84b22 100644 (file)
@@ -3,14 +3,14 @@ msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-12-21 23:08+0200\n"
-"PO-Revision-Date: 2017-01-07 21:46+0800\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 1.8.11\n"
+"X-Generator: Poedit 2.0\n"
 "Language-Team: \n"
 
 msgid "%s is untagged in multiple VLANs!"
@@ -44,43 +44,43 @@ msgid "-- match by label --"
 msgstr "-- 根据标签匹配 --"
 
 msgid "-- match by uuid --"
-msgstr ""
+msgstr "-- 根据 UUID 匹配 --"
 
 msgid "1 Minute Load:"
-msgstr "1分钟负载:"
+msgstr "1 分钟负载:"
 
 msgid "15 Minute Load:"
-msgstr "15分钟负载:"
+msgstr "15 分钟负载:"
 
 msgid "4-character hexadecimal ID"
-msgstr ""
+msgstr "4 字符的十六进制 ID"
 
 msgid "464XLAT (CLAT)"
 msgstr "464XLAT (CLAT)"
 
 msgid "5 Minute Load:"
-msgstr "5分钟负载:"
+msgstr "5 分钟负载:"
 
 msgid "6-octet identifier as a hex string - no colons"
-msgstr ""
+msgstr "6 个八位字节的标识符 (十六进制字符串) - 无冒号"
 
 msgid "802.11r Fast Transition"
-msgstr ""
+msgstr "802.11r 快速转换"
 
 msgid "802.11w Association SA Query maximum timeout"
-msgstr ""
+msgstr "802.11w 关联 SA 查询最大超时"
 
 msgid "802.11w Association SA Query retry timeout"
-msgstr ""
+msgstr "802.11w 关联 SA 查询重试超时"
 
 msgid "802.11w Management Frame Protection"
-msgstr ""
+msgstr "802.11w 管理帧保护"
 
 msgid "802.11w maximum timeout"
-msgstr ""
+msgstr "802.11w 最大超时"
 
 msgid "802.11w retry timeout"
-msgstr ""
+msgstr "802.11w 重试超时"
 
 msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
 msgstr "<abbr title=\"基本服务集标识符\">BSSID</abbr>"
@@ -94,7 +94,7 @@ msgstr "<abbr title=\"域名服务系统\">DNS</abbr> 服务器端口"
 msgid ""
 "<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
 "order of the resolvfile"
-msgstr "将会按照指定的顺序查询<abbr title=\"域名服务系统\">DNS</abbr>"
+msgstr "将会按照指定的顺序查询 <abbr title=\"域名服务系统\">DNS</abbr>"
 
 msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "<abbr title=\"扩展服务集标识符\">ESSID</abbr>"
@@ -112,20 +112,20 @@ 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=\"互联网协议第6版\">IPv6</abbr>-地址或超网 (<abbr title=\"无类别"
+"间路由\">CIDR</abbr>)"
 
 msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
 msgstr "<abbr title=\"互联网协议第6版\">IPv6</abbr>-网关"
 
 msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
-msgstr "<abbr title=\"互联网协议第6版\">IPv6</abbr>-后缀(十六进制)"
+msgstr "<abbr title=\"互联网协议第6版\">IPv6</abbr>-后缀 (十六进制)"
 
 msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
-msgstr "<abbr title=\"发光二极管\">LED</abbr>配置"
+msgstr "<abbr title=\"发光二极管\">LED</abbr> 配置"
 
 msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
-msgstr "<abbr title=\"发光二极管\">LED</abbr>名称"
+msgstr "<abbr title=\"发光二极管\">LED</abbr> 名称"
 
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "<abbr title=\"介质访问控制\">MAC</abbr>-地址"
@@ -133,12 +133,12 @@ msgstr "<abbr title=\"介质访问控制\">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=\"动态主机配置协议\">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=\"DNS扩展名机制\">EDNS0</abbr> 数据包大小"
 
 msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
 msgstr "最大并发查询数"
@@ -146,6 +146,11 @@ msgstr "最大并发查询数"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr "A43C + J43 + A43"
 
@@ -164,37 +169,34 @@ msgstr "ANSI T1.413"
 msgid "APN"
 msgstr "APN"
 
-msgid "AR Support"
-msgstr "AR支持"
-
 msgid "ARP retry threshold"
-msgstr "ARP重试阈值"
+msgstr "ARP 重试阈值"
 
 msgid "ATM (Asynchronous Transfer Mode)"
-msgstr "ATM(异步传输模式)"
+msgstr "ATM (异步传输模式)"
 
 msgid "ATM Bridges"
-msgstr "ATM桥接"
+msgstr "ATM 桥接"
 
 msgid "ATM Virtual Channel Identifier (VCI)"
-msgstr "ATM虚拟通道标识(VCI)"
+msgstr "ATM 虚拟通道标识 (VCI)"
 
 msgid "ATM Virtual Path Identifier (VPI)"
-msgstr "ATM虚拟路径标识(VPI)"
+msgstr "ATM 虚拟路径标识 (VPI)"
 
 msgid ""
 "ATM bridges expose encapsulated ethernet in AAL5 connections as virtual "
 "Linux network interfaces which can be used in conjunction with DHCP or PPP "
 "to dial into the provider network."
 msgstr ""
-"ATM桥是以AAL5协议封装以太网的虚拟Linux网桥,用于协同DHCP或PPP来拨号连接到网络"
-"运营商。"
+"ATM 桥是以 AAL5 协议封装以太网的虚拟 Linux 网桥,用于协同 DHCP 或 PPP 来拨号"
+"è¿\9eæ\8e¥å\88°ç½\91ç»\9cè¿\90è\90¥å\95\86ã\80\82"
 
 msgid "ATM device number"
-msgstr "ATM设备号码"
+msgstr "ATM 设备号码"
 
 msgid "ATU-C System Vendor ID"
-msgstr "ATU-C系统供应商ID"
+msgstr "ATU-C 系统供应商 ID"
 
 msgid "AYIYA"
 msgstr "AYIYA"
@@ -203,7 +205,7 @@ msgid "Access Concentrator"
 msgstr "接入集中器"
 
 msgid "Access Point"
-msgstr "接入点AP"
+msgstr "接入点 AP"
 
 msgid "Action"
 msgstr "动作"
@@ -215,37 +217,37 @@ 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=\"互联网协议第4版\">IPv4</abbr>-链路"
 
 msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
-msgstr "活动的<abbr title=\"互联网协议第6版\">IPv6</abbr>-链路"
+msgstr "活动的 <abbr title=\"互联网协议第6版\">IPv6</abbr>-链路"
 
 msgid "Active Connections"
 msgstr "活动连接"
 
 msgid "Active DHCP Leases"
-msgstr "已分配的DHCP租约"
+msgstr "已分配的 DHCP 租约"
 
 msgid "Active DHCPv6 Leases"
-msgstr "已分配的DHCPv6租约"
+msgstr "已分配的 DHCPv6 租约"
 
 msgid "Ad-Hoc"
-msgstr "点对点Ad-Hoc"
+msgstr "点对点 Ad-Hoc"
 
 msgid "Add"
 msgstr "添加"
 
 msgid "Add local domain suffix to names served from hosts files"
-msgstr "添加本地域名后缀到HOSTS文件中的域名"
+msgstr "添加本地域名后缀到 HOSTS 文件中的域名"
 
 msgid "Add new interface..."
 msgstr "添加新接口..."
 
 msgid "Additional Hosts files"
-msgstr "额外的HOSTS文件"
+msgstr "额外的 HOSTS 文件"
 
 msgid "Additional servers file"
-msgstr "额外的SERVERS文件"
+msgstr "额外的 SERVERS 文件"
 
 msgid "Address"
 msgstr "地址"
@@ -260,7 +262,7 @@ msgid "Advanced Settings"
 msgstr "高级设置"
 
 msgid "Aggregate Transmit Power(ACTATP)"
-msgstr "总发射功率(ACTATP)"
+msgstr "总发射功率 (ACTATP)"
 
 msgid "Alert"
 msgstr "警戒"
@@ -268,13 +270,13 @@ msgstr "警戒"
 msgid ""
 "Allocate IP addresses sequentially, starting from the lowest available "
 "address"
-msgstr "从最低可用地址开始顺序分配IP地址"
+msgstr "从最低可用地址开始顺序分配 IP 地址"
 
 msgid "Allocate IP sequentially"
-msgstr "顺序分配IP"
+msgstr "顺序分配 IP"
 
 msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
-msgstr "允许<abbr title=\"安全外壳协议\">SSH</abbr>密码验证"
+msgstr "允许 <abbr title=\"安全外壳协议\">SSH</abbr> 密码验证"
 
 msgid "Allow all except listed"
 msgstr "仅允许列表外"
@@ -286,26 +288,26 @@ msgid "Allow localhost"
 msgstr "允许本机"
 
 msgid "Allow remote hosts to connect to local SSH forwarded ports"
-msgstr "允许远程主机连接到本地SSH转发端口"
+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>用户凭密码登录"
+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"
+msgstr "允许的 IP"
 
 msgid ""
 "Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison"
 "\">Tunneling Comparison</a> on SIXXS"
 msgstr ""
-"也请查看SIXXS上的<a href=\"https://www.sixxs.net/faq/connectivity/?"
+"也请查看 SIXXS 上的<a href=\"https://www.sixxs.net/faq/connectivity/?"
 "faq=comparison\">隧道对比</a>"
 
 msgid "Always announce default router"
@@ -360,10 +362,10 @@ msgid "Announce as default router even if no public prefix is available."
 msgstr "即使没有可用的公共前缀也广播默认路由。"
 
 msgid "Announced DNS domains"
-msgstr "广播的DNS域名"
+msgstr "广播的 DNS 域名"
 
 msgid "Announced DNS servers"
-msgstr "广播的DNS服务器"
+msgstr "广播的 DNS 服务器"
 
 msgid "Anonymous Identity"
 msgstr "匿名身份"
@@ -372,7 +374,7 @@ msgid "Anonymous Mount"
 msgstr "自动挂载未配置的磁盘分区"
 
 msgid "Anonymous Swap"
-msgstr "自动挂载未配置的Swap分区"
+msgstr "自动挂载未配置的 Swap 分区"
 
 msgid "Antenna 1"
 msgstr "天线 1"
@@ -394,21 +396,18 @@ 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 "已连接站点"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Qualcomm/Atheros 802.11%s 无线网卡"
-
 msgid "Auth Group"
 msgstr "认证组"
 
@@ -422,7 +421,7 @@ msgid "Authentication Type"
 msgstr "认证类型"
 
 msgid "Authoritative"
-msgstr "授权的唯一DHCP服务器"
+msgstr "唯一授权"
 
 msgid "Authorization Required"
 msgstr "需要授权"
@@ -434,22 +433,22 @@ 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 "自动挂载磁盘"
 
 msgid "Automount Swap"
-msgstr "自动挂载Swap"
+msgstr "自动挂载 Swap"
 
 msgid "Available"
 msgstr "可用"
@@ -487,9 +486,6 @@ msgstr "返回至概况"
 msgid "Back to scan results"
 msgstr "返回至扫描结果"
 
-msgid "Background Scan"
-msgstr "后台搜索"
-
 msgid "Backup / Flash Firmware"
 msgstr "备份/升级"
 
@@ -506,7 +502,7 @@ msgid "Band"
 msgstr "频宽"
 
 msgid "Behind NAT"
-msgstr "在NAT网络内"
+msgstr "在 NAT 网络内"
 
 msgid ""
 "Below is the determined list of files to backup. It consists of changed "
@@ -523,7 +519,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 "传输速率"
@@ -561,10 +557,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 "取消"
@@ -594,7 +590,7 @@ msgid "Check fileystems before mount"
 msgstr "在挂载前检查文件系统"
 
 msgid "Check this option to delete the existing networks from this radio."
-msgstr ""
+msgstr "选中此选项以从无线中删除现有网络。"
 
 msgid "Checksum"
 msgstr "校验值"
@@ -615,24 +611,26 @@ msgid "Cipher"
 msgstr "算法"
 
 msgid "Cisco UDP encapsulation"
-msgstr "Cisco UDP封装"
+msgstr "Cisco UDP 封装"
 
 msgid ""
 "Click \"Generate archive\" to download a tar archive of the current "
 "configuration files. To reset the firmware to its initial state, click "
 "\"Perform reset\" (only possible with squashfs images)."
-msgstr "备份/恢复当前系统配置文件或重置OpenWrt(仅squashfs固件有效)。"
+msgstr ""
+"点击“生成备份”下载当前配置文件的 tar 存档。要将固件恢复到初始状态,请单击“执"
+"行重置” (仅 Squashfs 固件有效)。"
 
 msgid "Client"
-msgstr "客户端Client"
+msgstr "客户端 Client"
 
 msgid "Client ID to send when requesting DHCP"
-msgstr "请求DHCP时发送的客户ID"
+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 "关闭列表..."
@@ -646,14 +644,11 @@ msgstr "进程命令"
 msgid "Common Configuration"
 msgstr "一般设置"
 
-msgid "Compression"
-msgstr "压缩"
-
 msgid "Configuration"
 msgstr "配置"
 
 msgid "Configuration applied."
-msgstr "配置已应用"
+msgstr "配置已应用"
 
 msgid "Configuration files will be kept."
 msgstr "配置文件将被保留。"
@@ -671,7 +666,7 @@ msgid "Connection Limit"
 msgstr "连接数限制"
 
 msgid "Connection to server fails when TLS cannot be used"
-msgstr "当TLS不可用时连接到服务器失败"
+msgstr "当 TLS 不可用时,与服务器连接失败"
 
 msgid "Connections"
 msgstr "链接"
@@ -689,7 +684,7 @@ msgid "Cover the following interfaces"
 msgstr "包括以下接口"
 
 msgid "Create / Assign firewall-zone"
-msgstr "创建/分配 防火墙区域"
+msgstr "创建/分配防火墙区域"
 
 msgid "Create Interface"
 msgstr "创建新接口"
@@ -701,19 +696,19 @@ msgid "Critical"
 msgstr "致命错误"
 
 msgid "Cron Log Level"
-msgstr "Cron日志级别"
+msgstr "Cron 日志级别"
 
 msgid "Custom Interface"
 msgstr "自定义接口"
 
 msgid "Custom delegated IPv6-prefix"
-msgstr "自定义分配的IPv6前缀"
+msgstr "自定义分配的 IPv6 前缀"
 
 msgid ""
 "Custom feed definitions, e.g. private feeds. This file can be preserved in a "
 "sysupgrade."
 msgstr ""
-"自定义的软件源地址(例如私有的软件源)。此处设定的源地址在系统升级时将被保留"
+"自定义的软件源地址 (例如私有的软件源)。此处设定的源地址在系统升级时将被保留"
 
 msgid "Custom feeds"
 msgstr "自定义的软件源"
@@ -721,40 +716,40 @@ 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=\"发光二极管\">LED</abbr> 的活动状态。"
 
 msgid "DHCP Leases"
-msgstr "DHCP分配"
+msgstr "DHCP 分配"
 
 msgid "DHCP Server"
-msgstr "DHCP服务器"
+msgstr "DHCP 服务器"
 
 msgid "DHCP and DNS"
 msgstr "DHCP/DNS"
 
 msgid "DHCP client"
-msgstr "DHCP客户端"
+msgstr "DHCP 客户端"
 
 msgid "DHCP-Options"
 msgstr "DHCP-选项"
 
 msgid "DHCPv6 Leases"
-msgstr "DHCPv6分配"
+msgstr "DHCPv6 分配"
 
 msgid "DHCPv6 client"
-msgstr "DHCPv6客户端"
+msgstr "DHCPv6 客户端"
 
 msgid "DHCPv6-Mode"
-msgstr "DHCPv6模式"
+msgstr "DHCPv6 模式"
 
 msgid "DHCPv6-Service"
-msgstr "DHCPv6服务"
+msgstr "DHCPv6 服务"
 
 msgid "DNS"
 msgstr "DNS"
 
 msgid "DNS forwardings"
-msgstr "DNS转发"
+msgstr "DNS 转发"
 
 msgid "DNS-Label / FQDN"
 msgstr "DNS-Label / FQDN"
@@ -763,25 +758,25 @@ msgid "DNSSEC"
 msgstr "DNSSEC"
 
 msgid "DNSSEC check unsigned"
-msgstr "DNSSEC未签名检查"
+msgstr "DNSSEC 未签名检查"
 
 msgid "DPD Idle Timeout"
-msgstr "DPD空闲超时"
+msgstr "DPD 空闲超时"
 
 msgid "DS-Lite AFTR address"
-msgstr "DS-Lite AFTR地址"
+msgstr "DS-Lite AFTR 地址"
 
 msgid "DSL"
 msgstr "DSL"
 
 msgid "DSL Status"
-msgstr "DSL状态"
+msgstr "DSL 状态"
 
 msgid "DSL line mode"
-msgstr "DSL线路模式"
+msgstr "DSL 线路模式"
 
 msgid "DUID"
-msgstr "DUID (DHCP唯一标识符)"
+msgstr "DUID"
 
 msgid "Data Rate"
 msgstr "数据速率"
@@ -790,7 +785,7 @@ msgid "Debug"
 msgstr "调试"
 
 msgid "Default %d"
-msgstr "默认%d"
+msgstr "默认 %d"
 
 msgid "Default gateway"
 msgstr "默认网关"
@@ -805,15 +800,15 @@ msgid "Default state"
 msgstr "默认状态"
 
 msgid "Define a name for this network."
-msgstr "为网络定义名称"
+msgstr "为网络定义名称"
 
 msgid ""
 "Define additional DHCP options, for example "
 "\"<code>6,192.168.2.1,192.168.2.2</code>\" which advertises different DNS "
 "servers to clients."
 msgstr ""
-"设置DHCP的附加选项,例如设定\"<code>6,192.168.2.1,192.168.2.2</code>\"表示通"
-"告不同的DNS服务器给客户端。"
+"设置 DHCP 的附加选项,例如设定 \"<code>6,192.168.2.1,192.168.2.2</code>\" 表"
+"示通告不同的 DNS 服务器给客户端。"
 
 msgid "Delete"
 msgstr "删除"
@@ -857,25 +852,22 @@ msgstr "禁用"
 msgid ""
 "Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
 "this interface."
-msgstr "禁用本接口的<abbr title=\"动态主机配置协议\">DHCP</abbr>。"
+msgstr "禁用本接口的 <abbr title=\"动态主机配置协议\">DHCP</abbr>。"
 
 msgid "Disable DNS setup"
-msgstr "停用DNS设定"
+msgstr "停用 DNS 设定"
 
 msgid "Disable Encryption"
 msgstr "禁用加密"
 
-msgid "Disable HW-Beacon timer"
-msgstr "停用HW-Beacon计时器"
-
 msgid "Disabled"
 msgstr "禁用"
 
 msgid "Disabled (default)"
-msgstr ""
+msgstr "禁用 (默认)"
 
 msgid "Discard upstream RFC1918 responses"
-msgstr "丢弃RFC1918上行响应数据"
+msgstr "丢弃 RFC1918 上行响应数据"
 
 msgid "Displaying only packages containing"
 msgstr "只显示有内容的软件包"
@@ -884,32 +876,32 @@ msgid "Distance Optimization"
 msgstr "距离优化"
 
 msgid "Distance to farthest network member in meters."
-msgstr "最远客户端的距离(米)。"
+msgstr "最远网络用户的距离 (米)。"
 
 msgid "Distribution feeds"
 msgstr "发行版软件源"
 
 msgid "Diversity"
-msgstr "å\88\86é\9b\86"
+msgstr "å·®å¼\82"
 
 msgid ""
 "Dnsmasq is a combined <abbr title=\"Dynamic Host Configuration Protocol"
 "\">DHCP</abbr>-Server and <abbr title=\"Domain Name System\">DNS</abbr>-"
 "Forwarder for <abbr title=\"Network Address Translation\">NAT</abbr> "
 "firewalls"
-msgstr "Dnsmasq为NAT防火墙提供了一个集成的DHCP服务器和DNS转发器"
+msgstr ""
+"Dnsmasq 为 <abbr title=\"网络地址转换\">NAT</abbr> 防火墙提供了一个集成的 "
+"<abbr title=\"动态主机配置协议\">DHCP</abbr> 服务器和 <abbr title=\"域名系统"
+"\">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命令"
-
-msgid "Do not send probe responses"
-msgstr "不回送探测响应"
+msgstr "不转发反向查询本地网络的 Lookups 命令"
 
 msgid "Domain required"
 msgstr "忽略空域名解析"
@@ -923,7 +915,7 @@ msgstr "禁止碎片"
 msgid ""
 "Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
 "<abbr title=\"Domain Name System\">DNS</abbr>-Name"
-msgstr "不转发没有DNS名称的解析请求"
+msgstr "不转发没有 <abbr title=\"域名系统\">DNS</abbr> 名称的解析请求"
 
 msgid "Download and install package"
 msgstr "下载并安装软件包"
@@ -932,20 +924,20 @@ msgid "Download backup"
 msgstr "下载备份"
 
 msgid "Dropbear Instance"
-msgstr "Dropbear设置"
+msgstr "Dropbear 实例"
 
 msgid ""
 "Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
 "and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
 msgstr ""
-"Dropbear提供了集成的<abbr title=\"安全复制\">SCP</abbr>服务器和基于<abbr "
-"title=\"安全外壳协议\">SSH</abbr>的Shell访问"
+"Dropbear 提供了集成的 <abbr title=\"安全复制\">SCP</abbr> 服务器和基于 <abbr "
+"title=\"安全外壳协议\">SSH</abbr> 的 Shell 访问"
 
 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=\"动态主机配置协议\">DHCP</abbr>"
 
 msgid "Dynamic tunnel"
 msgstr "动态隧道"
@@ -953,13 +945,14 @@ msgstr "动态隧道"
 msgid ""
 "Dynamically allocate DHCP addresses for clients. If disabled, only clients "
 "having static leases will be served."
-msgstr "动态分配DHCP地址。如果禁用,则只能为静态租用表中的客户端提供网络服务。"
+msgstr ""
+"动态分配 DHCP 地址。如果禁用,则只能为静态租用表中的客户端提供网络服务。"
 
 msgid "EA-bits length"
-msgstr "EA长度"
+msgstr "EA-bits 长度"
 
 msgid "EAP-Method"
-msgstr "EAP类型"
+msgstr "EAP 类型"
 
 msgid "Edit"
 msgstr "修改"
@@ -982,34 +975,34 @@ msgid "Enable"
 msgstr "启用"
 
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
-msgstr "开启<abbr title=\"生成树协议\">STP</abbr>"
+msgstr "开启 <abbr title=\"生成树协议\">STP</abbr>"
 
 msgid "Enable HE.net dynamic endpoint update"
-msgstr "启用HE.net动态终端更新"
+msgstr "启用 HE.net 动态终端更新"
 
 msgid "Enable IPv6 negotiation"
-msgstr "启用IPv6协商"
+msgstr "启用 IPv6 协商"
 
 msgid "Enable IPv6 negotiation on the PPP link"
-msgstr "在PPP链路上启用IPv6协商"
+msgstr "在 PPP 链路上启用 IPv6 协商"
 
 msgid "Enable Jumbo Frame passthrough"
 msgstr "启用巨型帧透传"
 
 msgid "Enable NTP client"
-msgstr "启用NTP客户端"
+msgstr "启用 NTP 客户端"
 
 msgid "Enable Single DES"
-msgstr "启用单个DES"
+msgstr "启用单个 DES"
 
 msgid "Enable TFTP server"
-msgstr "启用TFTP服务器"
+msgstr "启用 TFTP 服务器"
 
 msgid "Enable VLAN functionality"
-msgstr "启用VLAN"
+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 "启用智能交换学习"
@@ -1021,7 +1014,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 "启用挂载点"
@@ -1038,7 +1031,7 @@ msgstr "启用"
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
-msgstr ""
+msgstr "启用属于同一移动域的接入点之间的快速漫游"
 
 msgid "Enables the Spanning Tree Protocol on this bridge"
 msgstr "在此桥接上启用生成协议树"
@@ -1062,7 +1055,7 @@ msgid "Error"
 msgstr "错误"
 
 msgid "Errored seconds (ES)"
-msgstr "错误秒数(ES)"
+msgstr "错误秒数 (ES)"
 
 msgid "Ethernet Adapter"
 msgstr "以太网适配器"
@@ -1074,38 +1067,35 @@ msgid "Exclude interfaces"
 msgstr "排除接口"
 
 msgid "Expand hosts"
-msgstr "扩展HOSTS文件中的主机后缀"
+msgstr "扩展 HOSTS 文件中的主机后缀"
 
 msgid "Expires"
 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 "远程"
+msgstr "外部"
 
 msgid "External R0 Key Holder List"
-msgstr ""
+msgstr "外部 R0KH (R0 Key Holder) 列表"
 
 msgid "External R1 Key Holder List"
-msgstr ""
+msgstr "外部 R1KH (R1 Key Holder) 列表"
 
 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命令选项"
-
-msgid "Fast Frames"
-msgstr "快速帧"
+msgstr "额外的 SSH 命令选项"
 
 msgid "File"
 msgstr "文件"
@@ -1129,8 +1119,8 @@ msgid ""
 "Find all currently attached filesystems and swap and replace configuration "
 "with defaults based on what was detected"
 msgstr ""
-"查找所有当前系统上的分区和Swap并使用基于所找到的分区生成的配置文件替换默认配"
-"置。"
+"查找所有当前系统上的分区和 Swap 并使用基于所找到的分区生成的配置文件替换默认"
+"配置"
 
 msgid "Find and join network"
 msgstr "搜索并加入网络"
@@ -1144,6 +1134,9 @@ msgstr "完成"
 msgid "Firewall"
 msgstr "防火墙"
 
+msgid "Firewall Mark"
+msgstr "防火墙标识"
+
 msgid "Firewall Settings"
 msgstr "防火墙设置"
 
@@ -1157,7 +1150,7 @@ msgid "Firmware Version"
 msgstr "固件版本"
 
 msgid "Fixed source port for outbound DNS queries"
-msgstr "指定的DNS查询源端口"
+msgstr "指定的 DNS 查询源端口"
 
 msgid "Flash Firmware"
 msgstr "刷新固件"
@@ -1175,31 +1168,34 @@ msgid "Flashing..."
 msgstr "刷写中..."
 
 msgid "Force"
-msgstr "强制开启DHCP"
+msgstr "强制"
 
 msgid "Force CCMP (AES)"
-msgstr "强制使用CCMP(AES)加密"
+msgstr "强制 CCMP (AES)"
 
 msgid "Force DHCP on this network even if another server is detected."
-msgstr "强å\88¶å¼\80å\90¯DHCP。"
+msgstr "å\8d³ä½¿æ£\80æµ\8bå\88°å\8f¦ä¸\80å\8f°æ\9c\8då\8a¡å\99¨ï¼\8cä¹\9fè¦\81强å\88¶ä½¿ç\94¨æ­¤ç½\91ç»\9cä¸\8aç\9a\84 DHCP。"
 
 msgid "Force TKIP"
-msgstr "强制使用TKIP加密"
+msgstr "强制 TKIP"
 
 msgid "Force TKIP and CCMP (AES)"
-msgstr "TKIP和CCMP(AES)混合加密"
+msgstr "强制 TKIP 和 CCMP (AES)"
+
+msgid "Force link"
+msgstr "强制链路"
 
 msgid "Force use of NAT-T"
-msgstr "强制使用NAT-T"
+msgstr "强制使用 NAT-T"
 
 msgid "Form token mismatch"
 msgstr "表单令牌不匹配"
 
 msgid "Forward DHCP traffic"
-msgstr "转发DHCP数据包"
+msgstr "转发 DHCP 数据包"
 
 msgid "Forward Error Correction Seconds (FECS)"
-msgstr "前向纠错秒数(FECS)"
+msgstr "前向纠错秒数 (FECS)"
 
 msgid "Forward broadcast traffic"
 msgstr "转发广播数据包"
@@ -1223,14 +1219,14 @@ 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."
-"io</a>"
+"有关 WireGuard 接口和 Peer 的更多信息: <a href=\"http://wireguard.io"
+"\">wireguard.io</a>。"
 
 msgid "GHz"
 msgstr "GHz"
 
 msgid "GPRS only"
-msgstr "仅GPRS"
+msgstr "仅 GPRS"
 
 msgid "Gateway"
 msgstr "网关"
@@ -1245,7 +1241,7 @@ msgid "General Setup"
 msgstr "基本设置"
 
 msgid "General options for opkg"
-msgstr "Opkg基础配置"
+msgstr "OPKG 基础配置"
 
 msgid "Generate Config"
 msgstr "生成配置"
@@ -1254,7 +1250,7 @@ msgid "Generate archive"
 msgstr "生成备份"
 
 msgid "Generic 802.11%s Wireless Controller"
-msgstr "Generic 802.11%s 无线网卡"
+msgstr "通用 802.11%s 无线网卡"
 
 msgid "Given password confirmation did not match, password not changed!"
 msgstr "由于密码验证不匹配,密码没有更改!"
@@ -1278,13 +1274,13 @@ msgid "Guest"
 msgstr "访客"
 
 msgid "HE.net password"
-msgstr "HE.net密码"
+msgstr "HE.net 密码"
 
 msgid "HE.net username"
-msgstr "HE.net用户名"
+msgstr "HE.net 用户名"
 
 msgid "HT mode (802.11n)"
-msgstr "HT模式(802.11n)"
+msgstr "HT 模式 (802.11n)"
 
 msgid "Handler"
 msgstr "处理程序"
@@ -1293,7 +1289,7 @@ msgid "Hang Up"
 msgstr "挂起"
 
 msgid "Header Error Code Errors (HEC)"
-msgstr "头错误代码错误(HEC)"
+msgstr "请求头的错误代码错误 (HEC)"
 
 msgid "Heartbeat"
 msgstr "心跳"
@@ -1306,13 +1302,13 @@ msgstr "配置路由器的部分基础信息。"
 msgid ""
 "Here you can paste public SSH-Keys (one per line) for SSH public-key "
 "authentication."
-msgstr "SSH公共密钥认证(每行一个密钥)。"
+msgstr "请在这里粘贴公共 SSH 密钥用于 SSH 公钥认证 (每行一个)。"
 
 msgid "Hermes 802.11b Wireless Controller"
 msgstr "Hermes 802.11b 无线网卡"
 
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
-msgstr "隐藏<abbr title=\"扩展服务集标识符\">ESSID</abbr>"
+msgstr "隐藏 <abbr title=\"扩展服务集标识符\">ESSID</abbr>"
 
 msgid "Host"
 msgstr "主机"
@@ -1324,13 +1320,13 @@ msgid "Host expiry timeout"
 msgstr "主机到期超时"
 
 msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
-msgstr "主机IP或网络"
+msgstr "主机 IP 或网络"
 
 msgid "Hostname"
 msgstr "主机名"
 
 msgid "Hostname to send when requesting DHCP"
-msgstr "请求DHCP时发送的主机名"
+msgstr "请求 DHCP 时发送的主机名"
 
 msgid "Hostnames"
 msgstr "主机名"
@@ -1339,49 +1335,49 @@ msgid "Hybrid"
 msgstr "混合"
 
 msgid "IKE DH Group"
-msgstr "IKE DH组"
+msgstr "IKE DH 组"
 
 msgid "IP Addresses"
-msgstr ""
+msgstr "IP 地址"
 
 msgid "IP address"
-msgstr "IP地址"
+msgstr "IP 地址"
 
 msgid "IPv4"
 msgstr "IPv4"
 
 msgid "IPv4 Firewall"
-msgstr "IPv4防火墙"
+msgstr "IPv4 防火墙"
 
 msgid "IPv4 WAN Status"
-msgstr "IPv4 WAN状态"
+msgstr "IPv4 WAN 状态"
 
 msgid "IPv4 address"
-msgstr "IPv4地址"
+msgstr "IPv4 地址"
 
 msgid "IPv4 and IPv6"
-msgstr "IPv4IPv6"
+msgstr "IPv4 和 IPv6"
 
 msgid "IPv4 assignment length"
-msgstr "分配IPv4长度"
+msgstr "分配 IPv4 长度"
 
 msgid "IPv4 broadcast"
-msgstr "IPv4广播"
+msgstr "IPv4 广播"
 
 msgid "IPv4 gateway"
-msgstr "IPv4网关"
+msgstr "IPv4 网关"
 
 msgid "IPv4 netmask"
-msgstr "IPv4子网掩码"
+msgstr "IPv4 子网掩码"
 
 msgid "IPv4 only"
-msgstr "仅IPv4"
+msgstr "仅 IPv4"
 
 msgid "IPv4 prefix"
-msgstr "IPv4地址前缀"
+msgstr "IPv4 地址前缀"
 
 msgid "IPv4 prefix length"
-msgstr "IPv4地址前缀长度"
+msgstr "IPv4 地址前缀长度"
 
 msgid "IPv4-Address"
 msgstr "IPv4-地址"
@@ -1393,52 +1389,52 @@ msgid "IPv6"
 msgstr "IPv6"
 
 msgid "IPv6 Firewall"
-msgstr "IPv6防火墙"
+msgstr "IPv6 防火墙"
 
 msgid "IPv6 Neighbours"
-msgstr "IPv6邻居"
+msgstr "IPv6 网上邻居"
 
 msgid "IPv6 Settings"
-msgstr "IPv6设置"
+msgstr "IPv6 设置"
 
 msgid "IPv6 ULA-Prefix"
-msgstr "IPv6 ULA前缀"
+msgstr "IPv6 ULA 前缀"
 
 msgid "IPv6 WAN Status"
-msgstr "IPv6 WAN状态"
+msgstr "IPv6 WAN 状态"
 
 msgid "IPv6 address"
-msgstr "IPv6地址"
+msgstr "IPv6 地址"
 
 msgid "IPv6 address delegated to the local tunnel endpoint (optional)"
-msgstr "绑定到本地隧道终点的IPv6地址(可选)"
+msgstr "绑定到本地隧道终点的 IPv6 地址 (可选)"
 
 msgid "IPv6 assignment hint"
-msgstr "IPv6分配提示"
+msgstr "IPv6 分配提示"
 
 msgid "IPv6 assignment length"
-msgstr "IPv6分配长度"
+msgstr "IPv6 分配长度"
 
 msgid "IPv6 gateway"
-msgstr "IPv6网关"
+msgstr "IPv6 网关"
 
 msgid "IPv6 only"
-msgstr "仅IPv6"
+msgstr "仅 IPv6"
 
 msgid "IPv6 prefix"
-msgstr "IPv6地址前缀"
+msgstr "IPv6 地址前缀"
 
 msgid "IPv6 prefix length"
-msgstr "IPv6地址前缀长度"
+msgstr "IPv6 地址前缀长度"
 
 msgid "IPv6 routed prefix"
-msgstr "IPv6路由前缀"
+msgstr "IPv6 路由前缀"
 
 msgid "IPv6-Address"
 msgstr "IPv6-地址"
 
 msgid "IPv6-PD"
-msgstr ""
+msgstr "IPv6-PD"
 
 msgid "IPv6-in-IPv4 (RFC4213)"
 msgstr "IPv6-in-IPv4 (RFC4213)"
@@ -1453,14 +1449,14 @@ msgid "Identity"
 msgstr "鉴权"
 
 msgid "If checked, 1DES is enaled"
-msgstr "选中以启用1DES"
+msgstr "选中以启用 1DES"
 
 msgid "If checked, encryption is disabled"
 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 "
@@ -1471,7 +1467,7 @@ msgid "If unchecked, no default route is configured"
 msgstr "留空则不配置默认路由"
 
 msgid "If unchecked, the advertised DNS server addresses are ignored"
-msgstr "留空则忽略所通告的DNS服务器地址"
+msgstr "留空则忽略所通告的 DNS 服务器地址"
 
 msgid ""
 "If your physical memory is insufficient unused data can be temporarily "
@@ -1485,7 +1481,7 @@ msgid "Ignore <code>/etc/hosts</code>"
 msgstr "忽略 <code>/etc/hosts</code>"
 
 msgid "Ignore interface"
-msgstr "å\85³é\97­DHCP"
+msgstr "忽ç\95¥æ­¤æ\8e¥å\8f£"
 
 msgid "Ignore resolve file"
 msgstr "忽略解析文件"
@@ -1507,7 +1503,7 @@ msgid "Inactivity timeout"
 msgstr "活动超时"
 
 msgid "Inbound:"
-msgstr "入站"
+msgstr "入站:"
 
 msgid "Info"
 msgstr "信息"
@@ -1522,7 +1518,7 @@ msgid "Install"
 msgstr "安装"
 
 msgid "Install iputils-traceroute6 for IPv6 traceroute"
-msgstr "安装 iputils-traceroute6 以进行IPv6 traceroute"
+msgstr "安装 iputils-traceroute6 以进行 IPv6 路由追踪"
 
 msgid "Install package %q"
 msgstr "安装软件包 %q"
@@ -1573,30 +1569,33 @@ msgid "Invalid"
 msgstr "无效"
 
 msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
-msgstr "无效的VLAN ID!只有 %d 和 %d 之间的ID有效。"
+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 ""
+
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
 "flash memory, please verify the image file!"
 msgstr "你尝试刷写的固件与本路由器不兼容,请重新验证固件文件。"
 
-msgid "Java Script required!"
-msgstr "需要Java Script!"
+msgid "JavaScript required!"
+msgstr "需要 JavaScript!"
 
 msgid "Join Network"
 msgstr "加入网络"
 
 msgid "Join Network: Wireless Scan"
-msgstr "加入网络搜索无线"
+msgstr "加入网络搜索无线"
 
 msgid "Joining Network: %q"
-msgstr "加入网络%q"
+msgstr "加入网络%q"
 
 msgid "Keep settings"
 msgstr "保留配置"
@@ -1620,13 +1619,13 @@ msgid "L2TP"
 msgstr "L2TP"
 
 msgid "L2TP Server"
-msgstr "L2TP服务器"
+msgstr "L2TP 服务器"
 
 msgid "LCP echo failure threshold"
-msgstr "LCP响应故障阈值"
+msgstr "LCP 响应故障阈值"
 
 msgid "LCP echo interval"
-msgstr "LCP响应间隔"
+msgstr "LCP 响应间隔"
 
 msgid "LLC"
 msgstr "LLC"
@@ -1644,7 +1643,7 @@ msgid "Latency"
 msgstr "延迟"
 
 msgid "Leaf"
-msgstr "叶"
+msgstr "叶节点"
 
 msgid "Lease time"
 msgstr "租期"
@@ -1665,10 +1664,10 @@ msgid "Leave empty to autodetect"
 msgstr "留空则自动探测"
 
 msgid "Leave empty to use the current WAN address"
-msgstr "留空则使用当前WAN地址"
+msgstr "留空则使用当前 WAN 地址"
 
 msgid "Legend:"
-msgstr "图例"
+msgstr "图例:"
 
 msgid "Limit"
 msgstr "客户数"
@@ -1680,7 +1679,7 @@ msgid "Limit listening to these interfaces, and loopback."
 msgstr "仅监听这些接口和环回接口。"
 
 msgid "Line Attenuation (LATN)"
-msgstr "线路衰减(LATN)"
+msgstr "线路衰减 (LATN)"
 
 msgid "Line Mode"
 msgstr "线路模式"
@@ -1697,7 +1696,9 @@ msgstr "活动链接"
 msgid ""
 "List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
 "requests to"
-msgstr "将指定的域名DNS解析转发到指定的DNS服务器(按照示例填写)"
+msgstr ""
+"将指定域名的解析请求转发到指定的 <abbr title=\"域名系统\">DNS</abbr> 服务器 "
+"(按照示例填写)"
 
 msgid ""
 "List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
@@ -1706,6 +1707,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 地址。"
 
 msgid ""
 "List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
@@ -1714,12 +1718,16 @@ 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 "
+"的列表。"
 
 msgid "List of SSH key files for auth"
-msgstr "用于认证的SSH密钥文件列表"
+msgstr "用于认证的 SSH 密钥文件列表"
 
 msgid "List of domains to allow RFC1918 responses for"
-msgstr "允许RFC1918响应的域名列表"
+msgstr "允许 RFC1918 响应的域名列表"
 
 msgid "List of hosts that supply bogus NX domain results"
 msgstr "允许虚假空域名响应的服务器列表"
@@ -1731,10 +1739,10 @@ msgid "Listen Port"
 msgstr "监听端口"
 
 msgid "Listen only on the given interface or, if unspecified, on all"
-msgstr "监听指定的接口;未指定则监听全部"
+msgstr "仅监听指定的接口,未指定则监听全部"
 
 msgid "Listening port for inbound DNS queries"
-msgstr "入站DNS查询端口"
+msgstr "入站 DNS 查询端口"
 
 msgid "Load"
 msgstr "负载"
@@ -1746,13 +1754,13 @@ msgid "Loading"
 msgstr "加载中"
 
 msgid "Local IP address to assign"
-msgstr "要分配的本地IP地址"
+msgstr "要分配的本地 IP 地址"
 
 msgid "Local IPv4 address"
-msgstr "本地IPv4地址"
+msgstr "本地 IPv4 地址"
 
 msgid "Local IPv6 address"
-msgstr "本地IPv6地址"
+msgstr "本地 IPv6 地址"
 
 msgid "Local Service Only"
 msgstr "仅本地服务"
@@ -1769,10 +1777,10 @@ msgstr "本地域名"
 msgid ""
 "Local domain specification. Names matching this domain are never forwarded "
 "and are resolved from DHCP or hosts files only"
-msgstr "本地域名规则。与此域匹配的名称从不转发,仅从DHCP或HOSTS文件解析"
+msgstr "本地域名规则。与此域匹配的名称从不转发,仅从 DHCP 或 HOSTS 文件解析"
 
 msgid "Local domain suffix appended to DHCP names and hosts file entries"
-msgstr "本地域名后缀将添加到DHCP和HOSTS文件条目"
+msgstr "本地域名后缀将添加到 DHCP 和 HOSTS 文件条目"
 
 msgid "Local server"
 msgstr "本地服务器"
@@ -1780,7 +1788,7 @@ msgstr "本地服务器"
 msgid ""
 "Localise hostname depending on the requesting subnet if multiple IPs are "
 "available"
-msgstr "如果有多个IP可用,则根据请求来源的子网来本地化主机名"
+msgstr "如果有多个 IP 可用,则根据请求来源的子网来本地化主机名"
 
 msgid "Localise queries"
 msgstr "本地化查询"
@@ -1792,7 +1800,7 @@ msgid "Log output level"
 msgstr "日志记录等级"
 
 msgid "Log queries"
-msgstr "日志查询"
+msgstr "记录查询日志"
 
 msgid "Logging"
 msgstr "日志"
@@ -1804,7 +1812,7 @@ msgid "Logout"
 msgstr "退出"
 
 msgid "Loss of Signal Seconds (LOSS)"
-msgstr "信号丢失秒数(LOSS)"
+msgstr "信号丢失秒数 (LOSS)"
 
 msgid "Lowest leased address as offset from the network address."
 msgstr "网络地址的起始分配基址。"
@@ -1839,28 +1847,25 @@ 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)"
-
-msgid "Maximum Rate"
-msgstr "最高速率"
+msgstr "最大可达数据速率 (ATTNDR)"
 
 msgid "Maximum allowed number of active DHCP leases"
-msgstr "允许的最大DHCP租用数"
+msgstr "允许的最大 DHCP 租用数"
 
 msgid "Maximum allowed number of concurrent DNS queries"
-msgstr "允许的最大并发DNS查询数"
+msgstr "允许的最大并发 DNS 查询数"
 
 msgid "Maximum allowed size of EDNS.0 UDP packets"
-msgstr "允许的最大EDNS.0 UDP数据包大小"
+msgstr "允许的最大 EDNS.0 UDP 数据包大小"
 
 msgid "Maximum amount of seconds to wait for the modem to become ready"
-msgstr "调制解调器就绪的最大等待时间(秒)"
+msgstr "调制解调器就绪的最大等待时间 (秒)"
 
 msgid "Maximum hold time"
 msgstr "最大持续时间"
@@ -1869,7 +1874,7 @@ 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 "最大地址分配数量。"
@@ -1881,14 +1886,11 @@ msgid "Memory"
 msgstr "内存"
 
 msgid "Memory usage (%)"
-msgstr "内存使用率(%)"
+msgstr "内存使用率 (%)"
 
 msgid "Metric"
 msgstr "跃点数"
 
-msgid "Minimum Rate"
-msgstr "最低速率"
-
 msgid "Minimum hold time"
 msgstr "最低持续时间"
 
@@ -1902,7 +1904,7 @@ msgid "Missing protocol extension for proto %q"
 msgstr "缺少协议 %q 的协议扩展"
 
 msgid "Mobility Domain"
-msgstr ""
+msgstr "移动域"
 
 msgid "Mode"
 msgstr "模式"
@@ -1917,7 +1919,7 @@ msgid "Modem init timeout"
 msgstr "调制解调器初始化超时"
 
 msgid "Monitor"
-msgstr "监听Monitor"
+msgstr "监听"
 
 msgid "Mount Entry"
 msgstr "挂载项目"
@@ -1929,15 +1931,15 @@ msgid "Mount Points"
 msgstr "挂载点"
 
 msgid "Mount Points - Mount Entry"
-msgstr "挂载点-存储区"
+msgstr "挂载点 - 存储区"
 
 msgid "Mount Points - Swap Entry"
-msgstr "挂载点-交换区"
+msgstr "挂载点 - 交换区"
 
 msgid ""
 "Mount Points define at which point a memory device will be attached to the "
 "filesystem"
-msgstr "配置存储设备挂载到文件系统中的位置和参数"
+msgstr "配置存储设备挂载到文件系统中的位置和参数"
 
 msgid "Mount filesystems not specifically configured"
 msgstr "自动挂载未专门配置挂载点的分区"
@@ -1949,7 +1951,7 @@ msgid "Mount point"
 msgstr "挂载点"
 
 msgid "Mount swap not specifically configured"
-msgstr "自动挂载未专门配置的Swap分区"
+msgstr "自动挂载未专门配置的 Swap 分区"
 
 msgid "Mounted file systems"
 msgstr "已挂载的文件系统"
@@ -1960,9 +1962,6 @@ msgstr "下移"
 msgid "Move up"
 msgstr "上移"
 
-msgid "Multicast Rate"
-msgstr "多播速率"
-
 msgid "Multicast address"
 msgstr "多播地址"
 
@@ -1970,22 +1969,25 @@ msgid "NAS ID"
 msgstr "NAS ID"
 
 msgid "NAT-T Mode"
-msgstr "NAT-T模式"
+msgstr "NAT-T 模式"
 
 msgid "NAT64 Prefix"
-msgstr "NAT64前缀"
+msgstr "NAT64 前缀"
+
+msgid "NCM"
+msgstr ""
 
 msgid "NDP-Proxy"
 msgstr "NDP-代理"
 
 msgid "NT Domain"
-msgstr "NT域"
+msgstr "NT 域"
 
 msgid "NTP server candidates"
-msgstr "候选NTP服务器"
+msgstr "候选 NTP 服务器"
 
 msgid "NTP sync time-out"
-msgstr "NTP同步超时"
+msgstr "NTP 同步超时"
 
 msgid "Name"
 msgstr "名称"
@@ -2018,10 +2020,10 @@ msgid "Next »"
 msgstr "下一步 »"
 
 msgid "No DHCP Server configured for this interface"
-msgstr "本接口未配置DHCP服务器"
+msgstr "本接口未配置 DHCP 服务器"
 
 msgid "No NAT-T"
-msgstr "无NAT-T"
+msgstr "无 NAT-T"
 
 msgid "No chains in this table"
 msgstr "本表中没有链"
@@ -2057,16 +2059,16 @@ msgid "Noise"
 msgstr "噪声"
 
 msgid "Noise Margin (SNR)"
-msgstr "噪声容限(SNR)"
+msgstr "噪声容限 (SNR)"
 
 msgid "Noise:"
 msgstr "噪声:"
 
 msgid "Non Pre-emtive CRC errors (CRC_P)"
-msgstr "非抢占CRC错误(CRC_P)"
+msgstr "非抢占 CRC 错误 (CRC_P)"
 
 msgid "Non-wildcard"
-msgstr "非通配符"
+msgstr "非全部地址"
 
 msgid "None"
 msgstr "无"
@@ -2084,10 +2086,10 @@ msgid "Not connected"
 msgstr "未连接"
 
 msgid "Note: Configuration files will be erased."
-msgstr "注意配置文件将被删除。"
+msgstr "注意配置文件将被删除。"
 
 msgid "Note: interface name length"
-msgstr "注意接口名称长度"
+msgstr "注意接口名称长度"
 
 msgid "Notice"
 msgstr "注意"
@@ -2102,10 +2104,10 @@ msgid "OPKG-Configuration"
 msgstr "OPKG-配置"
 
 msgid "Obfuscated Group Password"
-msgstr ""
+msgstr "混淆组密码"
 
 msgid "Obfuscated Password"
-msgstr ""
+msgstr "混淆密码"
 
 msgid "Off-State Delay"
 msgstr "关闭时间"
@@ -2117,7 +2119,10 @@ msgid ""
 "<abbr title=\"Virtual Local Area Network\">VLAN</abbr> notation "
 "<samp>INTERFACE.VLANNR</samp> (<abbr title=\"for example\">e.g.</abbr>: "
 "<samp>eth0.1</samp>)."
-msgstr "配置网络接口信息。"
+msgstr ""
+"在此页面,你可以配置网络接口。你可以勾选“桥接接口”,并输入由空格分隔的多个网"
+"络接口的名称来桥接多个接口。还可以使用 <abbr title=\"虚拟局域网\">VLAN</"
+"abbr> 符号 <samp>INTERFACE.VLANNR</samp> (例如: <samp>eth0.1</samp>)。"
 
 msgid "On-State Delay"
 msgstr "通电时间"
@@ -2138,7 +2143,7 @@ msgid "Open list..."
 msgstr "打开列表..."
 
 msgid "OpenConnect (CISCO AnyConnect)"
-msgstr "开放连接(CISCO AnyConnect)"
+msgstr "开放连接 (CISCO AnyConnect)"
 
 msgid "Operating frequency"
 msgstr "工作频率"
@@ -2150,29 +2155,35 @@ msgid "Option removed"
 msgstr "移除的选项"
 
 msgid "Optional"
-msgstr ""
+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账号拥有一个以上的隧道请设置此项."
+msgstr "可选,如果你的 SIXXS 账号拥有一个以上的隧道请设置此项."
 
 msgid "Optional."
-msgstr "可选"
+msgstr "可选"
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
 msgstr ""
+"可选,传出加密数据包的 32 位标记。请输入十六进制值,以 <code>0x</code> 开头。"
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr "可选,Base64 编码的预共享密钥。"
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
-msgstr "可选,为此Peer创建允许IP的路由。"
+msgstr "可选,为此 Peer 创建允许 IP 的路由。"
 
 msgid ""
 "Optional. Host of peer. Names are resolved prior to bringing up the "
 "interface."
-msgstr ""
+msgstr "可选,Peer 的主机。"
 
 msgid "Optional. Maximum Transmission Unit of tunnel interface."
 msgstr "可选,隧道接口的最大传输单元。"
@@ -2184,55 +2195,52 @@ 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端口。"
+msgstr "可选,用于传出和传入数据包的 UDP 端口。"
 
 msgid "Options"
 msgstr "选项"
 
 msgid "Other:"
-msgstr "其余"
+msgstr "其余:"
 
 msgid "Out"
 msgstr "出口"
 
 msgid "Outbound:"
-msgstr "出站:"
-
-msgid "Outdoor Channels"
-msgstr "户外频道"
+msgstr "出站:"
 
 msgid "Output Interface"
 msgstr "网络出口"
 
 msgid "Override MAC address"
-msgstr "克隆MAC地址"
+msgstr "重设 MAC 地址"
 
 msgid "Override MTU"
-msgstr "更新MTU"
+msgstr "重设 MTU"
 
 msgid "Override TOS"
-msgstr "更新TOS"
+msgstr "重设 TOS"
 
 msgid "Override TTL"
-msgstr "更新TTL"
+msgstr "重设 TTL"
 
 msgid "Override default interface name"
-msgstr "更新默认接口名称"
+msgstr "重设默认接口名称"
 
 msgid "Override the gateway in DHCP responses"
-msgstr "更新DHCP响应网关"
+msgstr "重设 DHCP 响应网关"
 
 msgid ""
 "Override the netmask sent to clients. Normally it is calculated from the "
 "subnet that is served."
-msgstr "更新发送到客户端的子网掩码。"
+msgstr "重设发送到客户端的子网掩码。"
 
 msgid "Override the table used for internal routes"
-msgstr "更新内部路由表"
+msgstr "重设内部路由表"
 
 msgid "Overview"
 msgstr "总览"
@@ -2241,10 +2249,10 @@ msgid "Owner"
 msgstr "用户名"
 
 msgid "PAP/CHAP password"
-msgstr "PAP/CHAP密码"
+msgstr "PAP/CHAP 密码"
 
 msgid "PAP/CHAP username"
-msgstr "PAP/CHAP用户名"
+msgstr "PAP/CHAP 用户名"
 
 msgid "PID"
 msgstr "PID"
@@ -2253,13 +2261,13 @@ msgid "PIN"
 msgstr "PIN"
 
 msgid "PMK R1 Push"
-msgstr ""
+msgstr "PMK R1 Push"
 
 msgid "PPP"
 msgstr "PPP"
 
 msgid "PPPoA Encapsulation"
-msgstr "PPPoA封包"
+msgstr "PPPoA 封包"
 
 msgid "PPPoATM"
 msgstr "PPPoATM"
@@ -2274,19 +2282,19 @@ msgid "PPtP"
 msgstr "PPtP"
 
 msgid "PSID offset"
-msgstr "PSID偏移"
+msgstr "PSID 偏移"
 
 msgid "PSID-bits length"
-msgstr "PSID长度"
+msgstr "PSID-bits 长度"
 
 msgid "PTM/EFM (Packet Transfer Mode)"
-msgstr "PTM/EFM(分组传输模式)"
+msgstr "PTM/EFM (分组传输模式)"
 
 msgid "Package libiwinfo required!"
 msgstr "需要 libiwinfo 软件包!"
 
 msgid "Package lists are older than 24 hours"
-msgstr "软件包列表已超过24小时未更新"
+msgstr "软件包列表已超过 24 小时未更新"
 
 msgid "Package name"
 msgstr "软件包名称"
@@ -2313,7 +2321,7 @@ msgid "Password successfully changed!"
 msgstr "密码修改成功!"
 
 msgid "Path to CA-Certificate"
-msgstr "CA证书路径"
+msgstr "CA 证书路径"
 
 msgid "Path to Client-Certificate"
 msgstr "客户端证书路径"
@@ -2337,7 +2345,7 @@ msgid "Peak:"
 msgstr "峰值:"
 
 msgid "Peer IP address to assign"
-msgstr "要分配的Peer IP地址"
+msgstr "要分配的 Peer IP 地址"
 
 msgid "Peers"
 msgstr "Peers"
@@ -2349,10 +2357,10 @@ msgid "Perform reboot"
 msgstr "执行重启"
 
 msgid "Perform reset"
-msgstr "执行复位"
+msgstr "执行重置"
 
 msgid "Persistent Keep Alive"
-msgstr "持续Keep-Alive"
+msgstr "持续 Keep-Alive"
 
 msgid "Phy Rate:"
 msgstr "物理速率:"
@@ -2376,16 +2384,22 @@ 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"
+
+msgid "Prefer UMTS"
+msgstr "首选 UMTS"
 
 msgid "Prefix Delegated"
-msgstr ""
+msgstr "分发前缀"
 
 msgid "Preshared Key"
 msgstr "预共享密钥"
@@ -2393,10 +2407,10 @@ msgstr "预共享密钥"
 msgid ""
 "Presume peer to be dead after given amount of LCP echo failures, use 0 to "
 "ignore failures"
-msgstr "在指定数量的LCP响应故障后假定链路已断开,0为忽略故障"
+msgstr "在指定数量的 LCP 响应故障后假定链路已断开,0 为忽略故障"
 
 msgid "Prevent listening on these interfaces."
-msgstr "防止监听这些接口。"
+msgstr "监听这些接口。"
 
 msgid "Prevents client-to-client communication"
 msgstr "禁止客户端间通信"
@@ -2438,7 +2452,7 @@ msgid "Provide new network"
 msgstr "添加新网络"
 
 msgid "Pseudo Ad-Hoc (ahdemo)"
-msgstr "伪装Ad-Hoc(ahdemo)"
+msgstr "伪装 Ad-Hoc (ahdemo)"
 
 msgid "Public Key"
 msgstr "公钥"
@@ -2447,22 +2461,22 @@ msgid "Public prefix routed to this device for distribution to clients."
 msgstr "分配到此设备的公共前缀,用以分发到客户端。"
 
 msgid "QMI Cellular"
-msgstr "QMI蜂窝"
+msgstr "QMI 蜂窝"
 
 msgid "Quality"
 msgstr "质量"
 
 msgid "R0 Key Lifetime"
-msgstr ""
+msgstr "R0 Key Lifetime"
 
 msgid "R1 Key Holder"
-msgstr ""
+msgstr "R1 Key Holder"
 
 msgid "RFC3947 NAT-T mode"
-msgstr "RFC3947 NAT-T模式"
+msgstr "RFC3947 NAT-T 模式"
 
 msgid "RTS/CTS Threshold"
-msgstr "RTS/CTS阈值"
+msgstr "RTS/CTS 阈值"
 
 msgid "RX"
 msgstr "接收"
@@ -2471,7 +2485,7 @@ msgid "RX Rate"
 msgstr "接收速率"
 
 msgid "RaLink 802.11%s Wireless Controller"
-msgstr "MediaTek/RaLink 802.11%s 无线网卡"
+msgstr "RaLink 802.11%s 无线网卡"
 
 msgid "Radius-Accounting-Port"
 msgstr "Radius 计费端口"
@@ -2495,8 +2509,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=\"Dynamic Host Configuration "
-"Protocol\">DHCP</abbr>-服务器"
+"根据 <code>/etc/ethers</code> 来配置 <abbr title=\"动态主机配置协议\">DHCP</"
+"abbr>-服务器"
 
 msgid ""
 "Really delete this interface? The deletion cannot be undone!\\nYou might "
@@ -2547,7 +2561,7 @@ msgid "Realtime Wireless"
 msgstr "实时无线"
 
 msgid "Reassociation Deadline"
-msgstr ""
+msgstr "重关联截止时间"
 
 msgid "Rebind protection"
 msgstr "重绑定保护"
@@ -2568,7 +2582,7 @@ msgid "Receiver Antenna"
 msgstr "接收天线"
 
 msgid "Recommended. IP addresses of the WireGuard interface."
-msgstr ""
+msgstr "推荐,Wire Guard 接口的 IP 地址。"
 
 msgid "Reconnect this interface"
 msgstr "重连此接口"
@@ -2579,9 +2593,6 @@ msgstr "重连接口中..."
 msgid "References"
 msgstr "引用"
 
-msgid "Regulatory Domain"
-msgstr "无线网络国家区域"
-
 msgid "Relay"
 msgstr "中继"
 
@@ -2595,10 +2606,10 @@ msgid "Relay bridge"
 msgstr "中继桥"
 
 msgid "Remote IPv4 address"
-msgstr "远程IPv4地址"
+msgstr "远程 IPv4 地址"
 
 msgid "Remote IPv4 address or FQDN"
-msgstr "远程IPv4地址或FQDN"
+msgstr "远程 IPv4 地址或 FQDN"
 
 msgid "Remove"
 msgstr "移除"
@@ -2613,43 +2624,45 @@ msgid "Replace wireless configuration"
 msgstr "重置无线配置"
 
 msgid "Request IPv6-address"
-msgstr "请求IPv6地址"
+msgstr "请求 IPv6 地址"
 
 msgid "Request IPv6-prefix of length"
-msgstr "请求指定长度的IPv6前缀"
+msgstr "请求指定长度的 IPv6 前缀"
 
 msgid "Require TLS"
-msgstr "必须使用TLS"
+msgstr "必须使用 TLS"
 
 msgid "Required"
-msgstr ""
+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编码私钥。"
+msgstr "必须,此接口的 Base64 编码私钥。"
+
+msgid "Required. Base64-encoded public key of peer."
+msgstr "必须,Peer 的 Base64 编码公钥。"
 
 msgid ""
 "Required. IP addresses and prefixes that this peer is allowed to use inside "
 "the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
 "routes through the tunnel."
 msgstr ""
-"必须,允许该Peer在隧道中使用的IP地址和前缀,通常是该Peer的隧道IP地址和通过隧"
-"道的路由网络。"
-
-msgid "Required. Public key of peer."
-msgstr "必须,Peer的公钥。"
+"必须,允许该 Peer 在隧道中使用的 IP 地址和前缀,通常是该 Peer 的隧道 IP 地址"
+"和通过隧道的路由网络。"
 
 msgid ""
 "Requires the 'full' version of wpad/hostapd and support from the wifi driver "
 "<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
 msgstr ""
+"需要 wpad/hostapd 的完整版本和 WiFi 驱动程序的支持<br />(截至 2017 年 2 月: "
+"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 "复位"
@@ -2661,7 +2674,7 @@ msgid "Reset to defaults"
 msgstr "恢复到出厂设置"
 
 msgid "Resolv and Hosts Files"
-msgstr "HOSTS和解析文件"
+msgstr "HOSTS 和解析文件"
 
 msgid "Resolve file"
 msgstr "解析文件"
@@ -2685,19 +2698,19 @@ msgid "Root"
 msgstr "Root"
 
 msgid "Root directory for files served via TFTP"
-msgstr "TFTP服务器的根目录"
+msgstr "TFTP 服务器的根目录"
 
 msgid "Root preparation"
-msgstr ""
+msgstr "根目录准备"
 
 msgid "Route Allowed IPs"
-msgstr "路由允许的IP"
+msgstr "路由允许的 IP"
 
 msgid "Route type"
 msgstr "路由类型"
 
 msgid "Routed IPv6 prefix for downstream interfaces"
-msgstr "下行接口的路由IPv6前缀"
+msgstr "下行接口的路由 IPv6 前缀"
 
 msgid "Router Advertisement-Service"
 msgstr "路由器广告服务"
@@ -2725,25 +2738,25 @@ 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 ""
+msgstr "SIXXS-handle[/Tunnel-ID]"
 
 msgid "SNR"
 msgstr "SNR"
 
 msgid "SSH Access"
-msgstr "SSH访问"
+msgstr "SSH 访问"
 
 msgid "SSH server address"
-msgstr "SSH服务器地址"
+msgstr "SSH 服务器地址"
 
 msgid "SSH server port"
-msgstr "SSH服务器端口"
+msgstr "SSH 服务器端口"
 
 msgid "SSH username"
-msgstr "SSH用户名"
+msgstr "SSH 用户名"
 
 msgid "SSH-Keys"
 msgstr "SSH-密钥"
@@ -2778,14 +2791,11 @@ 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 "隔离客户端"
 
-msgid "Separate WDS"
-msgstr "隔离WDS"
-
 msgid "Server Settings"
 msgstr "服务器设置"
 
@@ -2795,7 +2805,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 "服务器用户名"
@@ -2809,17 +2819,24 @@ msgstr "服务类型"
 msgid "Services"
 msgstr "服务"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+"无论链路载荷如何都设置接口属性 (如果设置,载荷侦听事件不调用 Hotplug 处理程"
+"序)。"
+
 msgid "Set up Time Synchronization"
 msgstr "设置时间同步"
 
 msgid "Setup DHCP Server"
-msgstr "配置DHCP服务器"
+msgstr "配置 DHCP 服务器"
 
 msgid "Severely Errored Seconds (SES)"
-msgstr "严重误码秒(SES)"
+msgstr "严重误码秒 (SES)"
 
 msgid "Short GI"
-msgstr ""
+msgstr "Short GI"
 
 msgid "Show current backup file list"
 msgstr "显示当前文件备份列表"
@@ -2834,7 +2851,7 @@ msgid "Signal"
 msgstr "信号"
 
 msgid "Signal Attenuation (SATN)"
-msgstr "信号衰减(SATN)"
+msgstr "信号衰减 (SATN)"
 
 msgid "Signal:"
 msgstr "信号:"
@@ -2843,7 +2860,7 @@ msgid "Size"
 msgstr "大小"
 
 msgid "Size (.ipk)"
-msgstr "大小(.ipk)"
+msgstr "大小 (.ipk)"
 
 msgid "Skip"
 msgstr "跳过"
@@ -2861,7 +2878,7 @@ msgid "Software"
 msgstr "软件包"
 
 msgid "Software VLAN"
-msgstr ""
+msgstr "软件 VLAN"
 
 msgid "Some fields are invalid, cannot save values!"
 msgstr "一些项目的值无效,无法保存!"
@@ -2877,8 +2894,8 @@ msgid ""
 "flashed manually. Please refer to the wiki for device specific install "
 "instructions."
 msgstr ""
-"抱歉,您的设备暂不支持Sysupgrade升级,需手动更新固件。请参考Wiki中关于此设备"
-"的固件更新说明。"
+"抱歉,您的设备暂不支持 Sysupgrade 升级,需手动更新固件。请参考 Wiki 中关于此"
+"设备的固件更新说明。"
 
 msgid "Sort"
 msgstr "排序"
@@ -2896,30 +2913,30 @@ 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 "在此指定密钥。"
@@ -2935,10 +2952,10 @@ msgid "Startup"
 msgstr "启动项"
 
 msgid "Static IPv4 Routes"
-msgstr "静态IPv4路由"
+msgstr "静态 IPv4 路由"
 
 msgid "Static IPv6 Routes"
-msgstr "静态IPv6路由"
+msgstr "静态 IPv6 路由"
 
 msgid "Static Leases"
 msgstr "静态地址分配"
@@ -2946,9 +2963,6 @@ msgstr "静态地址分配"
 msgid "Static Routes"
 msgstr "静态路由"
 
-msgid "Static WDS"
-msgstr "静态WDS"
-
 msgid "Static address"
 msgstr "静态地址"
 
@@ -2957,8 +2971,8 @@ msgid ""
 "to DHCP clients. They are also required for non-dynamic interface "
 "configurations where only hosts with a corresponding lease are served."
 msgstr ""
-"静态租约用于给DHCP客户端分配固定的IP地址和主机标识。只有指定的主机才能连接,"
-"并且接口须为非动态配置。"
+"静态租约用于给 DHCP 客户端分配固定的 IP 地址和主机标识。只有指定的主机才能连"
+"接,并且接口须为非动态配置。"
 
 msgid "Status"
 msgstr "状态"
@@ -2995,13 +3009,13 @@ 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交换机"
+msgstr "交换机 VLAN"
 
 msgid "Switch protocol"
-msgstr "切换协议"
+msgstr "交换机协议"
 
 msgid "Sync with browser"
 msgstr "同步浏览器时间"
@@ -3048,7 +3062,6 @@ msgstr "目标网络"
 msgid "Terminate"
 msgstr "关闭"
 
-#, fuzzy
 msgid ""
 "The <em>Device Configuration</em> section covers physical settings of the "
 "radio hardware such as channel, transmit power or antenna selection which "
@@ -3056,56 +3069,58 @@ 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>区域则"
+"<em>设备配置</em>区域可配置无线的硬件参数,比如信道、发射功率或发射天线 (如果"
+"此无线模块硬件支持多 SSID,则全部SSID共用此设备配置)。<em>接口配置</em>区域则"
 "可配置此网络的工作模式和加密等。"
 
 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 "
 "username instead of the user ID!"
-msgstr "HE.net客户端更新设置已经被改变,您现在必须使用用户名代替用户ID/"
+msgstr "HE.net 客户端更新设置已经被改变,您现在必须使用用户名代替用户 ID!"
 
 msgid ""
 "The IPv4 address or the fully-qualified domain name of the remote tunnel end."
-msgstr "远程隧道端的IPv4地址或完整域名。"
+msgstr "远程隧道端的 IPv4 地址或完整域名。"
 
 msgid ""
 "The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
-msgstr "运营商特定的IPv6前缀,通常以<code>::</code>为结尾"
+msgstr "运营商特定的 IPv6 前缀,通常以 <code>::</code> 为结尾"
 
 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=\"第三代扩展文件系统"
+"用于格式化存储器的文件系统,(例如<samp><abbr title=\"第三代扩展文件系统"
 "\">ext3</abbr></samp>)"
 
 msgid ""
 "The flash image was uploaded. Below is the checksum and file size listed, "
 "compare them with the original file to ensure data integrity.<br /> Click "
 "\"Proceed\" below to start the flash procedure."
-msgstr "固件已上传,请注意核对文件大小和校验值!<br />刷新过程切勿断电!"
+msgstr ""
+"固件已上传,请注意核对文件大小和校验值!<br />点击下面的“继续”开始刷写,刷新"
+"过程中切勿断电!"
 
 msgid "The following changes have been committed"
 msgstr "以下更改已提交"
@@ -3122,18 +3137,18 @@ msgstr "给定的网络名重复"
 msgid ""
 "The hardware is not multi-SSID capable and the existing configuration will "
 "be replaced if you proceed."
-msgstr "本机的硬件不支持多SSID,如果继续,现有配置将被替换。"
+msgstr "本机的硬件不支持多 SSID,如果继续,现有配置将被替换。"
 
 msgid ""
 "The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
 "addresses."
-msgstr "bit格式的IPv4前缀长度, 其余的用在IPv6地址."
+msgstr "IPv4 前缀长度 (bit),其余的用在 IPv6 地址。"
 
 msgid "The length of the IPv6 prefix in bits"
-msgstr "bit格式的IPv6前缀长度"
+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="
@@ -3143,9 +3158,9 @@ 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=\"虚拟局域网\">VLAN</abbr>,并支持电脑间的直"
+"接通讯。<abbr title=\"虚拟局域网\">VLAN</abbr> 也常用于分割不同网段。默认通常"
+"是一条上行端口连接 ISP,其余端口为本地子网。"
 
 msgid "The selected protocol needs a device assigned"
 msgstr "所选的协议需要分配设备"
@@ -3165,12 +3180,12 @@ msgid ""
 "settings."
 msgstr ""
 "正在刷新系统...<br />切勿关闭电源! DO NOT POWER OFF THE DEVICE!<br />等待数分"
-"钟后即可尝试重新连接到路由。您可能需要更改计算机的IP地址以重新连接。"
+"钟后即可尝试重新连接到路由。您可能需要更改计算机的 IP 地址以重新连接。"
 
 msgid ""
 "The tunnel end-point is behind NAT, defaults to disabled and only applies to "
 "AYIYA"
-msgstr "隧道端点在NAT之后,默认为禁用,仅适用于AYIYA"
+msgstr "隧道端点在 NAT 之后,默认为禁用,仅适用于 AYIYA"
 
 msgid ""
 "The uploaded image file does not contain a supported format. Make sure that "
@@ -3197,26 +3212,26 @@ 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地址"
+msgstr "中继的 IPv4 地址"
 
 msgid ""
 "This file may contain lines like 'server=/domain/1.2.3.4' or "
 "'server=1.2.3.4' fordomain-specific or full upstream <abbr title=\"Domain "
 "Name System\">DNS</abbr> servers."
 msgstr ""
-"æ­¤æ\96\87件å\8f¯è\83½å\8c\85å\90«ç±»ä¼¼'server=/domain/1.2.3.4'æ\88\96'server=1.2.3.4'ç\9a\84è¡\8cï¼\8cæ\9d¥è§£æ\9e\90ç\89¹å®\9a"
-"域名或指定上游<abbr title=\"域名服务系统\">DNS</abbr>服务器。"
+"æ­¤æ\96\87件å\8c\85å\90«ç±»ä¼¼äº\8e 'server=/domain/1.2.3.4' æ\88\96 'server=1.2.3.4' ç\9a\84è¡\8cï¼\8cç\94¨äº\8e解æ\9e\90"
+"特定域名或指定上游 <abbr title=\"域名服务系统\">DNS</abbr> 服务器。"
 
 msgid ""
 "This is a list of shell glob patterns for matching files and directories to "
 "include during sysupgrade. Modified files in /etc/config/ and certain other "
 "configurations are automatically preserved."
 msgstr ""
-"系统升级时要保存的配置文件和目录的清单。目录/etc/config/内修改过的文件以及部"
-"分其他配置会被自动保存。"
+"系统升级时要保存的配置文件和目录的清单。目录 /etc/config/ 内修改过的文件以及"
+"分其他配置会被自动保存。"
 
 msgid ""
 "This is either the \"Update Key\" configured for the tunnel or the account "
@@ -3226,17 +3241,17 @@ msgstr "如果更新密钥没有设置的话,隧道的“更新密钥”或者
 msgid ""
 "This is the content of /etc/rc.local. Insert your own commands here (in "
 "front of 'exit 0') to execute them at the end of the boot process."
-msgstr "启动脚本插入到'exit 0'之前即可随系统启动运行。"
+msgstr "启动脚本插入到 'exit 0' 之前即可随系统启动运行。"
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
 "ends with <code>:2</code>"
-msgstr "隧道代理分配的本地终端地址,通常以<code>:2</code>结尾"
+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=\"动态主机配置协议\">DHCP</abbr> 服务器"
 
 msgid "This is the plain username for logging into the account"
 msgstr "登录账户时填写的用户名"
@@ -3246,11 +3261,11 @@ 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"
-msgstr "这通常是隧道代理所管理的最近的PoP的地址"
+msgstr "这通常是隧道代理所管理的最近的 PoP 的地址"
 
 msgid ""
 "This list gives an overview over currently running system processes and "
@@ -3281,13 +3296,13 @@ msgid ""
 msgstr "上传备份存档以恢复配置。"
 
 msgid "Tone"
-msgstr ""
+msgstr "Tone"
 
 msgid "Total Available"
 msgstr "可用数"
 
 msgid "Traceroute"
-msgstr "Traceroute"
+msgstr "路由追踪"
 
 msgid "Traffic"
 msgstr "流量"
@@ -3314,7 +3329,7 @@ msgid "Trigger Mode"
 msgstr "触发模式"
 
 msgid "Tunnel ID"
-msgstr "隧道ID"
+msgstr "隧道 ID"
 
 msgid "Tunnel Interface"
 msgstr "隧道接口"
@@ -3331,9 +3346,6 @@ msgstr "隧道配置服务器"
 msgid "Tunnel type"
 msgstr "隧道类型"
 
-msgid "Turbo Mode"
-msgstr "Turbo模式"
-
 msgid "Tx-Power"
 msgstr "传输功率"
 
@@ -3344,16 +3356,16 @@ msgid "UDP:"
 msgstr "UDP:"
 
 msgid "UMTS only"
-msgstr "仅UMTS(WCDMA)"
+msgstr "仅 UMTS (WCDMA)"
 
 msgid "UMTS/GPRS/EV-DO"
 msgstr "UMTS/GPRS/EV-DO"
 
 msgid "USB Device"
-msgstr "USB设备"
+msgstr "USB 设备"
 
 msgid "USB Ports"
-msgstr ""
+msgstr "USB 接口"
 
 msgid "UUID"
 msgstr "UUID"
@@ -3362,7 +3374,7 @@ msgid "Unable to dispatch"
 msgstr "无法调度"
 
 msgid "Unavailable Seconds (UAS)"
-msgstr "不可用秒数(UAS)"
+msgstr "不可用秒数 (UAS)"
 
 msgid "Unknown"
 msgstr "未知"
@@ -3389,7 +3401,7 @@ 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 "上传备份..."
@@ -3401,37 +3413,37 @@ msgid "Uptime"
 msgstr "运行时间"
 
 msgid "Use <code>/etc/ethers</code>"
-msgstr "使用<code>/etc/ethers</code>配置"
+msgstr "使用 <code>/etc/ethers</code> 配置"
 
 msgid "Use DHCP gateway"
-msgstr "使用DHCP网关"
+msgstr "使用 DHCP 网关"
 
 msgid "Use DNS servers advertised by peer"
 msgstr "使用端局通告的DNS服务器"
 
 msgid "Use ISO/IEC 3166 alpha2 country codes."
-msgstr "参考ISO/IEC 3166 alpha2国家代码。"
+msgstr "参考 ISO/IEC 3166 alpha2 国家代码。"
 
 msgid "Use MTU on tunnel interface"
-msgstr "隧道接口的MTU"
+msgstr "隧道接口的 MTU"
 
 msgid "Use TTL on tunnel interface"
-msgstr "隧道接口的TTL"
+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 "使用广播标签"
 
 msgid "Use builtin IPv6-management"
-msgstr "使用内置的IPv6管理"
+msgstr "使用内置的 IPv6 管理"
 
 msgid "Use custom DNS servers"
-msgstr "使用自定义的DNS服务器"
+msgstr "使用自定义的 DNS 服务器"
 
 msgid "Use default gateway"
 msgstr "使用默认网关"
@@ -3462,12 +3474,14 @@ msgid ""
 "Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
 "needed with normal WPA(2)-PSK."
 msgstr ""
+"用于两种不同的用途: RADIUS NAS ID 和 802.11r R0KH-ID。普通 WPA(2)-PSK 不需"
+"要。"
 
 msgid "User certificate (PEM encoded)"
-msgstr "客户证书(PEM加密的)"
+msgstr "客户证书 (PEM加密的)"
 
 msgid "User key (PEM encoded)"
-msgstr "客户Key(PEM加密的)"
+msgstr "客户 Key (PEM加密的)"
 
 msgid "Username"
 msgstr "用户名"
@@ -3479,40 +3493,40 @@ msgid "VDSL"
 msgstr "VDSL"
 
 msgid "VLANs on %q"
-msgstr "%q 上的VLAN"
+msgstr "%q 上的 VLAN"
 
 msgid "VLANs on %q (%s)"
-msgstr "%q (%s) 上的VLAN"
+msgstr "%q (%s) 上的 VLAN"
 
 msgid "VPN Local address"
-msgstr "VPN本地地址"
+msgstr "VPN 本地地址"
 
 msgid "VPN Local port"
-msgstr "VPN本地端口"
+msgstr "VPN 本地端口"
 
 msgid "VPN Server"
-msgstr "VPN服务器"
+msgstr "VPN 服务器"
 
 msgid "VPN Server port"
-msgstr "VPN服务器端口"
+msgstr "VPN 服务器端口"
 
 msgid "VPN Server's certificate SHA1 hash"
-msgstr "VPN服务器证书的SHA1哈希值"
+msgstr "VPN 服务器证书的 SHA1 哈希值"
 
 msgid "VPNC (CISCO 3000 (and others) VPN)"
-msgstr "VPNC (CISCO 3000 和其他VPN)"
+msgstr "VPNC (CISCO 3000 和其他 VPN)"
 
 msgid "Vendor"
-msgstr ""
+msgstr "Vendor"
 
 msgid "Vendor Class to send when requesting DHCP"
-msgstr "请求DHCP时发送的Vendor Class"
+msgstr "请求 DHCP 时发送的 Vendor Class"
 
 msgid "Verbose"
 msgstr "详细"
 
 msgid "Verbose logging by aiccu daemon"
-msgstr "aiccu守护程序详细日志"
+msgstr "Aiccu 守护程序详细日志"
 
 msgid "Verify"
 msgstr "验证"
@@ -3524,30 +3538,30 @@ msgid "WDS"
 msgstr "WDS"
 
 msgid "WEP Open System"
-msgstr "WEP开放认证"
+msgstr "WEP 开放认证"
 
 msgid "WEP Shared Key"
-msgstr "WEP共享密钥"
+msgstr "WEP 共享密钥"
 
 msgid "WEP passphrase"
-msgstr "WEP密钥"
+msgstr "WEP 密钥"
 
 msgid "WMM Mode"
-msgstr "WMM多媒体加速"
+msgstr "WMM 多媒体加速"
 
 msgid "WPA passphrase"
-msgstr "WPA密钥"
+msgstr "WPA 密钥"
 
 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 "正在应用更改..."
@@ -3562,10 +3576,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 "是否仅路由来自分发前缀的数据包"
@@ -3574,7 +3588,7 @@ msgid "Width"
 msgstr "频宽"
 
 msgid "WireGuard VPN"
-msgstr ""
+msgstr "WireGuard VPN"
 
 msgid "Wireless"
 msgstr "无线"
@@ -3610,33 +3624,30 @@ msgid "Wireless shut down"
 msgstr "无线已关闭"
 
 msgid "Write received DNS requests to syslog"
-msgstr "将收到的DNS请求写入系统日志"
+msgstr "将收到的 DNS 请求写入系统日志"
 
 msgid "Write system log to file"
 msgstr "将系统日志写入文件"
 
-msgid "XR Support"
-msgstr "XR支持"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "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 Java Script in your browser or LuCI will not work properly."
-msgstr "LUCI的正常运行需要开启浏览器的Java Script支持。"
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr "LUCI 的正常运行需要开启浏览器的 JavaScript 支持。"
 
 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或者使用"
-"诸å¦\82Firefox Opera Safari之类的浏览器。"
+"你的 Internet Explorer 已经老到无法正常显示这个页面了!请更新到 IE7 及以上或"
+"è\80\85使ç\94¨è¯¸å¦\82 Firefox Opera Safari 之类的浏览器。"
 
 msgid "any"
 msgstr "任意"
@@ -3677,7 +3688,7 @@ 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=\"动态主机配置协议\">DHCP</abbr> 租约的文件"
 
 msgid "forward"
 msgstr "转发"
@@ -3713,19 +3724,19 @@ msgid "kbit/s"
 msgstr "kbit/s"
 
 msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
-msgstr "本地<abbr title=\"域名服务系统\">DNS</abbr>解析文件"
+msgstr "本地 <abbr title=\"域名服务系统\">DNS</abbr> 解析文件"
 
 msgid "minimum 1280, maximum 1480"
-msgstr "最小值1280,最大值1480"
+msgstr "最小值 1280,最大值 1480"
 
 msgid "minutes"
-msgstr ""
+msgstr "分钟"
 
 msgid "navigation Navigation"
 msgstr "导航"
 
 msgid "no"
-msgstr ""
+msgstr ""
 
 msgid "no link"
 msgstr "未连接"
@@ -3776,7 +3787,7 @@ msgid "tagged"
 msgstr "关联"
 
 msgid "time units (TUs / 1.024 ms) [1000-65535]"
-msgstr ""
+msgstr "时间单位 (TUs / 1.024ms) [1000-65535]"
 
 msgid "unknown"
 msgstr "未知"
@@ -3788,7 +3799,7 @@ msgid "unspecified"
 msgstr "未指定"
 
 msgid "unspecified -or- create:"
-msgstr "未指定或创建"
+msgstr "未指定或创建:"
 
 msgid "untagged"
 msgstr "不关联"
@@ -3799,6 +3810,57 @@ msgstr "是"
 msgid "« Back"
 msgstr "« 后退"
 
+#~ msgid "AR Support"
+#~ msgstr "AR支持"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Qualcomm/Atheros 802.11%s 无线网卡"
+
+#~ msgid "Background Scan"
+#~ msgstr "后台搜索"
+
+#~ msgid "Compression"
+#~ msgstr "压缩"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "停用HW-Beacon计时器"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "不回送探测响应"
+
+#~ msgid "Fast Frames"
+#~ msgstr "快速帧"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "最高速率"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "最低速率"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "多播速率"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "户外频道"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "无线网络国家区域"
+
+#~ msgid "Separate WDS"
+#~ msgstr "隔离WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "静态WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo模式"
+
+#~ msgid "XR Support"
+#~ msgstr "XR支持"
+
+#~ msgid "Required. Public key of peer."
+#~ msgstr "必须,Peer的公钥。"
+
 #~ msgid "An additional network will be created if you leave this checked."
 #~ msgstr "如果选中此复选框,则会创建一个附加网络。"
 
index 8f759b8..e1d97dc 100644 (file)
@@ -147,6 +147,11 @@ msgstr "<abbr title=\"maximal\">最大</abbr>並發查詢數"
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
 msgid "A43C + J43 + A43"
 msgstr ""
 
@@ -165,9 +170,6 @@ msgstr ""
 msgid "APN"
 msgstr "APN"
 
-msgid "AR Support"
-msgstr "AR支援"
-
 msgid "ARP retry threshold"
 msgstr "ARP重試門檻"
 
@@ -405,9 +407,6 @@ msgstr ""
 msgid "Associated Stations"
 msgstr "已連接站點"
 
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s 無線控制器"
-
 msgid "Auth Group"
 msgstr ""
 
@@ -486,9 +485,6 @@ msgstr "返回至總覽"
 msgid "Back to scan results"
 msgstr "返回至掃描結果"
 
-msgid "Background Scan"
-msgstr "背景搜尋"
-
 msgid "Backup / Flash Firmware"
 msgstr "備份/升級韌體"
 
@@ -651,9 +647,6 @@ msgstr "指令"
 msgid "Common Configuration"
 msgstr "一般設定"
 
-msgid "Compression"
-msgstr "壓縮"
-
 msgid "Configuration"
 msgstr "設定"
 
@@ -872,9 +865,6 @@ msgstr "關閉DNS設置"
 msgid "Disable Encryption"
 msgstr ""
 
-msgid "Disable HW-Beacon timer"
-msgstr "關閉硬體燈號計時器"
-
 msgid "Disabled"
 msgstr "關閉"
 
@@ -918,9 +908,6 @@ msgstr "對不被公用名稱伺服器回應的請求不轉發"
 msgid "Do not forward reverse lookups for local networks"
 msgstr "對本地網域不轉發反解析鎖定"
 
-msgid "Do not send probe responses"
-msgstr "不傳送探測回應"
-
 msgid "Domain required"
 msgstr "網域必要的"
 
@@ -1117,9 +1104,6 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
-msgid "Fast Frames"
-msgstr "快速迅框群"
-
 msgid "File"
 msgstr "檔案"
 
@@ -1155,6 +1139,9 @@ msgstr "完成"
 msgid "Firewall"
 msgstr "防火牆"
 
+msgid "Firewall Mark"
+msgstr ""
+
 msgid "Firewall Settings"
 msgstr "防火牆設定"
 
@@ -1200,6 +1187,9 @@ msgstr "強制TKIP加密"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "強制TKIP+CCMP (AES)加密"
 
+msgid "Force link"
+msgstr ""
+
 msgid "Force use of NAT-T"
 msgstr ""
 
@@ -1592,13 +1582,16 @@ msgstr "打入的是不正確的VLAN ID!僅有獨一無二的IDs被允許"
 msgid "Invalid username and/or password! Please try again."
 msgstr "不正確的用戶名稱和/或者密碼!請再試一次."
 
+msgid "Isolate Clients"
+msgstr ""
+
 #, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
 "flash memory, please verify the image file!"
 msgstr "它顯示你正嘗試更新不適用於這個flash記憶體的映像檔,請檢查確認這個映像檔"
 
-msgid "Java Script required!"
+msgid "JavaScript required!"
 msgstr "需要Java腳本"
 
 msgid "Join Network"
@@ -1860,9 +1853,6 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
-msgid "Maximum Rate"
-msgstr "最快速度"
-
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "允許啟用DHCP釋放的最大數量"
 
@@ -1898,9 +1888,6 @@ msgstr "記憶體使用 (%)"
 msgid "Metric"
 msgstr "公測單位"
 
-msgid "Minimum Rate"
-msgstr "最低速度"
-
 msgid "Minimum hold time"
 msgstr "可持有的最低時間"
 
@@ -1972,9 +1959,6 @@ msgstr "往下移"
 msgid "Move up"
 msgstr "往上移"
 
-msgid "Multicast Rate"
-msgstr "多點群播速度"
-
 msgid "Multicast address"
 msgstr "多點群播位址"
 
@@ -1987,6 +1971,9 @@ msgstr ""
 msgid "NAT64 Prefix"
 msgstr ""
 
+msgid "NCM"
+msgstr ""
+
 msgid "NDP-Proxy"
 msgstr ""
 
@@ -2178,8 +2165,13 @@ msgid "Optional."
 msgstr ""
 
 msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
 msgstr ""
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2216,9 +2208,6 @@ msgstr "出"
 msgid "Outbound:"
 msgstr "外連:"
 
-msgid "Outdoor Channels"
-msgstr "室外通道"
-
 msgid "Output Interface"
 msgstr ""
 
@@ -2398,6 +2387,12 @@ msgstr ""
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
 msgid "Prefix Delegated"
 msgstr ""
 
@@ -2595,9 +2590,6 @@ msgstr "重連這個介面中"
 msgid "References"
 msgstr "引用"
 
-msgid "Regulatory Domain"
-msgstr "監管網域"
-
 msgid "Relay"
 msgstr "延遲"
 
@@ -2646,15 +2638,15 @@ msgstr "對特定的ISP需要,例如.DOCSIS 3 加速有線電視寬頻網路"
 msgid "Required. Base64-encoded private key for this interface."
 msgstr ""
 
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
 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 ""
 
-msgid "Required. Public key of peer."
-msgstr ""
-
 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)"
@@ -2797,9 +2789,6 @@ msgstr "傳送LCP呼叫請求在這個給予的秒數間隔內, 僅影響關聯
 msgid "Separate Clients"
 msgstr "分隔用戶端"
 
-msgid "Separate WDS"
-msgstr "分隔WDS中繼"
-
 msgid "Server Settings"
 msgstr "伺服器設定值"
 
@@ -2823,6 +2812,11 @@ msgstr "服務型態"
 msgid "Services"
 msgstr "各服務"
 
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
 #, fuzzy
 msgid "Set up Time Synchronization"
 msgstr "安裝校時同步"
@@ -2960,9 +2954,6 @@ msgstr "靜態租約"
 msgid "Static Routes"
 msgstr "靜態路由"
 
-msgid "Static WDS"
-msgstr "靜態WDS"
-
 msgid "Static address"
 msgstr "靜態位址"
 
@@ -3358,9 +3349,6 @@ msgstr ""
 msgid "Tunnel type"
 msgstr ""
 
-msgid "Turbo Mode"
-msgstr "渦輪爆衝模式"
-
 msgid "Tx-Power"
 msgstr "傳送-功率"
 
@@ -3645,9 +3633,6 @@ msgstr "寫入已接收的DNS請求到系統日誌中"
 msgid "Write system log to file"
 msgstr ""
 
-msgid "XR Support"
-msgstr "支援XR無線陣列"
-
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3657,8 +3642,8 @@ msgstr ""
 "告: 假如你關閉必要的初始化腳本像\"網路\", 你的設備將可能無法存取!</strong>"
 
 msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
-msgstr "在瀏覽器你必須啟用Java Script否則LuCI無法正常運作."
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr "在瀏覽器你必須啟用JavaScript否則LuCI無法正常運作."
 
 msgid ""
 "Your Internet Explorer is too old to display this page correctly. Please "
@@ -3829,6 +3814,54 @@ msgstr "是的"
 msgid "« Back"
 msgstr "« 倒退"
 
+#~ msgid "AR Support"
+#~ msgstr "AR支援"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s 無線控制器"
+
+#~ msgid "Background Scan"
+#~ msgstr "背景搜尋"
+
+#~ msgid "Compression"
+#~ msgstr "壓縮"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "關閉硬體燈號計時器"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "不傳送探測回應"
+
+#~ msgid "Fast Frames"
+#~ msgstr "快速迅框群"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "最快速度"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "最低速度"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "多點群播速度"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "室外通道"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "監管網域"
+
+#~ msgid "Separate WDS"
+#~ msgstr "分隔WDS中繼"
+
+#~ msgid "Static WDS"
+#~ msgstr "靜態WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "渦輪爆衝模式"
+
+#~ msgid "XR Support"
+#~ msgstr "支援XR無線陣列"
+
 #~ msgid "An additional network will be created if you leave this unchecked."
 #~ msgstr "取消選取將會另外建立一個新網路,而不會覆蓋目前的網路設定"
 
index 10636a4..f418ecb 100644 (file)
@@ -68,9 +68,10 @@ se = s:taboption("advanced", Flag, "sequential_ip",
        translate("Allocate IP addresses sequentially, starting from the lowest available address"))
 se.optional = true
 
-s:taboption("advanced", Flag, "boguspriv",
+bp = s:taboption("advanced", Flag, "boguspriv",
        translate("Filter private"),
        translate("Do not forward reverse lookups for local networks"))
+bp.default = bp.enabled
 
 s:taboption("advanced", Flag, "filterwin2k",
        translate("Filter useless"),
index 16a1044..0318522 100644 (file)
@@ -220,6 +220,12 @@ auto.default = (net:proto() == "none") and auto.disabled or auto.enabled
 delegate = s:taboption("advanced", Flag, "delegate", translate("Use builtin IPv6-management"))
 delegate.default = delegate.enabled
 
+force_link = s:taboption("advanced", Flag, "force_link",
+       translate("Force link"),
+       translate("Set interface properties regardless of the link carrier (If set, carrier sense events do not invoke hotplug handlers)."))
+
+force_link.default = (net:proto() == "static") and force_link.enabled or force_link.disabled
+
 
 if not net:is_virtual() then
        br = s:taboption("physical", Flag, "type", translate("Bridge interfaces"), translate("creates a bridge over specified interface(s)"))
index 33a8892..3a08d81 100644 (file)
@@ -248,64 +248,6 @@ if hwtype == "mac80211" then
 end
 
 
-------------------- Madwifi Device ------------------
-
-if hwtype == "atheros" then
-       tp = s:taboption("general",
-               (#tx_power_list > 0) and ListValue or Value,
-               "txpower", translate("Transmit Power"), "dBm")
-
-       tp.rmempty = true
-       tp.default = tx_power_cur
-
-       function tp.cfgvalue(...)
-               return txpower_current(Value.cfgvalue(...), tx_power_list)
-       end
-
-       tp:value("", translate("auto"))
-       for _, p in ipairs(tx_power_list) do
-               tp:value(p.driver_dbm, "%i dBm (%i mW)"
-                       %{ p.display_dbm, p.display_mw })
-       end
-
-       s:taboption("advanced", Flag, "diversity", translate("Diversity")).rmempty = false
-
-       if not nsantenna then
-               ant1 = s:taboption("advanced", ListValue, "txantenna", translate("Transmitter Antenna"))
-               ant1.widget = "radio"
-               ant1.orientation = "horizontal"
-               ant1:depends("diversity", "")
-               ant1:value("0", translate("auto"))
-               ant1:value("1", translate("Antenna 1"))
-               ant1:value("2", translate("Antenna 2"))
-
-               ant2 = s:taboption("advanced", ListValue, "rxantenna", translate("Receiver Antenna"))
-               ant2.widget = "radio"
-               ant2.orientation = "horizontal"
-               ant2:depends("diversity", "")
-               ant2:value("0", translate("auto"))
-               ant2:value("1", translate("Antenna 1"))
-               ant2:value("2", translate("Antenna 2"))
-
-       else -- NanoFoo
-               local ant = s:taboption("advanced", ListValue, "antenna", translate("Transmitter Antenna"))
-               ant:value("auto")
-               ant:value("vertical")
-               ant:value("horizontal")
-               ant:value("external")
-       end
-
-       s:taboption("advanced", Value, "distance", translate("Distance Optimization"),
-               translate("Distance to farthest network member in meters."))
-       s:taboption("advanced", Value, "regdomain", translate("Regulatory Domain"))
-       s:taboption("advanced", Value, "country", translate("Country Code"))
-       s:taboption("advanced", Flag, "outdoor", translate("Outdoor Channels"))
-
-       --s:option(Flag, "nosbeacon", translate("Disable HW-Beacon timer"))
-end
-
-
-
 ------------------- Broadcom Device ------------------
 
 if hwtype == "broadcom" then
@@ -519,102 +461,13 @@ if hwtype == "mac80211" then
        wmm:depends({mode="ap-wds"})
        wmm.default = wmm.enabled
        
-       ifname = s:taboption("advanced", Value, "ifname", translate("Interface name"), translate("Override default interface name"))
-       ifname.optional = true
-end
-
-
-
--------------------- Madwifi Interface ----------------------
-
-if hwtype == "atheros" then
-       mode:value("ahdemo", translate("Pseudo Ad-Hoc (ahdemo)"))
-       mode:value("monitor", translate("Monitor"))
-       mode:value("ap-wds", "%s (%s)" % {translate("Access Point"), translate("WDS")})
-       mode:value("sta-wds", "%s (%s)" % {translate("Client"), translate("WDS")})
-       mode:value("wds", translate("Static WDS"))
-
-       function mode.write(self, section, value)
-               if value == "ap-wds" then
-                       ListValue.write(self, section, "ap")
-                       m.uci:set("wireless", section, "wds", 1)
-               elseif value == "sta-wds" then
-                       ListValue.write(self, section, "sta")
-                       m.uci:set("wireless", section, "wds", 1)
-               else
-                       ListValue.write(self, section, value)
-                       m.uci:delete("wireless", section, "wds")
-               end
-       end
-
-       function mode.cfgvalue(self, section)
-               local mode = ListValue.cfgvalue(self, section)
-               local wds  = m.uci:get("wireless", section, "wds") == "1"
-
-               if mode == "ap" and wds then
-                       return "ap-wds"
-               elseif mode == "sta" and wds then
-                       return "sta-wds"
-               else
-                       return mode
-               end
-       end
-
-       bssid:depends({mode="adhoc"})
-       bssid:depends({mode="ahdemo"})
-       bssid:depends({mode="wds"})
-
-       wdssep = s:taboption("advanced", Flag, "wdssep", translate("Separate WDS"))
-       wdssep:depends({mode="ap-wds"})
-
-       s:taboption("advanced", Flag, "doth", "802.11h")
-       hidden = s:taboption("general", Flag, "hidden", translate("Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"))
-       hidden:depends({mode="ap"})
-       hidden:depends({mode="adhoc"})
-       hidden:depends({mode="ap-wds"})
-       hidden:depends({mode="sta-wds"})
-       isolate = s:taboption("advanced", Flag, "isolate", translate("Separate Clients"),
+       isolate = s:taboption("advanced", Flag, "isolate", translate("Isolate Clients"),
         translate("Prevents client-to-client communication"))
        isolate:depends({mode="ap"})
-       s:taboption("advanced", Flag, "bgscan", translate("Background Scan"))
-
-       mp = s:taboption("macfilter", ListValue, "macpolicy", translate("MAC-Address Filter"))
-       mp:value("", translate("disable"))
-       mp:value("allow", translate("Allow listed only"))
-       mp:value("deny", translate("Allow all except listed"))
-
-       ml = s:taboption("macfilter", DynamicList, "maclist", translate("MAC-List"))
-       ml.datatype = "macaddr"
-       ml:depends({macpolicy="allow"})
-       ml:depends({macpolicy="deny"})
-       nt.mac_hints(function(mac, name) ml:value(mac, "%s (%s)" %{ mac, name }) end)
+       isolate:depends({mode="ap-wds"})
 
-       s:taboption("advanced", Value, "rate", translate("Transmission Rate"))
-       s:taboption("advanced", Value, "mcast_rate", translate("Multicast Rate"))
-       s:taboption("advanced", Value, "frag", translate("Fragmentation Threshold"))
-       s:taboption("advanced", Value, "rts", translate("RTS/CTS Threshold"))
-       s:taboption("advanced", Value, "minrate", translate("Minimum Rate"))
-       s:taboption("advanced", Value, "maxrate", translate("Maximum Rate"))
-       s:taboption("advanced", Flag, "compression", translate("Compression"))
-
-       s:taboption("advanced", Flag, "bursting", translate("Frame Bursting"))
-       s:taboption("advanced", Flag, "turbo", translate("Turbo Mode"))
-       s:taboption("advanced", Flag, "ff", translate("Fast Frames"))
-
-       s:taboption("advanced", Flag, "wmm", translate("WMM Mode"))
-       s:taboption("advanced", Flag, "xr", translate("XR Support"))
-       s:taboption("advanced", Flag, "ar", translate("AR Support"))
-
-       local swm = s:taboption("advanced", Flag, "sw_merge", translate("Disable HW-Beacon timer"))
-       swm:depends({mode="adhoc"})
-
-       local nos = s:taboption("advanced", Flag, "nosbeacon", translate("Disable HW-Beacon timer"))
-       nos:depends({mode="sta"})
-       nos:depends({mode="sta-wds"})
-
-       local probereq = s:taboption("advanced", Flag, "probereq", translate("Do not send probe responses"))
-       probereq.enabled  = "0"
-       probereq.disabled = "1"
+       ifname = s:taboption("advanced", Value, "ifname", translate("Interface name"), translate("Override default interface name"))
+       ifname.optional = true
 end
 
 
@@ -738,7 +591,7 @@ encr:value("none", "No Encryption")
 encr:value("wep-open",   translate("WEP Open System"), {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}, {mode="ahdemo"}, {mode="wds"})
 encr:value("wep-shared", translate("WEP Shared Key"),  {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}, {mode="ahdemo"}, {mode="wds"})
 
-if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
+if hwtype == "mac80211" or hwtype == "prism2" then
        local supplicant = fs.access("/usr/sbin/wpa_supplicant")
        local hostapd = fs.access("/usr/sbin/hostapd")
 
@@ -899,10 +752,10 @@ for slot=1,4 do
 end
 
 
-if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
+if hwtype == "mac80211" or hwtype == "prism2" then
 
-       -- Probe EAP support as a proxy for determining if 802.11r support is present
-       local has_ap_eap  = (os.execute("hostapd -veap >/dev/null 2>/dev/null") == 0)
+       -- Probe 802.11r support (and EAP support as a proxy for Openwrt)
+       local has_80211r = (os.execute("hostapd -v11r 2>/dev/null || hostapd -veap 2>/dev/null") == 0)
 
        ieee80211r = s:taboption("encryption", Flag, "ieee80211r",
                translate("802.11r Fast Transition"),
@@ -912,7 +765,7 @@ if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
        ieee80211r:depends({mode="ap", encryption="wpa2"})
        ieee80211r:depends({mode="ap-wds", encryption="wpa"})
        ieee80211r:depends({mode="ap-wds", encryption="wpa2"})
-       if has_ap_eap then
+       if has_80211r then
                ieee80211r:depends({mode="ap", encryption="psk"})
                ieee80211r:depends({mode="ap", encryption="psk2"})
                ieee80211r:depends({mode="ap", encryption="psk-mixed"})
@@ -1125,16 +978,16 @@ end
 
 -- ieee802.11w options
 if hwtype == "mac80211" then
-   local has_ap_eap  = (os.execute("hostapd -veap >/dev/null 2>/dev/null") == 0)
-   if has_ap_eap then
+   local has_80211w = (os.execute("hostapd -v11w 2>/dev/null || hostapd -veap 2>/dev/null") == 0)
+   if has_80211w then
        ieee80211w = s:taboption("encryption", ListValue, "ieee80211w",
                translate("802.11w Management Frame Protection"),
                translate("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)"))
-       ieee80211w.default = "0"
+       ieee80211w.default = ""
        ieee80211w.rmempty = true
-       ieee80211w:value("0", translate("Disabled (default)"))
+       ieee80211w:value("", translate("Disabled (default)"))
        ieee80211w:value("1", translate("Optional"))
        ieee80211w:value("2", translate("Required"))
        ieee80211w:depends({mode="ap", encryption="wpa2"})
@@ -1164,7 +1017,7 @@ if hwtype == "mac80211" then
    end
 end
 
-if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
+if hwtype == "mac80211" or hwtype == "prism2" then
        local wpasupplicant = fs.access("/usr/sbin/wpa_supplicant")
        local hostcli = fs.access("/usr/sbin/hostapd_cli")
        if hostcli and wpasupplicant then
index ea92eb9..016a619 100644 (file)
@@ -5,7 +5,10 @@
 local fs = require "nixio.fs"
 local cronfile = "/etc/crontabs/root" 
 
-f = SimpleForm("crontab", translate("Scheduled Tasks"), translate("This is the system crontab in which scheduled tasks can be defined."))
+f = SimpleForm("crontab", translate("Scheduled Tasks"),
+       translate("This is the system crontab in which scheduled tasks can be defined.") ..
+       translate("<br/>Note: you need to manually restart the cron service if the " ..
+               "crontab file was empty before editing."))
 
 t = f:field(TextValue, "crons")
 t.rmempty = true
index 9c351d3..4465095 100644 (file)
 
                        return name
 
-               -- madwifi
-               elseif name == "ath" or name == "wifi" then
-                       return translatef("Atheros 802.11%s Wireless Controller", bands)
-
                -- ralink
                elseif name == "ra" then
                        return translatef("RaLink 802.11%s Wireless Controller", bands)
index 206f9ef..d29a894 100644 (file)
                local wan = ntm:get_wannet()
                local wan6 = ntm:get_wan6net()
 
-               local conn_count = tonumber((
-                       luci.sys.exec("wc -l /proc/net/nf_conntrack") or
-                       luci.sys.exec("wc -l /proc/net/ip_conntrack") or
-                       ""):match("%d+")) or 0
+               local conn_count = tonumber(
+                       fs.readfile("/proc/sys/net/netfilter/nf_conntrack_count")) or 0
 
                local conn_max = tonumber((
                        luci.sys.exec("sysctl net.nf_conntrack_max") or
index 19952cd..ec929f1 100644 (file)
@@ -156,18 +156,6 @@ end
 
 local hwtype = m:get(wifidevs[1], "type")
 
-if hwtype == "atheros" then
-       mode = s:option(ListValue, "hwmode", translate("Mode"))
-       mode.override_values = true
-       mode:value("", "auto")
-       mode:value("11b", "802.11b")
-       mode:value("11g", "802.11g")
-       mode:value("11a", "802.11a")
-       mode:value("11bg", "802.11b+g")
-       mode.rmempty = true
-end
-
-
 ch = s:option(Value, "channel", translate("Channel"))
 for i=1, 14 do
        ch:value(i, i .. " (2.4 GHz)")
@@ -224,7 +212,7 @@ encr.override_values = true
 encr:value("none", "No Encryption")
 encr:value("wep", "WEP")
 
-if hwtype == "atheros" or hwtype == "mac80211" then
+if hwtype == "mac80211" then
        local supplicant = fs.access("/usr/sbin/wpa_supplicant")
        local hostapd    = fs.access("/usr/sbin/hostapd")
 
@@ -288,7 +276,7 @@ port:depends({mode="ap", encryption="wpa2"})
 port.rmempty = true
 
 
-if hwtype == "atheros" or hwtype == "mac80211" then
+if hwtype == "mac80211" then
        nasid = s:option(Value, "nasid", translate("NAS ID"))
        nasid:depends({mode="ap", encryption="wpa"})
        nasid:depends({mode="ap", encryption="wpa2"})
@@ -339,7 +327,7 @@ if hwtype == "atheros" or hwtype == "mac80211" then
 end
 
 
-if hwtype == "atheros" or hwtype == "broadcom" then
+if hwtype == "broadcom" then
        iso = s:option(Flag, "isolate", translate("AP-Isolation"), translate("Prevents Client to Client communication"))
        iso.rmempty = true
        iso:depends("mode", "ap")
@@ -349,7 +337,7 @@ if hwtype == "atheros" or hwtype == "broadcom" then
        hide:depends("mode", "ap")
 end
 
-if hwtype == "mac80211" or hwtype == "atheros" then
+if hwtype == "mac80211" then
        bssid:depends({mode="adhoc"})
 end
 
diff --git a/protocols/luci-proto-ncm/Makefile b/protocols/luci-proto-ncm/Makefile
new file mode 100644 (file)
index 0000000..5fd9c9a
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Support for NCM
+LUCI_DEPENDS:=+comgt-ncm
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua b/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua
new file mode 100644 (file)
index 0000000..917c88c
--- /dev/null
@@ -0,0 +1,157 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2015 Cezary Jackiewicz <cezary.jackiewicz@gmail.com>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+]]--
+
+local map, section, net = ...
+
+local device, apn, service, pincode, username, password, dialnumber
+local ipv6, maxwait, defaultroute, metric, peerdns, dns,
+      keepalive_failure, keepalive_interval, demand
+
+
+device = section:taboption("general", Value, "device", translate("Modem device"))
+device.rmempty = false
+
+local device_suggestions = nixio.fs.glob("/dev/cdc-wdm*")
+       or nixio.fs.glob("/dev/ttyUSB*")
+
+if device_suggestions then
+       local node
+       for node in device_suggestions do
+               device:value(node)
+       end
+end
+
+
+mode = section:taboption("general", Value, "mode", translate("Service Type"))
+mode.default = "auto"
+mode:value("preferlte", translate("Prefer LTE"))
+mode:value("preferumts", translate("Prefer UMTS"))
+mode:value("lte", "LTE")
+mode:value("umts", "UMTS/GPRS")
+mode:value("gsm", translate("GPRS only"))
+mode:value("auto", translate("auto"))
+
+
+apn = section:taboption("general", Value, "apn", translate("APN"))
+
+
+pincode = section:taboption("general", Value, "pincode", translate("PIN"))
+
+
+username = section:taboption("general", Value, "username", translate("PAP/CHAP username"))
+
+
+password = section:taboption("general", Value, "password", translate("PAP/CHAP password"))
+password.password = true
+
+dialnumber = section:taboption("general", Value, "dialnumber", translate("Dial number"))
+dialnumber.placeholder = "*99***1#"
+
+if luci.model.network:has_ipv6() then
+
+       ipv6 = section:taboption("advanced", ListValue, "ipv6")
+       ipv6:value("auto", translate("Automatic"))
+       ipv6:value("0", translate("Disabled"))
+       ipv6:value("1", translate("Manual"))
+       ipv6.default = "auto"
+
+end
+
+
+maxwait = section:taboption("advanced", Value, "maxwait",
+       translate("Modem init timeout"),
+       translate("Maximum amount of seconds to wait for the modem to become ready"))
+
+maxwait.placeholder = "20"
+maxwait.datatype    = "min(1)"
+
+
+defaultroute = section:taboption("advanced", Flag, "defaultroute",
+       translate("Use default gateway"),
+       translate("If unchecked, no default route is configured"))
+
+defaultroute.default = defaultroute.enabled
+
+metric = section:taboption("advanced", Value, "metric",
+       translate("Use gateway metric"))
+
+metric.placeholder = "0"
+metric.datatype    = "uinteger"
+metric:depends("defaultroute", defaultroute.enabled)
+
+
+peerdns = section:taboption("advanced", Flag, "peerdns",
+       translate("Use DNS servers advertised by peer"),
+       translate("If unchecked, the advertised DNS server addresses are ignored"))
+
+peerdns.default = peerdns.enabled
+
+
+dns = section:taboption("advanced", DynamicList, "dns",
+       translate("Use custom DNS servers"))
+
+dns:depends("peerdns", "")
+dns.datatype = "ipaddr"
+dns.cast     = "string"
+
+
+keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure",
+       translate("LCP echo failure threshold"),
+       translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures"))
+
+function keepalive_failure.cfgvalue(self, section)
+       local v = m:get(section, "keepalive")
+       if v and #v > 0 then
+               return tonumber(v:match("^(%d+)[ ,]+%d+") or v)
+       end
+end
+
+function keepalive_failure.write() end
+function keepalive_failure.remove() end
+
+keepalive_failure.placeholder = "0"
+keepalive_failure.datatype    = "uinteger"
+
+
+keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval",
+       translate("LCP echo interval"),
+       translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold"))
+
+function keepalive_interval.cfgvalue(self, section)
+       local v = m:get(section, "keepalive")
+       if v and #v > 0 then
+               return tonumber(v:match("^%d+[ ,]+(%d+)"))
+       end
+end
+
+function keepalive_interval.write(self, section, value)
+       local f = tonumber(keepalive_failure:formvalue(section)) or 0
+       local i = tonumber(value) or 5
+       if i < 1 then i = 1 end
+       if f > 0 then
+               m:set(section, "keepalive", "%d %d" %{ f, i })
+       else
+               m:del(section, "keepalive")
+       end
+end
+
+keepalive_interval.remove      = keepalive_interval.write
+keepalive_interval.placeholder = "5"
+keepalive_interval.datatype    = "min(1)"
+
+
+demand = section:taboption("advanced", Value, "demand",
+       translate("Inactivity timeout"),
+       translate("Close inactive connection after the given amount of seconds, use 0 to persist connection"))
+
+demand.placeholder = "0"
+demand.datatype    = "uinteger"
diff --git a/protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua b/protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua
new file mode 100644 (file)
index 0000000..6c5b34e
--- /dev/null
@@ -0,0 +1,61 @@
+--[[
+LuCI - Network model - NCM protocol extension
+
+Copyright 2015 Cezary Jackiewicz <cezary.jackiewicz@gmail.com>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+]]--
+
+local netmod = luci.model.network
+
+local proto = netmod:register_protocol("ncm")
+local interface = luci.model.network.interface
+
+function proto.get_i18n(self)
+       return luci.i18n.translate("NCM")
+end
+
+function proto.opkg_package(self)
+       return "comgt-ncm"
+end
+
+function proto.is_installed(self)
+       return nixio.fs.access("/lib/netifd/proto/ncm.sh")
+end
+
+function proto.is_floating(self)
+       return true
+end
+
+function proto.is_virtual(self)
+       return true
+end
+
+function proto.get_interface(self)
+       local _ifname=netmod.protocol.ifname(self)
+       if not _ifname then
+               _ifname = "wan"
+       end
+       return interface(_ifname, self)
+end
+
+function proto.get_interfaces(self)
+       return nil
+end
+
+function proto.contains_interface(self, ifc)
+       return (netmod:ifnameof(ifc) == self:ifname())
+end
+
+netmod:register_pattern_virtual("^ncm-%%w")
index 9c77e67..0800e27 100644 (file)
@@ -10,9 +10,6 @@ LUCI_TITLE:=Support for VPNC VPN
 LUCI_DEPENDS:=+vpnc
 LUCI_PKGARCH:=all
 
-PKG_NAME:=luci-proto-vpnc
-PKG_RELEASE=1
-PKG_VERSION:=1.0.0
 PKG_MAINTAINER:=Daniel Dickinson <openwrt@daniel.thecshore.com>
 PKG_LICENSE:=Apache-2.0
 
@@ -20,4 +17,4 @@ LUA_TARGET:=source
 
 include ../../luci.mk
 
-# call BuildPackage - OpenWrt buildroot signature
\ No newline at end of file
+# call BuildPackage - OpenWrt buildroot signature
index ed94a55..0dc70cf 100644 (file)
@@ -8,6 +8,7 @@ include $(TOPDIR)/rules.mk
 
 LUCI_TITLE:=Support for WireGuard VPN
 LUCI_DEPENDS:=+kmod-wireguard +wireguard-tools
+LUCI_PKGARCH:=all
 
 PKG_MAINTAINER:=Dan Luedtke <mail@danrl.com>
 
index d950081..11ef10b 100644 (file)
@@ -19,7 +19,7 @@ private_key = section:taboption(
   translate("Required. Base64-encoded private key for this interface.")
 )
 private_key.password = true
-private_key.datatype = "and(base64,rangelength(44, 44))"
+private_key.datatype = "and(base64,rangelength(44,44))"
 private_key.optional = false
 
 
@@ -81,10 +81,22 @@ preshared_key = section:taboption(
             "cryptography for post-quantum resistance.")
 )
 preshared_key.password = true
-preshared_key.datatype = "and(base64,rangelength(44, 44))"
+preshared_key.datatype = "and(base64,rangelength(44,44))"
 preshared_key.optional = true
 
 
+fwmark = section:taboption(
+  "advanced",
+  Value,
+  "fwmark",
+  translate("Firewall Mark"),
+  translate("Optional. 32-bit mark for outgoing encrypted packets. " ..
+            "Enter value in hex, starting with <code>0x</code>.")
+)
+fwmark.datatype = "hex(4)"
+fwmark.optional = true
+
+
 -- peers -----------------------------------------------------------------------
 
 peers = map:section(
@@ -105,7 +117,7 @@ public_key = peers:option(
   translate("Public Key"),
   translate("Required. Base64-encoded public key of peer.")
 )
-public_key.datatype = "and(base64,rangelength(44, 44))"
+public_key.datatype = "and(base64,rangelength(44,44))"
 public_key.optional = false
 
 
@@ -155,5 +167,5 @@ persistent_keepalive = peers:option(
   translate("Optional. Seconds between keep alive messages. " ..
             "Default is 0 (disabled). Recommended value if " ..
             "this device is behind a NAT is 25."))
-persistent_keepalive.datatype = "range(0, 65535)"
+persistent_keepalive.datatype = "range(0,65535)"
 persistent_keepalive.placeholder = "0"
index 6f09bfc..78b98e0 100644 (file)
                        </div>
                <%- end -%>
 
+               <noscript>
+                       <div class="alert-message warning">
+                               <strong><%:JavaScript required!%></strong><br />
+                               <%:You must enable JavaScript in your browser or LuCI will not work properly.%>
+                       </div>
+               </noscript>
+
                <div id="maincontent" class="container">
                        <% if category then render_tabmenu(category, cattree) end %>
index 20a41be..b453409 100644 (file)
@@ -216,8 +216,8 @@ if tree.nodes[category] and tree.nodes[category].ucidata then
 <% if category ~= "freifunk" and category ~= "splash" then %>
 <noscript>
        <div class="errorbox">
-               <strong><%:Java Script required!%></strong><br />
-               <%:You must enable Java Script in your browser or LuCI will not work properly.%>
+               <strong><%:JavaScript required!%></strong><br />
+               <%:You must enable JavaScript in your browser or LuCI will not work properly.%>
        </div>
 </noscript>
 <% end %>
old mode 100755 (executable)
new mode 100644 (file)
index 8419ade..d84fd27
@@ -2,14 +2,14 @@
        Material is a clean HTML5 theme for LuCI. It is based on luci-theme-bootstrap and MUI
 
        luci-theme-material
-       Copyright 2015 Lutty Yang <lutty@wcan.in>
+       Copyright 2015-2017 Lutty Yang <lutty@wcan.in>
 
        Have a bug? Please create an issue here on GitHub!
        https://github.com/LuttyYang/luci-theme-material/issues
 
        luci-theme-bootstrap:
        Copyright 2008 Steven Barth <steven@midlink.org>
-       Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+       Copyright 2008-2016 Jo-Philipp Wich <jow@openwrt.org>
        Copyright 2012 David Menting <david@nut-bolt.nl>
 
        MUI:
@@ -19,7 +19,6 @@
 -%>
 
 <%
-       local ver = require "luci.version"
        local sys  = require "luci.sys"
        local util = require "luci.util"
        local http = require "luci.http"
                end
        end
 
-    -- send as HTML5
+       -- send as HTML5
        http.prepare_content("text/html")
 
        local function nodeurl(prefix, name, query)
-               local url = controller .. prefix .. name .. "/"
+               local u = url(prefix, name)
                if query then
-                       url = url .. http.build_querystring(query)
+                       u = u .. http.build_querystring(query)
                end
-               return pcdata(url)
+               return pcdata(u)
        end
 
-       local function subtree(prefix, node, level)
+       local function render_tabmenu(prefix, node, level)
                if not level then
                        level = 1
                end
 
                local childs = disp.node_childs(node)
                if #childs > 0 then
-
-            if level > 2 then
-%>
-       <ul class="tabs">
-               <%
-            end
+                       if level > 2 then
+                               write('<ul class="tabs">')
+                       end
 
                        local selected_node
                        local selected_name
                                        selected_node = nnode
                                        selected_name = v
                                end
-                if level > 2 then
-               %>
-                       <li class="tabmenu-item-<%=v%><%- if nnode._menu_selected or (node.leaf and v == leaf) then %> active<% end %>">
-                           <a href="<%=nodeurl(prefix, v, nnode.query)%>"><%=striptags(translate(nnode.title))%></a>
-                       </li>
-               <%      end
+
+                               if level > 2 then
+                                       write('<li class="tabmenu-item-%s %s"><a href="%s">%s</a></li>' %{
+                                               v, (nnode._menu_selected or (node.leaf and v == leaf)) and 'active' or '',
+                                               nodeurl(prefix, v, nnode.query),
+                                               striptags(translate(nnode.title))
+                                       })
+                               end
                        end
 
-            if level > 2 then
-               %>
-       </ul>
-<%          end
+                       if level > 2 then
+                               write('</ul>')
+                       end
 
                        if selected_node then
-                               subtree(prefix .. selected_name .. "/", selected_node, level + 1)
+                               render_tabmenu(prefix .. "/" .. selected_name, selected_node, level + 1)
+                       end
+               end
+       end
+
+       local function render_submenu(prefix, node)
+               local childs = disp.node_childs(node)
+               if #childs > 0 then
+                       write('<ul class="slide-menu">')
+
+                       for i, r in ipairs(childs) do
+                               local nnode = node.nodes[r]
+                               local title = pcdata(striptags(translate(nnode.title)))
+
+                               write('<li><a data-title="%s" href="%s">%s</a></li>' %{
+                                       title,
+                                       nodeurl(prefix, r, nnode.query),
+                                       title
+                               })
+                       end
+
+                       write('</ul>')
+               end
+       end
+
+       local function render_topmenu()
+               local childs = disp.node_childs(cattree)
+               if #childs > 0 then
+                       write('<ul class="nav">')
+
+                       for i, r in ipairs(childs) do
+                               local nnode = cattree.nodes[r]
+                               local grandchildren = disp.node_childs(nnode)
+
+                               if #grandchildren > 0 then
+                                       local title = pcdata(striptags(translate(nnode.title)))
+
+                                       write('<li class="slide"><a class="menu" data-title="%s" href="#">%s</a>' %{
+                                               title,
+                                               title
+                                       })
+
+                                       render_submenu(category .. "/" .. r, nnode)
+                                       write('</li>')
+                               else
+                                       local title = pcdata(striptags(translate(nnode.title)))
+
+                                       write('<li><a data-title="%s" href="%s">%s</a></li>' %{
+                                               title,
+                                               nodeurl(category, r, nnode.query),
+                                               title
+                                       })
+                               end
+                       end
+
+                       write('</ul>')
+               end
+       end
+
+       local function render_changes()
+               -- calculate the number of unsaved changes
+               if tree.nodes[category] and tree.nodes[category].ucidata then
+                       local ucichanges = 0
+
+                       for i, j in pairs(require("luci.model.uci").cursor():changes()) do
+                               for k, l in pairs(j) do
+                                       for m, n in pairs(l) do
+                                               ucichanges = ucichanges + 1;
+                                       end
+                               end
+                       end
+
+                       if ucichanges > 0 then
+                               write('<a class="label notice" href="%s?redir=%s">%s: %d</a>' %{
+                                       url(category, 'uci/changes'),
+                                       http.urlencode(http.formvalue('redir') or REQUEST_URI),
+                                       translate('Unsaved Changes'),
+                                       ucichanges
+                               })
                        end
                end
        end
         <link rel="stylesheet" href="<%=resource%>/<%=node.css%>">
     <% end -%>
     <% if css then %>
-        <style title="text/css">
-            <%-= css %>
-        </style>
+        <style title="text/css"><%= css %></style>
     <% end -%>
     <script src="<%=resource%>/xhr.js"></script>
 </head>
-
 <body class="lang_<%=luci.i18n.context.lang%> <%- if node then %><%= striptags( node.title ) %><%- end %> <% if luci.dispatcher.context.authsession then %>logged-in<% end %>">
-
 <header>
        <div class="container">
                <span class="showSide"></span>
                <a class="brand" href="#"><%=boardinfo.hostname or "?"%></a>
                <div class="pull-right">
-               <%
-               -- calculate the number of unsaved changes
-               if tree.nodes[category] and tree.nodes[category].ucidata then
-                       local ucichanges = 0
-                       for i, j in pairs(require("luci.model.uci").cursor():changes()) do
-                               for k, l in pairs(j) do
-                                       for m, n in pairs(l) do
-                                               ucichanges = ucichanges + 1;
-                                       end
-                               end
-                       end
-                       %>
-                       <% if ucichanges > 0 then %>
-                       <a class="label notice" href="<%=controller%>/<%=category%>/uci/changes?redir=<%=http.urlencode(http.formvalue("redir") or REQUEST_URI)%>"><span class="mobile-hide"><%:Unsaved Changes%>: </span><%=ucichanges%></a>
-                       <% end %>
+                       <% render_changes() %>
                        <span id="xhr_poll_status" style="display:none" onclick="XHR.running() ? XHR.halt() : XHR.run()">
-                               <span class="label success" id="xhr_poll_status_on"><span class="mobile-hide"><%:Auto Refresh%> </span><%:on%></span>
-                               <span class="label" id="xhr_poll_status_off" style="display:none"><span class="mobile-hide"><%:Auto Refresh%> </span><%:off%></span>
+                               <span class="label success" id="xhr_poll_status_on"><span class="mobile-hide"><%:Auto Refresh%></span> <%:on%></span>
+                               <span class="label" id="xhr_poll_status_off" style="display:none"><span class="mobile-hide"><%:Auto Refresh%></span> <%:off%></span>
                        </span>
-               <% end %>
                </div>
        </div>
 </header>
-
- <div class="main">
+<div class="main">
         <div style="" class="loading"><span><div class="loading-img"></div>Loading...</span></div>
         <div class="main-left">
-                <ul class="nav">
-                        <%-
-                        local function submenu(prefix, node)
-                        local childs = disp.node_childs(node)
-                        if #childs > 0 then
-                        %>
-                        <ul class="slide-menu">
-                                <%-
-                                for i, r in ipairs(childs) do
-                                local nnode = node.nodes[r]
-                                local href  = controller .. prefix .. r ..
-                                (nnode.query and http.build_querystring(nnode.query) or "")
-                                %>
-                                <li><a data-title="<%=pcdata(striptags(nnode.title))%>" href="<%=pcdata(href)%>"><%=pcdata(striptags(translate(nnode.title)))%></a></li>
-                                <%-
-                                end
-                                %>
-                        </ul>
-                        <%-
-                        end
-                        end
-
-                        childs = disp.node_childs(cattree)
-
-                        if #childs > 0 then
-                        for i, r in ipairs(childs) do
-                        local nnode = cattree.nodes[r]
-                        local href  = controller .. "/" .. category .. "/" .. r ..
-                        (nnode.query and http.build_querystring(k.query) or "")
-                        local grandchildren = disp.node_childs(nnode)
-
-                        if #grandchildren > 0 then
-                        %>
-                        <li class="slide">
-                                <a class="menu" data-title="<%=pcdata(striptags(nnode.title))%>" href="#"><%=pcdata(striptags(translate(nnode.title)))%></a>
-                                <%- submenu(category .. "/" .. r .. "/", nnode) %>
-                        </li>
-                        <%          else %>
-                        <li>
-                                <a data-title="<%=pcdata(striptags(nnode.title))%>" href="<%=pcdata(href)%>"><%=pcdata(striptags(translate(nnode.title)))%></a>
-                        </li>
-                        <%
-                        end
-                        end
-                        end
-                        %>
-                </ul>
+               <% render_topmenu() %>
         </div>
-        <div class="main-right">
+       <div class="main-right">
                 <div class="darkMask"></div>
                 <div id="maincontent">
                         <div class="container">
                                                 <a href="<%=pcdata(luci.dispatcher.build_url("admin/system/admin"))%>"><%:Go to password configuration...%></a>
                                         </div>
                                 <%- end -%>
-                                <% if category then subtree("/" .. category .. "/", cattree) end %>
-
+                                <% if category then render_tabmenu(category, cattree) end %>
+
+                               <noscript>
+                                       <div class="alert-message warning">
+                                               <strong><%:JavaScript required!%></strong><br />
+                                               <%:You must enable JavaScript in your browser or LuCI will not work properly.%>
+                                       </div>
+                               </noscript>                     
index 505e64b..ae348f3 100644 (file)
        <div id="maincontent">
                <noscript>
                        <div class="errorbox">
-                               <strong><%:Java Script required!%></strong><br />
-                               <%:You must enable Java Script in your browser or LuCI will not work properly.%>
+                               <strong><%:JavaScript required!%></strong><br />
+                               <%:You must enable JavaScript in your browser or LuCI will not work properly.%>
                        </div>
                </noscript>