Merge pull request #2193 from rosysong/freespace
authorJo-Philipp Wich <jo@mein.io>
Fri, 2 Nov 2018 13:04:31 +0000 (14:04 +0100)
committerGitHub <noreply@github.com>
Fri, 2 Nov 2018 13:04:31 +0000 (14:04 +0100)
luci-mod-system: add id for software/freespace div

355 files changed:
applications/luci-app-adblock/po/zh-cn/adblock.po
applications/luci-app-adblock/po/zh-tw/adblock.po
applications/luci-app-aria2/luasrc/view/aria2/overview_status.htm
applications/luci-app-aria2/po/zh-cn/aria2.po
applications/luci-app-aria2/po/zh-tw/aria2.po
applications/luci-app-asterisk/luasrc/asterisk.lua
applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-app.lua
applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm
applications/luci-app-asterisk/po/ca/asterisk.po
applications/luci-app-asterisk/po/en/asterisk.po
applications/luci-app-asterisk/po/es/asterisk.po
applications/luci-app-asterisk/po/fr/asterisk.po
applications/luci-app-asterisk/po/ms/asterisk.po
applications/luci-app-asterisk/po/pt-br/asterisk.po
applications/luci-app-asterisk/po/ru/asterisk.po
applications/luci-app-asterisk/po/vi/asterisk.po
applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js
applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua
applications/luci-app-ddns/luasrc/view/ddns/overview_status.htm
applications/luci-app-ddns/luasrc/view/ddns/system_status.htm
applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua
applications/luci-app-freifunk-policyrouting/luasrc/model/cbi/freifunk/policyrouting.lua
applications/luci-app-freifunk-policyrouting/po/ca/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/cs/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/de/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/el/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/en/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/es/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/fr/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/he/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/hu/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/it/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/ja/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/ms/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/no/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/pl/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/pt-br/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/pt/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/ro/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/ru/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/sk/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/sv/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/templates/freifunk-policyrouting.pot
applications/luci-app-freifunk-policyrouting/po/tr/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/uk/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/vi/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/zh-cn/freifunk-policyrouting.po
applications/luci-app-freifunk-policyrouting/po/zh-tw/freifunk-policyrouting.po
applications/luci-app-mjpg-streamer/luasrc/model/cbi/mjpg-streamer.lua
applications/luci-app-mjpg-streamer/po/ja/mjpg-streamer.po
applications/luci-app-mjpg-streamer/po/pt-br/mjpg-streamer.po
applications/luci-app-mjpg-streamer/po/ru/mjpg-streamer.po
applications/luci-app-mjpg-streamer/po/templates/mjpg-streamer.pot
applications/luci-app-mjpg-streamer/po/zh-cn/mjpg-streamer.po
applications/luci-app-mjpg-streamer/po/zh-tw/mjpg-streamer.po
applications/luci-app-mwan3/luasrc/controller/mwan3.lua
applications/luci-app-mwan3/po/de/mwan3.po
applications/luci-app-mwan3/po/ja/mwan3.po
applications/luci-app-mwan3/po/ru/mwan3.po
applications/luci-app-mwan3/po/templates/mwan3.pot
applications/luci-app-mwan3/po/zh-cn/mwan3.po
applications/luci-app-mwan3/po/zh-tw/mwan3.po
applications/luci-app-nlbwmon/luasrc/controller/nlbw.lua
applications/luci-app-olsr-services/luasrc/controller/services.lua
applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm
applications/luci-app-olsr-viz/htdocs/luci-static/resources/olsr-viz.js
applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrd.lua
applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrd6.lua
applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdiface.lua
applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdiface6.lua
applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdplugins.lua
applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdplugins6.lua
applications/luci-app-olsr/luasrc/view/status-olsr/common_js.htm
applications/luci-app-olsr/luasrc/view/status-olsr/hna.htm
applications/luci-app-olsr/luasrc/view/status-olsr/smartgw.htm
applications/luci-app-olsr/po/ca/olsr.po
applications/luci-app-olsr/po/cs/olsr.po
applications/luci-app-olsr/po/de/olsr.po
applications/luci-app-olsr/po/el/olsr.po
applications/luci-app-olsr/po/en/olsr.po
applications/luci-app-olsr/po/es/olsr.po
applications/luci-app-olsr/po/fr/olsr.po
applications/luci-app-olsr/po/he/olsr.po
applications/luci-app-olsr/po/hu/olsr.po
applications/luci-app-olsr/po/it/olsr.po
applications/luci-app-olsr/po/ja/olsr.po
applications/luci-app-olsr/po/ms/olsr.po
applications/luci-app-olsr/po/no/olsr.po
applications/luci-app-olsr/po/pl/olsr.po
applications/luci-app-olsr/po/pt-br/olsr.po
applications/luci-app-olsr/po/pt/olsr.po
applications/luci-app-olsr/po/ro/olsr.po
applications/luci-app-olsr/po/ru/olsr.po
applications/luci-app-olsr/po/sk/olsr.po
applications/luci-app-olsr/po/sv/olsr.po
applications/luci-app-olsr/po/templates/olsr.pot
applications/luci-app-olsr/po/tr/olsr.po
applications/luci-app-olsr/po/uk/olsr.po
applications/luci-app-olsr/po/vi/olsr.po
applications/luci-app-olsr/po/zh-cn/olsr.po
applications/luci-app-olsr/po/zh-tw/olsr.po
applications/luci-app-openvpn/luasrc/controller/openvpn.lua
applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua
applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua [new file with mode: 0644]
applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua
applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm
applications/luci-app-openvpn/luasrc/view/openvpn/ovpn_css.htm [new file with mode: 0644]
applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm
applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua
applications/luci-app-samba4/po/zh-cn/samba4.po
applications/luci-app-samba4/po/zh-tw/samba4.po
applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua
applications/luci-app-shadowsocks-libev/po/templates/shadowsocks-libev.pot [new file with mode: 0644]
applications/luci-app-siitwizard/luasrc/controller/siitwizard.lua
applications/luci-app-siitwizard/luasrc/model/cbi/siitwizard.lua
applications/luci-app-simple-adblock/po/zh-cn/simple-adblock.po
applications/luci-app-simple-adblock/po/zh-tw/simple-adblock.po
applications/luci-app-snmpd/luasrc/model/cbi/snmpd.lua
applications/luci-app-splash/Makefile
applications/luci-app-splash/luasrc/model/cbi/splash/splash.lua
applications/luci-app-splash/luasrc/view/splash/splash.htm
applications/luci-app-splash/po/ca/splash.po
applications/luci-app-splash/po/cs/splash.po
applications/luci-app-splash/po/de/splash.po
applications/luci-app-splash/po/el/splash.po
applications/luci-app-splash/po/en/splash.po
applications/luci-app-splash/po/es/splash.po
applications/luci-app-splash/po/fr/splash.po
applications/luci-app-splash/po/he/splash.po
applications/luci-app-splash/po/hu/splash.po
applications/luci-app-splash/po/it/splash.po
applications/luci-app-splash/po/ja/splash.po
applications/luci-app-splash/po/ms/splash.po
applications/luci-app-splash/po/no/splash.po
applications/luci-app-splash/po/pl/splash.po
applications/luci-app-splash/po/pt-br/splash.po
applications/luci-app-splash/po/pt/splash.po
applications/luci-app-splash/po/ro/splash.po
applications/luci-app-splash/po/ru/splash.po
applications/luci-app-splash/po/sk/splash.po
applications/luci-app-splash/po/sv/splash.po
applications/luci-app-splash/po/templates/splash.pot
applications/luci-app-splash/po/tr/splash.po
applications/luci-app-splash/po/uk/splash.po
applications/luci-app-splash/po/vi/splash.po
applications/luci-app-splash/po/zh-cn/splash.po
applications/luci-app-splash/po/zh-tw/splash.po
applications/luci-app-splash/root/etc/init.d/luci_splash
applications/luci-app-statistics/Makefile
applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/curl.lua [new file with mode: 0644]
applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/disk.lua
applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/dns.lua
applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/exec.lua
applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/iptables.lua
applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/netlink.lua
applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/processes.lua
applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/tcpconns.lua
applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/curl.lua [new file with mode: 0644]
applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/interface.lua
applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/netlink.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/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-tinyproxy/luasrc/model/cbi/tinyproxy.lua
applications/luci-app-tinyproxy/po/ca/tinyproxy.po
applications/luci-app-tinyproxy/po/cs/tinyproxy.po
applications/luci-app-tinyproxy/po/de/tinyproxy.po
applications/luci-app-tinyproxy/po/el/tinyproxy.po
applications/luci-app-tinyproxy/po/en/tinyproxy.po
applications/luci-app-tinyproxy/po/es/tinyproxy.po
applications/luci-app-tinyproxy/po/fr/tinyproxy.po
applications/luci-app-tinyproxy/po/he/tinyproxy.po
applications/luci-app-tinyproxy/po/hu/tinyproxy.po
applications/luci-app-tinyproxy/po/it/tinyproxy.po
applications/luci-app-tinyproxy/po/ja/tinyproxy.po
applications/luci-app-tinyproxy/po/ms/tinyproxy.po
applications/luci-app-tinyproxy/po/no/tinyproxy.po
applications/luci-app-tinyproxy/po/pl/tinyproxy.po
applications/luci-app-tinyproxy/po/pt-br/tinyproxy.po
applications/luci-app-tinyproxy/po/pt/tinyproxy.po
applications/luci-app-tinyproxy/po/ro/tinyproxy.po
applications/luci-app-tinyproxy/po/ru/tinyproxy.po
applications/luci-app-tinyproxy/po/sk/tinyproxy.po
applications/luci-app-tinyproxy/po/sv/tinyproxy.po
applications/luci-app-tinyproxy/po/templates/tinyproxy.pot
applications/luci-app-tinyproxy/po/tr/tinyproxy.po
applications/luci-app-tinyproxy/po/uk/tinyproxy.po
applications/luci-app-tinyproxy/po/vi/tinyproxy.po
applications/luci-app-tinyproxy/po/zh-cn/tinyproxy.po
applications/luci-app-tinyproxy/po/zh-tw/tinyproxy.po
applications/luci-app-transmission/po/zh-cn/transmission.po
applications/luci-app-transmission/po/zh-tw/transmission.po
applications/luci-app-travelmate/luasrc/controller/travelmate.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
applications/luci-app-travelmate/luasrc/view/travelmate/ap_qr.htm [deleted file]
applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm
applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm
applications/luci-app-travelmate/po/ja/travelmate.po
applications/luci-app-travelmate/po/pt-br/travelmate.po
applications/luci-app-travelmate/po/ru/travelmate.po
applications/luci-app-travelmate/po/templates/travelmate.pot
applications/luci-app-travelmate/po/zh-cn/travelmate.po
applications/luci-app-travelmate/po/zh-tw/travelmate.po
applications/luci-app-unbound/luasrc/controller/unbound.lua
applications/luci-app-unbound/luasrc/model/cbi/unbound/zones.lua
applications/luci-app-unbound/po/templates/unbound.pot [new file with mode: 0644]
applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po
applications/luci-app-wifischedule/README.md
applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua
applications/luci-app-wifischedule/po/it/wifischedule.po
applications/luci-app-wifischedule/po/ja/wifischedule.po
applications/luci-app-wifischedule/po/pt-br/wifischedule.po
applications/luci-app-wifischedule/po/ru/wifischedule.po
applications/luci-app-wifischedule/po/sv/wifischedule.po
applications/luci-app-wifischedule/po/templates/wifischedule.pot
applications/luci-app-wifischedule/po/zh-cn/wifischedule.po
applications/luci-app-wifischedule/po/zh-tw/wifischedule.po
applications/luci-app-wireguard/luasrc/controller/wireguard.lua
applications/luci-app-wireguard/luasrc/view/wireguard.htm
applications/luci-app-wireguard/po/ja/wireguard.po
applications/luci-app-wireguard/po/pt-br/wireguard.po
applications/luci-app-wireguard/po/ru/wireguard.po
applications/luci-app-wireguard/po/sv/wireguard.po
applications/luci-app-wireguard/po/templates/wireguard.pot
applications/luci-app-wireguard/po/zh-cn/wireguard.po
applications/luci-app-wireguard/po/zh-tw/wireguard.po
build/check-controllers.sh
build/i18n-scan.pl
build/luadoc/luadoc/config.lua
contrib/package/community-profiles/files/etc/config/profile_berlin
contrib/package/community-profiles/files/etc/config/profile_cottbus
contrib/package/community-profiles/files/etc/config/profile_fuerstenwalde [new file with mode: 0644]
contrib/package/community-profiles/files/etc/config/profile_potsdam
contrib/package/community-profiles/files/etc/config/profile_tulumlibre
contrib/package/freifunk-common/files/usr/bin/neigh.sh
contrib/package/freifunk-common/files/usr/sbin/ff_olsr_watchdog
contrib/package/freifunk-mapupdate/files/usr/sbin/ff_mapupdate.sh
contrib/package/freifunk-watchdog/src/watchdog.c
contrib/package/freifunk-watchdog/src/watchdog.h
contrib/package/meshwizard/files/usr/bin/meshwizard/functions.sh
contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_olsrd.sh
documentation/CBI.md
documentation/Templates.md
libs/luci-lib-httpprotoutils/luasrc/http/mime.luadoc
libs/luci-lib-ip/src/ip.luadoc
libs/luci-lib-iptparser/Makefile [new file with mode: 0644]
libs/luci-lib-iptparser/luasrc/sys/iptparser.lua [new file with mode: 0644]
libs/luci-lib-iptparser/luasrc/sys/iptparser.luadoc [new file with mode: 0644]
libs/luci-lib-nixio/docsrc/CHANGELOG.lua
libs/luci-lib-nixio/docsrc/README.lua
libs/luci-lib-nixio/docsrc/nixio.lua
libs/luci-lib-px5g/src/library/bignum.c
libs/luci-lib-px5g/src/library/x509write.c
libs/luci-lib-px5g/src/polarssl/bignum.h
libs/luci-lib-px5g/src/polarssl/x509.h
modules/luci-base/htdocs/luci-static/resources/cbi.js
modules/luci-base/luasrc/dispatcher.luadoc
modules/luci-base/luasrc/http.lua
modules/luci-base/luasrc/http.luadoc
modules/luci-base/luasrc/model/uci.lua
modules/luci-base/luasrc/model/uci.luadoc
modules/luci-base/luasrc/sys.luadoc
modules/luci-base/luasrc/sys/iptparser.lua [deleted file]
modules/luci-base/luasrc/sys/iptparser.luadoc [deleted file]
modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua
modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua
modules/luci-base/luasrc/template.lua
modules/luci-base/luasrc/util.lua
modules/luci-base/luasrc/util.luadoc
modules/luci-base/luasrc/view/cbi/apply_widget.htm
modules/luci-base/luasrc/view/cbi/dropdown.htm
modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm
modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm
modules/luci-base/luasrc/view/cbi/network_ifacelist.htm
modules/luci-base/luasrc/view/cbi/network_netlist.htm
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-base/root/www/index.html
modules/luci-base/src/template_utils.c
modules/luci-mod-freifunk/htdocs/luci-static/resources/osm.js
modules/luci-mod-freifunk/luasrc/view/freifunk-map/frame.htm
modules/luci-mod-freifunk/luasrc/view/freifunk-map/map.htm
modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua
modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua
modules/luci-mod-status/luasrc/controller/admin/status.lua
modules/luci-mod-status/luasrc/view/admin_status/iptables.htm
modules/luci-mod-status/luasrc/view/admin_status/wireless.htm
modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab.lua
modules/luci-mod-system/luasrc/model/cbi/admin_system/system.lua
modules/luci-mod-system/luasrc/view/admin_system/packages.htm
protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua
protocols/luci-proto-hnet/Makefile [new file with mode: 0644]
protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua [new file with mode: 0644]
protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua [new file with mode: 0644]
protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_hnet.lua [deleted file]
protocols/luci-proto-ipv6/luasrc/model/network/proto_hnet.lua [deleted file]
protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppossh.lua [deleted file]
protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua
protocols/luci-proto-pppossh/Makefile [new file with mode: 0644]
protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua [new file with mode: 0644]
protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua [new file with mode: 0644]
themes/luci-theme-material/htdocs/luci-static/material/cascade.css
themes/luci-theme-material/htdocs/luci-static/material/custom.css
themes/luci-theme-material/htdocs/luci-static/material/js/script.js

index 0b0d2d2fe43a15296332bc9dc08b2631c611c5fd..83d247ed068989f94750bf8d0c79cf00c682a57c 100644 (file)
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: 2018-08-07 20:41+0800\n"
+"PO-Revision-Date: 2018-10-01 10:02+0800\n"
 "Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
 "Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_CN\n"
@@ -59,6 +59,8 @@ msgid ""
 "Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
 "domains except those listed in the whitelist file."
 msgstr ""
+"构建一个额外的“Jail”列表(/tmp/adb_list.jail),除白名单文件中列出的域名外,"
+"阻止访问其他所有的域名。"
 
 msgid ""
 "Choose 'none' to disable automatic startups, 'timed' to use a classic "
@@ -168,11 +170,11 @@ msgstr "最后运行"
 msgid ""
 "List of available network interfaces. Usually the startup will be triggered "
 "by the 'wan' interface."
-msgstr ""
+msgstr "可用网络接口列表。通常启动将由“wan”接口触发。"
 
 msgid ""
 "List of supported DNS backends with their default list export directory."
-msgstr ""
+msgstr "支持的 DNS 后端列表及其默认列表导出目录。"
 
 msgid "List of supported and fully pre-configured download utilities."
 msgstr "支持和完全预配置的下载工具列表。"
@@ -181,7 +183,7 @@ msgid "Loading"
 msgstr "加载中"
 
 msgid "Low Priority Service"
-msgstr ""
+msgstr "低优先级服务"
 
 msgid "Max. Download Queue"
 msgstr "最大下载队列"
@@ -223,17 +225,21 @@ msgid ""
 "Raise the minimum email notification count, to get emails if the overall "
 "count is less or equal to the given limit (default 0),"
 msgstr ""
+"如果总数小于或等于给定限制(默认为 0),请提高最小电子邮件通知数,以获取电子"
+"邮件。"
 
 msgid ""
 "Redirect all DNS queries from 'lan' zone to the local resolver, apply to udp "
 "and tcp protocol on ports 53, 853 and 5353."
 msgstr ""
+"将所有 DNS 查询从“lan”区域重定向到本地解析器,适用于端口53、853和5353上的 "
+"udp 和 tcp 协议。"
 
 msgid "Refresh"
-msgstr ""
+msgstr "刷新"
 
 msgid "Refresh Blocklist Sources"
-msgstr ""
+msgstr "刷新拦截列表源"
 
 msgid "Resume"
 msgstr "恢复"
@@ -250,17 +256,17 @@ msgstr "保存"
 msgid ""
 "Send notification emails in case of a processing error or if domain count is "
 "&le; 0."
-msgstr ""
+msgstr "如果发生错误或域计数 &le; 0,发送通知电子邮件。"
 
 msgid ""
 "Set the nice level to 'low priority' and the adblock background processing "
 "will take less resources from the system."
-msgstr ""
+msgstr "设置 nice 级别为“低优先级”,adblock 后台进程将从系统中获取更少的资源。"
 
 msgid ""
 "Size of the download queue to handle downloads &amp; list processing in "
 "parallel (default '4')."
-msgstr ""
+msgstr "处理下载队列的大小及并行处理列表(默认“4”)。"
 
 msgid "Startup Trigger"
 msgstr "启动触发器"
@@ -283,18 +289,18 @@ msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
 msgstr "文件过大,无法使用 LuCI 的在线编辑(&ge; 100 KB)。"
 
 msgid "The syslog output, pre-filtered for adblock related messages only."
-msgstr ""
+msgstr "系统日志输出,仅针对 adblock 相关的消息进行了预筛选。"
 
 msgid "This change requires a manual service stop/re-start to take effect."
-msgstr ""
+msgstr "此更改需要手动停止/重启服务才能生效。"
 
 msgid ""
 "This form allows you to modify the content of the adblock blacklist (%s)."
-msgstr ""
+msgstr "此表单允许您修改 adblock 黑名单(%s)的内容。"
 
 msgid ""
 "This form allows you to modify the content of the adblock whitelist (%s)."
-msgstr ""
+msgstr "此表单允许您修改 adblock 白名单(%s)的内容。"
 
 msgid ""
 "This form allows you to modify the content of the main adblock configuration "
@@ -340,19 +346,9 @@ msgid ""
 "value to 150000."
 msgstr "例如:要接收每个 adblock 更新的电子邮件通知时将此值设置为 150000。"
 
-#~ msgid "-------"
-#~ msgstr "-------"
-
 #~ msgid "Adblock Logfile"
 #~ msgstr "Adblock 日志文件"
 
-#~ msgid ""
-#~ "Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to "
-#~ "all domains except those listed in the whitelist file.<br />"
-#~ msgstr ""
-#~ "构建一个额外的“Jail”列表(/tmp/adb_list.jail),除白名单文件中列出的域名"
-#~ "外,阻止访问其他所有的域名。<br />"
-
 #~ msgid ""
 #~ "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
 #~ "'libustream-ssl' or 'built-in'."
@@ -360,54 +356,9 @@ msgstr "例如:要接收每个 adblock 更新的电子邮件通知时将此值
 #~ "对受 SSL 保护的拦截列表源,您需要一个合适的 SSL 库,如“libustream-"
 #~ "ssl”或“built-in”。"
 
-#~ msgid ""
-#~ "List of available network interfaces. Usually the startup will be "
-#~ "triggered by the 'wan' interface.<br />"
-#~ msgstr "可用网络接口列表。通常启动将由“wan”接口触发。<br />"
-
-#~ msgid ""
-#~ "List of supported DNS backends with their default list export directory."
-#~ "<br />"
-#~ msgstr "支持的 DNS 后端列表及其默认列表导出目录。<br />"
-
 #~ msgid "Name"
 #~ msgstr "名称"
 
-#~ msgid ""
-#~ "Raise the minimum email notification count, to get emails if the overall "
-#~ "count is less or equal to the given limit (default 0),<br />"
-#~ msgstr ""
-#~ "如果总数小于或等于给定限制(默认为 0),请提高最小电子邮件通知数,以获取电"
-#~ "子邮件。"
-
-#~ msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
-#~ msgstr "将所有 DNS 查询从“lan”区域重定向到本地解析器。"
-
-#~ msgid ""
-#~ "Send notification emails in case of a processing error or if domain count "
-#~ "is &le; 0.<br />"
-#~ msgstr "如果发生错误或域计数 &le; 0,发送通知电子邮件。<br />"
-
-#~ msgid ""
-#~ "Size of the download queue to handle downloads &amp; list processing in "
-#~ "parallel (default '4').<br />"
-#~ msgstr "处理下载队列的大小及并行处理列表(默认“4”)。<br />"
-
-#~ 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 shows the syslog output, pre-filtered for adblock related "
-#~ "messages only."
-#~ msgstr "此表单显示系统日志输出,仅针对 adblock 相关的消息进行了预筛选。"
-
 #~ msgid "disabled"
 #~ msgstr "已禁用"
 
index f9830a5098e102669175917ade420e1d1eac0523..e01759b5e7be85e6c7ec38c3b7f525f1b3880350 100644 (file)
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: 2018-08-07 20:41+0800\n"
+"PO-Revision-Date: 2018-10-01 10:02+0800\n"
 "Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
 "Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_TW\n"
@@ -22,8 +22,8 @@ msgid ""
 "<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
 "than 64 MB free RAM, please only select a few of them!"
 msgstr ""
-"<b>注意:</b>為防止在小於 64M 空閒記憶體的裝置上出現記憶體不足異常,請只選擇"
-"其中的幾個!"
+"<b>注意:</b>為防止在小於 64M 空閒記憶體的裝置上出現記憶體不足異常,請只選擇其中"
+"的幾個!"
 
 msgid "Adblock"
 msgstr "Adblock"
@@ -59,6 +59,8 @@ msgid ""
 "Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
 "domains except those listed in the whitelist file."
 msgstr ""
+"構建一個額外的“Jail”列表(/tmp/adb_list.jail),除白名單檔案中列出的域名外,"
+"阻止訪問其他所有的域名。"
 
 msgid ""
 "Choose 'none' to disable automatic startups, 'timed' to use a classic "
@@ -123,8 +125,7 @@ msgstr "啟用 Blocklist 備份"
 msgid ""
 "Enable memory intense overall sort / duplicate removal on low memory devices "
 "(&lt; 64 MB free RAM)"
-msgstr ""
-"在低記憶體裝置上啟用積極的記憶體整體排序/重複移除(&lt; 64 MB 空閒記憶體)"
+msgstr "在低記憶體裝置上啟用積極的記憶體整體排序/重複移除(&lt; 64 MB 空閒記憶體)"
 
 msgid "Enable verbose debug logging in case of any processing error."
 msgstr "在出現任何處理錯誤的情況下啟用詳細除錯日誌記錄。"
@@ -169,11 +170,11 @@ msgstr "最後執行"
 msgid ""
 "List of available network interfaces. Usually the startup will be triggered "
 "by the 'wan' interface."
-msgstr ""
+msgstr "可用網路介面列表。通常啟動將由“wan”介面觸發。"
 
 msgid ""
 "List of supported DNS backends with their default list export directory."
-msgstr ""
+msgstr "支援的 DNS 後端列表及其預設列表匯出目錄。"
 
 msgid "List of supported and fully pre-configured download utilities."
 msgstr "支援和完全預配置的下載工具列表。"
@@ -182,7 +183,7 @@ msgid "Loading"
 msgstr "載入中"
 
 msgid "Low Priority Service"
-msgstr ""
+msgstr "低優先順序服務"
 
 msgid "Max. Download Queue"
 msgstr "最大下載佇列"
@@ -204,8 +205,8 @@ msgid ""
 "Please add only one domain per line. Comments introduced with '#' are "
 "allowed - ip addresses, wildcards and regex are not."
 msgstr ""
-"請每行只新增一個域。允許使用“#”開頭的註釋 - ip 位址、萬用字元和正則表示式都不"
-"許。"
+"請每行只新增一個域。允許使用“#”開頭的註釋 - ip 地址、萬用字元和正則表示式都不允"
+"許。"
 
 msgid "Please edit this file directly in a terminal session."
 msgstr "請在終端會話中直接編輯此檔案。"
@@ -224,17 +225,21 @@ msgid ""
 "Raise the minimum email notification count, to get emails if the overall "
 "count is less or equal to the given limit (default 0),"
 msgstr ""
+"如果總數小於或等於給定限制(預設為 0),請提高最小電子郵件通知數,以獲取電子"
+"郵件。"
 
 msgid ""
 "Redirect all DNS queries from 'lan' zone to the local resolver, apply to udp "
 "and tcp protocol on ports 53, 853 and 5353."
 msgstr ""
+"將所有 DNS 查詢從“lan”區域重定向到本地解析器,適用於埠53、853和5353上的 "
+"udp 和 tcp 協議。"
 
 msgid "Refresh"
-msgstr ""
+msgstr "重新整理"
 
 msgid "Refresh Blocklist Sources"
-msgstr ""
+msgstr "重新整理攔截列表源"
 
 msgid "Resume"
 msgstr "恢復"
@@ -251,17 +256,17 @@ msgstr "儲存"
 msgid ""
 "Send notification emails in case of a processing error or if domain count is "
 "&le; 0."
-msgstr ""
+msgstr "如果發生錯誤或域計數 &le; 0,傳送通知電子郵件。"
 
 msgid ""
 "Set the nice level to 'low priority' and the adblock background processing "
 "will take less resources from the system."
-msgstr ""
+msgstr "設定 nice 級別為“低優先順序”,adblock 後臺程序將從系統中獲取更少的資源。"
 
 msgid ""
 "Size of the download queue to handle downloads &amp; list processing in "
 "parallel (default '4')."
-msgstr ""
+msgstr "處理下載佇列的大小及並行處理列表(預設“4”)。"
 
 msgid "Startup Trigger"
 msgstr "啟動觸發器"
@@ -284,18 +289,18 @@ msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
 msgstr "檔案過大,無法使用 LuCI 的線上編輯(&ge; 100 KB)。"
 
 msgid "The syslog output, pre-filtered for adblock related messages only."
-msgstr ""
+msgstr "系統日誌輸出,僅針對 adblock 相關的訊息進行了預篩選。"
 
 msgid "This change requires a manual service stop/re-start to take effect."
-msgstr ""
+msgstr "此更改需要手動停止/重啟服務才能生效。"
 
 msgid ""
 "This form allows you to modify the content of the adblock blacklist (%s)."
-msgstr ""
+msgstr "此表單允許您修改 adblock 黑名單(%s)的內容。"
 
 msgid ""
 "This form allows you to modify the content of the adblock whitelist (%s)."
-msgstr ""
+msgstr "此表單允許您修改 adblock 白名單(%s)的內容。"
 
 msgid ""
 "This form allows you to modify the content of the main adblock configuration "
@@ -341,19 +346,9 @@ msgid ""
 "value to 150000."
 msgstr "例如:要接收每個 adblock 更新的電子郵件通知時將此值設定為 150000。"
 
-#~ msgid "-------"
-#~ msgstr "-------"
-
 #~ msgid "Adblock Logfile"
 #~ msgstr "Adblock 日誌檔案"
 
-#~ msgid ""
-#~ "Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to "
-#~ "all domains except those listed in the whitelist file.<br />"
-#~ msgstr ""
-#~ "構建一個額外的“Jail”列表(/tmp/adb_list.jail),除白名單檔案中列出的域名"
-#~ "外,阻止訪問其他所有的域名。<br />"
-
 #~ msgid ""
 #~ "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
 #~ "'libustream-ssl' or 'built-in'."
@@ -361,54 +356,9 @@ msgstr "例如:要接收每個 adblock 更新的電子郵件通知時將此值
 #~ "對受 SSL 保護的攔截列表源,您需要一個合適的 SSL 庫,如“libustream-"
 #~ "ssl”或“built-in”。"
 
-#~ msgid ""
-#~ "List of available network interfaces. Usually the startup will be "
-#~ "triggered by the 'wan' interface.<br />"
-#~ msgstr "可用網路介面列表。通常啟動將由“wan”介面觸發。<br />"
-
-#~ msgid ""
-#~ "List of supported DNS backends with their default list export directory."
-#~ "<br />"
-#~ msgstr "支援的 DNS 後端列表及其預設列表匯出目錄。<br />"
-
 #~ msgid "Name"
 #~ msgstr "名稱"
 
-#~ msgid ""
-#~ "Raise the minimum email notification count, to get emails if the overall "
-#~ "count is less or equal to the given limit (default 0),<br />"
-#~ msgstr ""
-#~ "如果總數小於或等於給定限制(預設為 0),請提高最小電子郵件通知數,以獲取電"
-#~ "子郵件。"
-
-#~ msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
-#~ msgstr "將所有 DNS 查詢從“lan”區域重定向到本地解析器。"
-
-#~ msgid ""
-#~ "Send notification emails in case of a processing error or if domain count "
-#~ "is &le; 0.<br />"
-#~ msgstr "如果發生錯誤或域計數 &le; 0,傳送通知電子郵件。<br />"
-
-#~ msgid ""
-#~ "Size of the download queue to handle downloads &amp; list processing in "
-#~ "parallel (default '4').<br />"
-#~ msgstr "處理下載佇列的大小及並行處理列表(預設“4”)。<br />"
-
-#~ 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 shows the syslog output, pre-filtered for adblock related "
-#~ "messages only."
-#~ msgstr "此表單顯示系統日誌輸出,僅針對 adblock 相關的訊息進行了預篩選。"
-
 #~ msgid "disabled"
 #~ msgstr "已禁用"
 
index b14cca228f77a518e0921f5f2f5097305e9ff4b5..66db6ce5500e4b71e3db6918cf6939af07a4a91e 100644 (file)
@@ -24,7 +24,7 @@ function randomString(len) {
        var $chars = 'abcdefghijklmnopqrstuvwxyz1234567890';
        var maxPos = $chars.length;
        var pwd = '';
-       for (i = 0; i < len; i++) {
+       for (var i = 0; i < len; i++) {
                pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
        }
        return pwd;
@@ -41,6 +41,7 @@ function showRPCURL() {
        var newTextNode = document.getElementById("aria2rpcpath");
        var auth_method = document.getElementById("cbid.aria2.main.rpc_auth_method");
        var auth_port = document.getElementById("cbid.aria2.main.rpc_listen_port");
+       var auth_port_value;
        if (auth_port.value == "") {
                auth_port_value = "6800"
        } else {
index 3acd3c616da49f018a1a54d08ddcff3ba5a1f741..83ccbe84ef5e123fe3a249f01c34418a0b308461 100644 (file)
@@ -8,7 +8,7 @@ msgstr ""
 "Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"PO-Revision-Date: 2018-08-07 17:11+0800\n"
+"PO-Revision-Date: 2018-10-01 10:05+0800\n"
 "X-Generator: Gtranslator 2.91.7\n"
 
 msgid "\"Falloc\" is not available in all cases."
@@ -194,7 +194,7 @@ msgid "Token"
 msgstr "令牌"
 
 msgid "Trunc"
-msgstr ""
+msgstr "Trunc"
 
 msgid "Use WebSocket"
 msgstr "使用 WebSocket"
index 2bd9041b9679e4df7a0a0bfd0c175368543b9c01..4c44bb75dc3b6874ddce38e79ccabbeab97592f9 100644 (file)
@@ -8,7 +8,7 @@ msgstr ""
 "Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"PO-Revision-Date: 2018-08-07 17:11+0800\n"
+"PO-Revision-Date: 2018-10-01 10:05+0800\n"
 "X-Generator: Gtranslator 2.91.7\n"
 
 msgid "\"Falloc\" is not available in all cases."
@@ -194,7 +194,7 @@ msgid "Token"
 msgstr "令牌"
 
 msgid "Trunc"
-msgstr ""
+msgstr "Trunc"
 
 msgid "Use WebSocket"
 msgstr "使用 WebSocket"
index ceb738d112822b0d695e37bbc0a75e5d1355f4e3..da94c556f956487135bfd17df1934868e133dc50 100644 (file)
@@ -35,7 +35,7 @@ function io.exec(command)
        return buffer
 end
 
---- Execute command and invoke given callback for each readed line
+--- Execute command and invoke given callback for each read line
 -- @param command      String containing the command to execute
 -- @param callback     Function to call back for each line
 -- @return                     Always true
@@ -53,7 +53,7 @@ function io.execl(command, callback)
        return true
 end
 
---- Execute command and return an iterator that returns one line per invokation
+--- Execute command and return an iterator that returns one line per invocation
 -- @param command      String containing the command to execute
 -- @return                     Iterator function
 function io.execi(command)
@@ -71,7 +71,7 @@ end
 --- LuCI Asterisk - core status
 core = luci.util.class()
 
---- Retrive version string.
+--- Retrieve version string.
 -- @return     String containing the reported asterisk version
 function core.version(self)
        local version = io.exec("core show version")
@@ -141,7 +141,7 @@ function sip.peers(self)
        return peers
 end
 
---- Get informations of given SIP peer
+--- Get information of given SIP peer
 -- @param peer String containing the name of the SIP peer
 function sip.peer(peer)
        local info = { }
@@ -217,7 +217,7 @@ end
 --- Convert given list to a collection of hyperlinks
 -- @param list Table of tokens
 -- @param url  String pattern or callback function to construct urls (optional)
--- @param sep  String containing the seperator (optional, default is ", ")
+-- @param sep  String containing the separator (optional, default is ", ")
 -- @return             String containing the html fragment
 function tools.hyperlinks(list, url, sep)
        local html
index 72685b011022484266ce40c35c0e29d48d1eb4be..ac64754cb7854bef556696180f4d095fd168b484 100644 (file)
@@ -153,7 +153,7 @@ app_lookupblacklist:value("no", "Do Not Load")
 app_lookupblacklist:value("auto", "Load as Required")
 app_lookupblacklist.rmempty = true
 
-app_lookupcidname = module:option(ListValue, "app_lookupcidname", "Look up CallerID Name from local databas", "")
+app_lookupcidname = module:option(ListValue, "app_lookupcidname", "Look up CallerID Name from local database", "")
 app_lookupcidname:value("yes", "Load")
 app_lookupcidname:value("no", "Do Not Load")
 app_lookupcidname:value("auto", "Load as Required")
index 66a06b20f74825d13753d39a264e9b863ed0bd9f..3cbc5002be4f74ca70d6dbd0b1b97df7dc448741 100644 (file)
                        <div class="cbi-section-create cbi-tblsection-create" style="padding: 3px">
                                <h3>Create a new dialzone</h3>
                                The name is required and must be unique. It may only contain the characters A-Z, a-z, 0-9 and _ .<br />
-                               You can specifiy multiple number matches by separating them with spaces.<br />
+                               You can specify multiple number matches by separating them with spaces.<br />
 
                                <%- if create_error then %>
                                        <br /><span style="color:red">Invalid name given!</span><br />
index aa534432e1d4b04aae498084864634d9faff4003..978c47392d3cdd3c9716349bb305a44e382028b4 100644 (file)
@@ -316,7 +316,7 @@ msgstr ""
 #~ msgid "Look up Caller*ID name/number from black"
 #~ msgstr "Cerca la ID/nom/número de qui truca de negre"
 
-#~ msgid "Look up CallerID Name from local databas"
+#~ msgid "Look up CallerID Name from local database"
 #~ msgstr "Cerca la ID/nom/número de qui truca de la base de dades local"
 
 #~ msgid "Extension Macros"
index fc095087e2fcc5e69797df1a3eb82fcf1b872c0a..c1ac54403cbb6e7cc172c20b450bc0668fadf85b 100644 (file)
@@ -316,8 +316,8 @@ msgstr ""
 #~ msgid "Look up Caller*ID name/number from black"
 #~ msgstr "Look up Caller*ID name/number from black"
 
-#~ msgid "Look up CallerID Name from local databas"
-#~ msgstr "Look up CallerID Name from local databas"
+#~ msgid "Look up CallerID Name from local database"
+#~ msgstr "Look up CallerID Name from local database"
 
 #~ msgid "Extension Macros"
 #~ msgstr "Extension Macros"
index f42ddb4fd5cd75ec97902e7dd6d86fcffc413be3..2b2b8d2a696bb7fe8953e28b73b64bd8787f8440 100644 (file)
@@ -314,7 +314,7 @@ msgstr ""
 #~ msgid "Look up Caller*ID name/number from black"
 #~ msgstr "Buscar la identidad del llamante nombre/número en la lista negra"
 
-#~ msgid "Look up CallerID Name from local databas"
+#~ msgid "Look up CallerID Name from local database"
 #~ msgstr ""
 #~ "Buscar el nombre de identidad del llamante en las bases de datos locales"
 
index 63d085a1af86fbd7171b5403545df48c0ad6f27a..275253cd10b6da5087295a9f6dfc9cbf974f0020 100644 (file)
@@ -269,7 +269,7 @@ msgstr ""
 #~ msgid "Image Transmission Application"
 #~ msgstr "Application d'envoi d'image"
 
-#~ msgid "Look up CallerID Name from local databas"
+#~ msgid "Look up CallerID Name from local database"
 #~ msgstr "Rechercher le nom de l'appelant dans la base locale"
 
 #~ msgid "Extension Macros"
index d4b6baac90fb60b76dea67990db6ef1e572ebf86..86639026fe7c07b5253d39ed7b3225976fa42f9e 100644 (file)
@@ -325,7 +325,7 @@ msgstr ""
 #~ msgid "Look up Caller*ID name/number from black"
 #~ msgstr "Mencari nama / nombor Pemangil dari hitam"
 
-#~ msgid "Look up CallerID Name from local databas"
+#~ msgid "Look up CallerID Name from local database"
 #~ msgstr "Mencari Nama Pemangil dari database tempatan"
 
 #~ msgid "Extension Macros"
index 00a0bb6431b902b04a66f6d0e6a82b7dcf40dd55..21cb88ed33ced3048cbc24c80be6a97bcdb05d03 100644 (file)
@@ -324,7 +324,7 @@ msgstr ""
 #~ msgid "Look up Caller*ID name/number from black"
 #~ msgstr "Buscar o Identificador de chamadas/nome/número do preto"
 
-#~ msgid "Look up CallerID Name from local databas"
+#~ msgid "Look up CallerID Name from local database"
 #~ msgstr "Buscar o Identificador de chamadas/nome/número do banco de dados"
 
 #~ msgid "Extension Macros"
index d27ba33d7cf774d9e3bbe08c998d769efe931db6..171808710ea56a838835d49c89504c503adc14b4 100644 (file)
@@ -238,7 +238,7 @@ msgstr ""
 #~ msgid "Look up Caller*ID name/number from black"
 #~ msgstr "Искать имя CallerID в \"черном\" списке"
 
-#~ msgid "Look up CallerID Name from local databas"
+#~ msgid "Look up CallerID Name from local database"
 #~ msgstr "Искать имя CallerID в локальной базе"
 
 #~ msgid "Extension Macros"
index 133f864abb24c6ac0776633cedf0ced942ff9d1a..bebf1abcf0f5200769fcbb74f44eecf6f25730ac 100644 (file)
@@ -316,7 +316,7 @@ msgstr ""
 #~ msgid "Look up Caller*ID name/number from black"
 #~ msgstr "Tra cứu tên/số của người gọi"
 
-#~ msgid "Look up CallerID Name from local databas"
+#~ msgid "Look up CallerID Name from local database"
 #~ msgstr "Tra cứu tên người gọi từ cơ sở dữ liệu địa phương"
 
 #~ msgid "Extension Macros"
index 60f586ded4c163e1a4223bd89b723e3ac12b2838..4b8cc2bd04b128351ba4a1b2103a92ee4c8d3c17 100644 (file)
@@ -33,7 +33,7 @@ function edit_server() {
        $("#server").className = '';
        $("#server").onclick = null;
 
-       button_set = document.createElement("input");
+       var button_set = document.createElement("input");
        button_set.type = "button";
        button_set.value = "Save";
        button_set.name = "button_set";
@@ -111,7 +111,7 @@ function ubus_call(command, argument, params, variable) {
        request_data.id = ubus_counter;
        request_data.method = "call";
        request_data.params = [ data.ubus_rpc_session, command, argument, params ]
-       request_json = JSON.stringify(request_data)
+       var request_json = JSON.stringify(request_data)
        ubus_counter++;
        var request = new XMLHttpRequest();
        request.open("POST", ubus_url, true);
@@ -128,7 +128,7 @@ function ubus_call(command, argument, params, variable) {
                                        }
                                }
                        } else {
-                               error_box("<b>Ubus call faild:</b><br />Request: " + request_json + "<br />Response: " + JSON.stringify(response))
+                               error_box("<b>Ubus call failed:</b><br />Request: " + request_json + "<br />Response: " + JSON.stringify(response))
                        }
                        ubus_closed++;
                }
@@ -170,7 +170,7 @@ function upgrade_check() {
 function upgrade_check_callback(request_text) {
        var request_json = JSON.parse(request_text)
 
-       // create simple output to tell user whats going to be upgrade (release/packages)
+       // create simple output to tell user what's going to be upgrade (release/packages)
        var info_output = ""
        if(request_json.version != undefined) {
                info_output += "<h3>New firmware release available</h3>"
@@ -179,7 +179,7 @@ function upgrade_check_callback(request_text) {
        }
        if(request_json.upgrades != undefined) {
                info_output += "<h3>Package upgrades available</h3>"
-               for (upgrade in request_json.upgrades) {
+               for (var upgrade in request_json.upgrades) {
                        info_output += "<b>" + upgrade + "</b>: " + request_json.upgrades[upgrade][1] + " to " + request_json.upgrades[upgrade][0] + "<br />"
                }
        }
@@ -201,7 +201,7 @@ function upgrade_request() {
        // Request the image
        // Needed values
        // version/release
-       // board_name or model (server tries to find the corrent profile)
+       // board_name or model (server tries to find the correct profile)
        // packages
        // The rest is added by server_request()
        $("#upgrade_button").disabled = true;
@@ -231,7 +231,7 @@ function upgrade_request_callback(request) {
        var filename_split = data.sysupgrade_url.split("/")
        data.filename = filename_split[filename_split.length - 1]
 
-       info_output = 'Firmware created: <a href="' + data.sysupgrade_url + '"><b>' + data.filename + '</b></a>'
+       var info_output = 'Firmware created: <a href="' + data.sysupgrade_url + '"><b>' + data.filename + '</b></a>'
        if(data.advanced_mode == 1) {
                info_output += '<br /><a target="_blank" href="' + data.sysupgrade_url + '.log">Build log</a>'
        }
@@ -320,6 +320,7 @@ function download_image() {
 }
 
 function server_request(request_dict, path, callback) {
+       var request_json;
        request_dict.distro = data.release.distribution;
        request_dict.target = data.release.target.split("\/")[0];
        request_dict.subtarget = data.release.target.split("\/")[1];
@@ -332,7 +333,7 @@ function server_request(request_dict, path, callback) {
                show("#server_div");
        }
        request.addEventListener('load', function(event) {
-               request_text = request.responseText;
+               var request_text = request.responseText;
                if (request.status === 200) {
                        callback(request_text)
 
@@ -378,7 +379,7 @@ function server_request(request_dict, path, callback) {
                } else if (request.status === 500) {
                        request_json = JSON.parse(request_text)
 
-                       error_box_content = "<b>Internal server error</b><br />"
+                       var error_box_content = "<b>Internal server error</b><br />"
                        error_box_content += request_json.error
                        if(request_json.log != undefined) {
                                data.log_url = request_json.log
@@ -386,7 +387,7 @@ function server_request(request_dict, path, callback) {
                        error_box(error_box_content)
 
                } else if (request.status === 501) {
-                       error_box("No sysupgrade file produced, may not supported by modell.")
+                       error_box("No sysupgrade file produced, may not supported by model.")
 
                } else if (request.status === 502) {
                        // python part offline
index eb2159076ef230c1c34545e191f7a9dec8f5f848..ecabec4e22e6962ad20368196af8ad6cdf4457eb 100644 (file)
@@ -90,7 +90,7 @@ end
 -- will use dynamic_dns_lucihelper to check if
 -- local IP can be read
 local function _verify_ip_source()
-       -- section is globally defined here be calling agrument (see above)
+       -- section is globally defined here be calling argument (see above)
        local _arg
 
        local _ipv6   = usev6:formvalue(section)
@@ -173,7 +173,7 @@ end
 
 -- function to verify if option is valid
 local function _option_validate(self, value, optional)
-       -- section is globally defined here be calling agrument (see above)
+       -- section is globally defined here be calling argument (see above)
        local fusev6 = usev6:formvalue(section) or "0"
        local fsvc4  = svc4:formvalue(section) or "-"
        local fsvc6  = svc6:formvalue(section) or "-"
@@ -200,7 +200,7 @@ local function _option_validate(self, value, optional)
        if (#urlsh == 0) then return "" end
 
        used = _option_used(self.option, urlsh)
-       -- on error or not used return empty sting
+       -- on error or not used return empty string
        if used < 1 then return "" end
        -- needed but no data then return error
        if not value or (#value == 0) then
index b409ed0728a83f9db01914ca8c2ee058eecb8501..f3f45e0d04a5460396d84a4965103cead3071232 100644 (file)
@@ -14,7 +14,7 @@
        // called by XHR.poll and onclick_startstop
        function _data2elements(data) {
                // Service sections
-               for( i = 1; i < data.length; i++ )
+               for( var i = 1; i < data.length; i++ )
                {
                        var section = data[i].section   // Section to handle
                        var cbx = document.getElementById("cbid.ddns." + section + ".enabled");         // Enabled
                                if (x.responseText == "_uncommitted_") {
                                        // we need a trick to display Ampersand "&" in stead of "&#38;" or "&amp;"
                                        // after translation
-                                       txt="<%:Please [Save & Apply] your changes first%>";
+                                       var txt="<%:Please [Save & Apply] your changes first%>";
                                        alert( txt.replace(new RegExp("<%:&%>", "g"), "&") );
                                } else {
                                        // should have data because status changed
index 615b6b4336a24d31e0dae611448bd4150bc1a31f..41799cd4da4cc018286a9ab6edf129d429cf78dc 100644 (file)
@@ -20,7 +20,7 @@
                                                        '<a class="cbi-button cbi-button-action important" type="button" href="' + data[0].url_up + '"><%:enable here%></a></strong>'
                                                        ]);
                                } else {
-                                       for( j = 1; j < data.length; j++ )
+                                       for(var j = 1; j < data.length; j++ )
                                        {
                                                
                                                rows.push([
@@ -57,4 +57,4 @@
                </div>
        </div>
 </fieldset>
-<!-- ++ END ++ Dynamic DNS ++ system_status.htm ++ -->
\ No newline at end of file
+<!-- ++ END ++ Dynamic DNS ++ system_status.htm ++ -->
index 4470a0d2f0fab385a22bc652ef249ea5f2c4a0a4..51b2d20a4f4fb124d53556ef17ec3e78527bb17a 100644 (file)
@@ -136,8 +136,8 @@ no_crc_check.default = false
 phase_enhance=s:option(Flag, "phase_enhance", translate("Enable phase enhancement"))
 phase_enhance.default = false
 
-agressive=s:option(Flag, "agressive", translate("More CPU for more messages"))
-agressive.default = false
+aggressive=s:option(Flag, "aggressive", translate("More CPU for more messages"))
+aggressive.default = false
 
 mlat=s:option(Flag, "mlat", translate("Display raw messages in Beast ascii mode"))
 mlat.default = false
index b09c237ca22336800aa5374b58c4156d50cd95ed..b5630548249f13cf3ed6495d68b8180d926a3dba 100644 (file)
@@ -4,7 +4,7 @@
 local uci = require "luci.model.uci".cursor()
 
 m = Map("freifunk-policyrouting", translate("Policy Routing"), translate("These pages can be used to setup policy routing for certain firewall zones. "..
-       "This is useful if you need to use your own internet connection for yourself but you don't want to share it with others (thats why it can also be "..
+       "This is useful if you need to use your own internet connection for yourself but you don't want to share it with others (that's why it can also be "..
        "called 'Ego Mode'). Your own traffic is then sent via your internet connection while traffic originating from the mesh will use another gateway in the mesh. "))
 m:chain("network")
 
index c1d96e03eefb4ea163c113202a72c4e48dd37c4f..2f0dbf57da6d31d8e486469a6dd112395ec05191 100644 (file)
@@ -50,7 +50,7 @@ msgstr "Filtració estricta"
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 4ec9f8da82851551fbda0fc82d8f9ac2f4f854c8..a607f6e810297f1956e19a13f3a7b3be7226533a 100644 (file)
@@ -46,7 +46,7 @@ msgstr "Striktní filtrování"
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index bb24f618536c2428def966d066aec7b4e511f883..cb9a094e880454e6c174629c722c7ada472ee5f9 100644 (file)
@@ -55,7 +55,7 @@ msgstr "Strenges Filtern"
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 3c9a17e0d4b13ce546920721320982d1319970b7..6814b17300f37761673a1ecfa2dccb12d2b6f1bb 100644 (file)
@@ -33,7 +33,7 @@ msgstr ""
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 3c9a17e0d4b13ce546920721320982d1319970b7..6814b17300f37761673a1ecfa2dccb12d2b6f1bb 100644 (file)
@@ -33,7 +33,7 @@ msgstr ""
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 8af3458dfe843ea1fabfcc02f8a45b20eb932388..ab3c8bd642dfa3219778e30a04f1504b1bfba091 100644 (file)
@@ -55,7 +55,7 @@ msgstr "Filtrado estricto"
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 3c9a17e0d4b13ce546920721320982d1319970b7..6814b17300f37761673a1ecfa2dccb12d2b6f1bb 100644 (file)
@@ -33,7 +33,7 @@ msgstr ""
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 8d83098d6fccc40428101de6c29d2f47074f768c..976b3b22d508564ab91ba39b509cdae834b3820e 100644 (file)
@@ -44,7 +44,7 @@ msgstr ""
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 8d83098d6fccc40428101de6c29d2f47074f768c..976b3b22d508564ab91ba39b509cdae834b3820e 100644 (file)
@@ -44,7 +44,7 @@ msgstr ""
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 61ac6c0d4b25287e977fbd45773f1894b292da28..dfa3be6b528aac3705889ba46e4adf886f050d55 100644 (file)
@@ -56,7 +56,7 @@ msgstr "Livello massimo di filtraggio"
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 3c9a17e0d4b13ce546920721320982d1319970b7..6814b17300f37761673a1ecfa2dccb12d2b6f1bb 100644 (file)
@@ -33,7 +33,7 @@ msgstr ""
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 3c9a17e0d4b13ce546920721320982d1319970b7..6814b17300f37761673a1ecfa2dccb12d2b6f1bb 100644 (file)
@@ -33,7 +33,7 @@ msgstr ""
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 3c9a17e0d4b13ce546920721320982d1319970b7..6814b17300f37761673a1ecfa2dccb12d2b6f1bb 100644 (file)
@@ -33,7 +33,7 @@ msgstr ""
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index bcb4492a09cd6eb729ead68d7afa5fe9bfc94882..20373030d3e0426cb656786d6e39718d9c577ff6 100644 (file)
@@ -57,7 +57,7 @@ msgstr "Ścisłe filtrowanie"
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 4aac8ca15ac5d8b98d6d7d1727a430909ab679cc..9b61a4e4819123458929ddb9cb0ade5b3451904c 100644 (file)
@@ -56,7 +56,7 @@ msgstr "Filtragem Estrita"
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 41a6b21b7cc7aa5b3a784c1af6eae842a2f8f2a8..2323c9d090fdacdcba2b3bc2b4c3af28e9755b3e 100644 (file)
@@ -50,7 +50,7 @@ msgstr "Filtragem Estrita"
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 3386101bb942324a52efdad3fa6a3391ca886c3d..9d5141328df5966f8a75bb9f8394e05887fc82be 100644 (file)
@@ -47,7 +47,7 @@ msgstr ""
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 7dd2c8a17a778465bb06d25534c06f083cad9285..8af0b98d223da40df8d3ae38cdb5e03e1742b2f3 100644 (file)
@@ -58,7 +58,7 @@ msgstr "Строгая фильтрация"
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index b1a781032402d6fa18ef39fb4fcdb469e7847273..51ad36bc24c7effebbc117de5dc6443e62203233 100644 (file)
@@ -43,7 +43,7 @@ msgstr ""
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 1310afa962d0c311e392dab61b1345227450ffe8..769bda9c2c5fbf2f4b1d5c06e03eb120cb5c577f 100644 (file)
@@ -44,7 +44,7 @@ msgstr ""
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index b4c35c177c33066fd154634881c7a72cd6a60c24..4d393c7507266fdaa3ff02715b967caaa526ab35 100644 (file)
@@ -36,7 +36,7 @@ msgstr ""
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index af1616fa485792eff733efa96db608c52e26e814..d801ce245f7c6bc8caf6a83950b0303960e1b861 100644 (file)
@@ -44,7 +44,7 @@ msgstr ""
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index e4cc687e92408b4f375cb799c7e7904dc7cf8fa1..25eda199dfb164a9de08382a240f9a53429c1180 100644 (file)
@@ -60,7 +60,7 @@ msgstr "Жорстка фільтрація"
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 3c9a17e0d4b13ce546920721320982d1319970b7..6814b17300f37761673a1ecfa2dccb12d2b6f1bb 100644 (file)
@@ -33,7 +33,7 @@ msgstr ""
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index 3e2dd55ff086303e12c92534ce1f09381c50ef4d..2512d03329d295cc3b8ee1770e6a6eb805a9c637 100644 (file)
@@ -53,7 +53,7 @@ msgstr "严格过滤"
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index f5b891a968e4bb8ca20a142abd1e02e9807c7a8b..5be29e8e804f1ec3c201304c54fc96626f3e62de 100644 (file)
@@ -53,7 +53,7 @@ msgstr "嚴格過濾"
 msgid ""
 "These pages can be used to setup policy routing for certain firewall zones. "
 "This is useful if you need to use your own internet connection for yourself "
-"but you don't want to share it with others (thats why it can also be called "
+"but you don't want to share it with others (that's why it can also be called "
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
index d89ab27c2923c2414e5815115adb8bd98dbffc9d..ad77a9022cc89a3f36dd1343cc4f58d66b2b19f0 100644 (file)
@@ -74,7 +74,7 @@ quality = s:taboption(this_tab, Value, "quality", translate("JPEG compression qu
 minimum_size = s:taboption(this_tab, Value, "minimum_size", translate("Drop frames smaller then this limit"),translate("Set the minimum size if the webcam produces small-sized garbage frames. May happen under low light conditions"))
     minimum_size.datatype = "uinteger"
 
-no_dynctrl = s:taboption(this_tab, Flag, "no_dynctrl", translate("Don't initalize dynctrls"), translate("Do not initalize dynctrls of Linux-UVC driver"))
+no_dynctrl = s:taboption(this_tab, Flag, "no_dynctrl", translate("Don't initialize dynctrls"), translate("Do not initialize dynctrls of Linux-UVC driver"))
 
 led = s:taboption(this_tab, ListValue, "led", translate("Led control"))
     led:value("on", translate("On"))
@@ -206,7 +206,7 @@ folder=s:taboption(this_tab, Value, "folder", translate("Folder"), translate("Se
 
 --mjpeg=s:taboption(this_tab, Value, "mjpeg", translate("Mjpeg output"), translate("Check to save the stream to an mjpeg file"))
 
-delay=s:taboption(this_tab, Value, "delay", translate("Interval between saving pictures"), translate("Set the inteval in millisecond"))
+delay=s:taboption(this_tab, Value, "delay", translate("Interval between saving pictures"), translate("Set the interval in millisecond"))
     delay.placeholder="5000"
     delay.datatype = "uinteger"
 
index 7da34446137f68bf101744740fbf88d24ccacd2f..907a792987a5f72ba874095b5528b4a76b607ec3 100644 (file)
@@ -38,10 +38,10 @@ msgstr "実行するコマンド"
 msgid "Device"
 msgstr "デバイス"
 
-msgid "Do not initalize dynctrls of Linux-UVC driver"
+msgid "Do not initialize dynctrls of Linux-UVC driver"
 msgstr "Linux-UVCドライバのdynctrlsを初期化しません。"
 
-msgid "Don't initalize dynctrls"
+msgid "Don't initialize dynctrls"
 msgstr "dynctrlsを初期化しない"
 
 msgid "Drop frames smaller then this limit"
@@ -135,7 +135,7 @@ msgstr "リングバッファー サイズ"
 msgid "Set folder to save pictures"
 msgstr "画像を保存するフォルダーを設定します。"
 
-msgid "Set the inteval in millisecond"
+msgid "Set the interval in millisecond"
 msgstr "間隔をミリ秒で設定します。"
 
 msgid ""
index 28bfa186b06e9f8b40301e3c5f42a7341508588a..d53202109d7f87222f1bfb472d9a6cdca82d7331 100644 (file)
@@ -39,10 +39,10 @@ msgstr "Comando para executar:"
 msgid "Device"
 msgstr "Dispositivo"
 
-msgid "Do not initalize dynctrls of Linux-UVC driver"
+msgid "Do not initialize dynctrls of Linux-UVC driver"
 msgstr "Não inicie o dynctrls do driver do Linux-UVC"
 
-msgid "Don't initalize dynctrls"
+msgid "Don't initialize dynctrls"
 msgstr "Não inicia o dynctrls"
 
 msgid "Drop frames smaller then this limit"
@@ -136,7 +136,7 @@ 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"
+msgid "Set the interval in millisecond"
 msgstr "Defina o intervalo em milisegundos"
 
 msgid ""
index 6ba86645183803c22330c882c58dd4881e6e2906..b71bb3c71b963f3a927b8d8fd951c5be184a7f91 100644 (file)
@@ -43,10 +43,10 @@ msgstr "Введите команду"
 msgid "Device"
 msgstr "Устройство"
 
-msgid "Do not initalize dynctrls of Linux-UVC driver"
+msgid "Do not initialize dynctrls of Linux-UVC driver"
 msgstr "Не задействует dynctrls драйвера Linux-UVC."
 
-msgid "Don't initalize dynctrls"
+msgid "Don't initialize dynctrls"
 msgstr "Отключить dynctrls"
 
 msgid "Drop frames smaller then this limit"
@@ -140,7 +140,7 @@ msgstr "Задать размер буфера"
 msgid "Set folder to save pictures"
 msgstr "Задать папку для сохранения снимков."
 
-msgid "Set the inteval in millisecond"
+msgid "Set the interval in millisecond"
 msgstr "Задать интервал в миллисекундах."
 
 msgid ""
index ecb374d7f323fa134f0e256a3193307f724b1a42..27eb99987c77b773057831962e83950597b834fa 100644 (file)
@@ -28,10 +28,10 @@ msgstr ""
 msgid "Device"
 msgstr ""
 
-msgid "Do not initalize dynctrls of Linux-UVC driver"
+msgid "Do not initialize dynctrls of Linux-UVC driver"
 msgstr ""
 
-msgid "Don't initalize dynctrls"
+msgid "Don't initialize dynctrls"
 msgstr ""
 
 msgid "Drop frames smaller then this limit"
@@ -123,7 +123,7 @@ msgstr ""
 msgid "Set folder to save pictures"
 msgstr ""
 
-msgid "Set the inteval in millisecond"
+msgid "Set the interval in millisecond"
 msgstr ""
 
 msgid ""
index cfb2981b15fc522b6fdce27f17cdcba409347523..b2e916884f13469577d4e3248005a14cc124d146 100644 (file)
@@ -44,10 +44,10 @@ msgstr "运行的命令"
 msgid "Device"
 msgstr "设备"
 
-msgid "Do not initalize dynctrls of Linux-UVC driver"
+msgid "Do not initialize dynctrls of Linux-UVC driver"
 msgstr "不要初始化 Linux-UVC 驱动的 dynctrls"
 
-msgid "Don't initalize dynctrls"
+msgid "Don't initialize dynctrls"
 msgstr "不要初始化 dynctrls"
 
 msgid "Drop frames smaller then this limit"
@@ -139,7 +139,7 @@ msgstr "环形缓冲区大小"
 msgid "Set folder to save pictures"
 msgstr "图片保存位置"
 
-msgid "Set the inteval in millisecond"
+msgid "Set the interval in millisecond"
 msgstr "设置时间间隔(毫秒)"
 
 msgid ""
index d7b969c841ffafbfe4135ee9acfbd63903146adc..d3b3455e9f41e005aa9fdb73ad7eda561150ea38 100644 (file)
@@ -44,10 +44,10 @@ msgstr "執行的指令"
 msgid "Device"
 msgstr "裝置"
 
-msgid "Do not initalize dynctrls of Linux-UVC driver"
+msgid "Do not initialize dynctrls of Linux-UVC driver"
 msgstr "不要初始化 Linux-UVC 驅動的 dynctrls"
 
-msgid "Don't initalize dynctrls"
+msgid "Don't initialize dynctrls"
 msgstr "不要初始化 dynctrls"
 
 msgid "Drop frames smaller then this limit"
@@ -139,7 +139,7 @@ msgstr "環形緩衝區大小"
 msgid "Set folder to save pictures"
 msgstr "圖片儲存位置"
 
-msgid "Set the inteval in millisecond"
+msgid "Set the interval in millisecond"
 msgstr "設定時間間隔(毫秒)"
 
 msgid ""
index d2d7422a6b986ceff0967b68874e472abd2b95a6..35385912ceecfbe027c45f1dca42156ac2cc4693 100644 (file)
@@ -117,7 +117,7 @@ function diagnosticsData(interface, task)
                end
        end
 
-       function get_gateway(inteface)
+       function get_gateway(interface)
                local gateway = nil
                local dump = nil
 
@@ -143,6 +143,7 @@ function diagnosticsData(interface, task)
 
        local uci = require "luci.model.uci".cursor(nil, "/var/state")
        local nw = require "luci.model.network".init()
+       local i18n = require "luci.i18n"
        local network = nw:get_network(interface)
        local device = network and network:get_interface()
        device = device:name()
@@ -155,7 +156,7 @@ function diagnosticsData(interface, task)
                                diag_command("ping -I %s -c 5 -W 1 %s 2>&1", device, gateway)
                        else
                                luci.http.prepare_content("text/plain")
-                               luci.http.write(translatef("No gateway for interface %s found.", interface))
+                               luci.http.write(i18n.translatef("No gateway for interface %s found.", interface))
                        end
                elseif task == "ping_trackips" then
                        local trackips = uci:get("mwan3", interface, "track_ip")
@@ -164,7 +165,7 @@ function diagnosticsData(interface, task)
                                        diag_command("ping -I %s -c 5 -W 1 %s 2>&1", device, trackips[i])
                                end
                        else
-                               luci.http.write(translatef("No tracking Hosts for interface %s defined.", interface))
+                               luci.http.write(i18n.translatef("No tracking Hosts for interface %s defined.", interface))
                        end
                elseif task == "check_rules" then
                        local number = getInterfaceNumber(interface)
@@ -173,30 +174,30 @@ function diagnosticsData(interface, task)
                        local iif_rule  = sys.exec(string.format("ip rule | grep %d", iif))
                        local fwmark_rule = sys.exec(string.format("ip rule | grep %d", fwmark))
                        if iif_rule ~= "" and fwmark_rule ~= "" then
-                               luci.http.write(translatef("All required IP rules for interface %s found", interface))
+                               luci.http.write(i18n.translatef("All required IP rules for interface %s found", interface))
                                luci.http.write("\n")
                                luci.http.write(fwmark_rule)
                                luci.http.write(iif_rule)
                        elseif iif_rule == "" and fwmark_rule ~= "" then
-                               luci.http.write(translatef("Only one IP rules for interface %s found", interface))
+                               luci.http.write(i18n.translatef("Only one IP rules for interface %s found", interface))
                                luci.http.write("\n")
                                luci.http.write(fwmark_rule)
                        elseif iif_rule ~= "" and fwmark_rule == "" then
-                               luci.http.write(translatef("Only one IP rules for interface %s found", interface))
+                               luci.http.write(i18n.translatef("Only one IP rules for interface %s found", interface))
                                luci.http.write("\n")
                                luci.http.write(iif_rule)
                        else
-                               luci.http.write(translatef("Missing both IP rules for interface %s", interface))
+                               luci.http.write(i18n.translatef("Missing both IP rules for interface %s", interface))
                        end
                elseif task == "check_routes" then
                        local number = getInterfaceNumber(interface)
                        local routeTable = sys.exec(string.format("ip route list table %s", number))
                        if routeTable ~= "" then
-                               luci.http.write(translatef("Routing table %s for interface %s found", number, interface))
+                               luci.http.write(i18n.translatef("Routing table %s for interface %s found", number, interface))
                                luci.http.write("\n")
                                luci.http.write(routeTable)
                        else
-                               luci.http.write(translatef("Routing table %s for interface %s not found", number, interface))
+                               luci.http.write(i18n.translatef("Routing table %s for interface %s not found", number, interface))
                        end
                elseif task == "hotplug_ifup" then
                        os.execute(string.format("/usr/sbin/mwan3 ifup %s", ut.shellquote(interface)))
index 6f391e84d0e76a611093c98a791cb2b10514ef95..641733e5ac274b3c34de9b310c24f4b18516c7c2 100644 (file)
@@ -202,6 +202,9 @@ msgid ""
 "rules"
 msgstr ""
 
+msgid "Max TTL"
+msgstr ""
+
 msgid "Max packet latency [ms]"
 msgstr ""
 
index 8a1cad2f6baed7fd4cff6fc2502c9639194e5e81..40c71b00acafdeafc70146e244193eb3dcaea20a 100644 (file)
@@ -222,6 +222,9 @@ msgstr ""
 "スは使用できません。<br />インターフェースには、設定済みのメンバーやポリ"
 "シー、ルールと同じ名前を使用することはできません。"
 
+msgid "Max TTL"
+msgstr ""
+
 msgid "Max packet latency [ms]"
 msgstr "最大パケットレイテンシ [ms]"
 
index 4d52d7108c74eb8b3d35def126cfee01b3cd54e9..884848da4b4f96a29ee12403ad78272b139f1a1f 100644 (file)
@@ -222,6 +222,9 @@ msgstr ""
 "символы A-Z, a-z, 0-9, _ и пробелы.<br />Интерфейсы не могут иметь "
 "одинаковые имена с настроенными узлами, политиками или правилами."
 
+msgid "Max TTL"
+msgstr ""
+
 msgid "Max packet latency [ms]"
 msgstr ""
 
index e815afd1f0b648a51cf709e0b7e721d5464e0e11..8f43b3dd1069a2334a991a3f755adf0992acb638 100644 (file)
@@ -196,6 +196,9 @@ msgid ""
 "rules"
 msgstr ""
 
+msgid "Max TTL"
+msgstr ""
+
 msgid "Max packet latency [ms]"
 msgstr ""
 
index 4fd6817407792dac6391cd8635fc1a8e8ef3ae12..91475a61e071574f2aa942f99dace3f18246a0bf 100644 (file)
@@ -8,7 +8,7 @@ msgstr ""
 "Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"PO-Revision-Date: 2018-08-08 08:31+0800\n"
+"PO-Revision-Date: 2018-10-01 10:10+0800\n"
 "X-Generator: Gtranslator 2.91.7\n"
 
 msgid "%d hour"
@@ -39,7 +39,7 @@ msgid "Acceptable values: 1-256. Defaults to 1 if not set"
 msgstr "取值范围:1-256。如果不填写,默认值为 1"
 
 msgid "All required IP rules for interface %s found"
-msgstr ""
+msgstr "找到接口 %s 的所有必需 IP 规则"
 
 msgid "Check IP rules"
 msgstr "检查 IP 规则"
@@ -211,6 +211,9 @@ msgstr ""
 "的接口名称匹配。<br />名称允许包括 A-Z、a-z、0-9、_ 但是不能有空格。<br />接"
 "口不应该与成员、策略、规则中的任意一个设置项使用相同的名称"
 
+msgid "Max TTL"
+msgstr ""
+
 msgid "Max packet latency [ms]"
 msgstr "最大数据包延迟 [ms]"
 
@@ -255,7 +258,7 @@ msgid "Min packet loss [%]"
 msgstr "最小数据包丢失率 [%]"
 
 msgid "Missing both IP rules for interface %s"
-msgstr ""
+msgstr "缺少接口 %s 的两个 IP 规则"
 
 msgid ""
 "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
@@ -271,10 +274,10 @@ msgid "No MWAN interfaces found"
 msgstr "没有找到 MWAN 接口"
 
 msgid "No gateway for interface %s found."
-msgstr ""
+msgstr "没有找到接口 %s 的网关。"
 
 msgid "No tracking Hosts for interface %s defined."
-msgstr ""
+msgstr "未定义接口 %s 的跟踪主机。"
 
 msgid "Notification"
 msgstr "通知"
@@ -286,7 +289,7 @@ msgid "Online"
 msgstr "在线"
 
 msgid "Only one IP rules for interface %s found"
-msgstr ""
+msgstr "只找到接口 %s 的一个 IP 规则"
 
 msgid "Ping count"
 msgstr "Ping 计数"
@@ -343,10 +346,10 @@ msgid "Recovery interval"
 msgstr "故障恢复间隔"
 
 msgid "Routing table %s for interface %s found"
-msgstr ""
+msgstr "找到路由表 %s,为接口 %s"
 
 msgid "Routing table %s for interface %s not found"
-msgstr ""
+msgstr "没有找到路由表 %s,为接口 %s"
 
 msgid "Rule"
 msgstr "规则"
index bb17b559d2e65f9ae21d79e9868276ca3a87109b..3aaf030cf2a0a7affe54ff38e3f39dbe41acdc2a 100644 (file)
@@ -8,7 +8,7 @@ msgstr ""
 "Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"PO-Revision-Date: 2018-08-08 08:31+0800\n"
+"PO-Revision-Date: 2018-10-01 10:10+0800\n"
 "X-Generator: Gtranslator 2.91.7\n"
 
 msgid "%d hour"
@@ -39,7 +39,7 @@ msgid "Acceptable values: 1-256. Defaults to 1 if not set"
 msgstr "取值範圍:1-256。如果不填寫,預設值為 1"
 
 msgid "All required IP rules for interface %s found"
-msgstr ""
+msgstr "找到介面 %s 的所有必需 IP 規則"
 
 msgid "Check IP rules"
 msgstr "檢查 IP 規則"
@@ -209,7 +209,10 @@ msgstr ""
 "MWAN 支援最多 252 個物理或邏輯介面。<br />MWAN 要求所有介面必須在 /etc/"
 "config/network 中設定唯一的閘道器躍點。<br />名稱必須與 /etc/config/network "
 "中的介面名稱匹配。<br />名稱允許包括 A-Z、a-z、0-9、_ 但是不能有空格。<br />"
-"介面不應該與成員、策略、規則中的任意一個設定項使用相同的名稱"
+"接口不應該與成員、策略、規則中的任意一個設定項使用相同的名稱"
+
+msgid "Max TTL"
+msgstr ""
 
 msgid "Max packet latency [ms]"
 msgstr "最大資料包延遲 [ms]"
@@ -255,7 +258,7 @@ msgid "Min packet loss [%]"
 msgstr "最小資料包丟失率 [%]"
 
 msgid "Missing both IP rules for interface %s"
-msgstr ""
+msgstr "缺少介面 %s 的兩個 IP 規則"
 
 msgid ""
 "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
@@ -271,10 +274,10 @@ msgid "No MWAN interfaces found"
 msgstr "沒有找到 MWAN 介面"
 
 msgid "No gateway for interface %s found."
-msgstr ""
+msgstr "沒有找到介面 %s 的閘道器。"
 
 msgid "No tracking Hosts for interface %s defined."
-msgstr ""
+msgstr "未定義介面 %s 的跟蹤主機。"
 
 msgid "Notification"
 msgstr "通知"
@@ -286,7 +289,7 @@ msgid "Online"
 msgstr "在線"
 
 msgid "Only one IP rules for interface %s found"
-msgstr ""
+msgstr "只找到介面 %s 的一個 IP 規則"
 
 msgid "Ping count"
 msgstr "Ping 計數"
@@ -343,10 +346,10 @@ msgid "Recovery interval"
 msgstr "故障恢復間隔"
 
 msgid "Routing table %s for interface %s found"
-msgstr ""
+msgstr "找到路由表 %s,為介面 %s"
 
 msgid "Routing table %s for interface %s not found"
-msgstr ""
+msgstr "沒有找到路由表 %s,為介面 %s"
 
 msgid "Rule"
 msgstr "規則"
@@ -424,10 +427,10 @@ msgstr ""
 "這裡允許您修改“/etc/mwan3.user”的內容。<br />該檔案在 sysupgrade 期間也會保"
 "留。<br /><br />注意:<br />該檔案會作為 shell 指令碼解釋。<br />指令碼的第一"
 "行必須是 &#34;#!/bin/sh&#34;,不帶引號。<br />以 # 開頭的行是註釋,不會執行。"
-"<br />將您的自訂 mwan3 動作放在這裡,他們將<br />在啟用 mwan3 的介面上<br />"
-"在 netifd hotplug 介面事件時執行。<br /><br />有三個主要的環境變數傳遞給這個"
+"<br />將您的自定義 mwan3 動作放在這裡,他們將<br />在啟用 mwan3 的介面上<br /"
+">在 netifd hotplug 介面事件時執行。<br /><br />有三個主要的環境變數傳遞給這個"
 "指令碼。<br /><br />$ACTION “ifup”或“ifdown”<br />$INTERFACE 啟動或停止的介面"
-"名(例如 “wan”或“wwan”)<br />$DEVICE 啟動或停止介面的物理裝置名(例"
+"名(例如“wan”或“wwan”)<br />$DEVICE 啟動或停止介面的物理裝置名(例"
 "如“eth0”或“wwan0”)<br /><br />"
 
 msgid "Tracking hostname or IP address"
@@ -517,13 +520,13 @@ msgid "unreachable (reject)"
 msgstr "不可達(拒絕)"
 
 #~ msgid "Online (tracking active)"
-#~ msgstr "線上(跟蹤啟用中)"
+#~ msgstr "在線(跟蹤啟用中)"
 
 #~ msgid "MWAN Interface Live Status"
 #~ msgstr "MWAN 介面實時狀態"
 
 #~ msgid "Online (tracking off)"
-#~ msgstr "線上(跟蹤已關閉)"
+#~ msgstr "在線(跟蹤已關閉)"
 
 #~ msgid ""
 #~ "This section allows you to modify the content of \"/etc/mwan3.user\".<br /"
index d50b77d0f40894cfe53fafad86716d6e187eca9f..0d15bea6488175a5837d9f185dd464101247c7ad 100644 (file)
@@ -57,8 +57,6 @@ function action_data()
                json = "application/json"
        }
 
-       local filename = "data." .. mtype
-
        local args = { }
        local mtype = http.formvalue("type") or "json"
        local delim = http.formvalue("delim") or ","
@@ -94,7 +92,7 @@ function action_data()
        end
 
        http.prepare_content(types[mtype])
-       http.header("Content-Disposition", "attachment; filename=\"%s\"" % filename)
+       http.header("Content-Disposition", "attachment; filename=\"data.%s\"" % mtype)
        exec("/usr/sbin/nlbw", args, http.write)
 end
 
index a4636bfd5740843169c52ce3a469c5a5a5748773..7a543d353141dbef41d0af92a649efcffa17f0a2 100644 (file)
@@ -4,7 +4,7 @@ function index()
        local uci = require "luci.model.uci".cursor()
 
        uci:foreach("olsrd", "LoadPlugin", function(s)
-               if s.library == "olsrd_nameservice.so.0.3" then
+               if s.library == "olsrd_nameservice" then
                        has_serv = true
                end
        end)
index 94f01cb51c63f5c9bdac73ec8cb4afce1b1f56c6..91624f3b30fe0c853c2e3e8e17ab19af8926e42e 100644 (file)
@@ -16,7 +16,7 @@ local uci = require "luci.model.uci".cursor()
 local ip = require "luci.ip"
 
 uci:foreach("olsrd", "LoadPlugin", function(s)
-       if s.library == "olsrd_nameservice.so.0.3" then
+       if s.library == "olsrd_nameservice" then
                local services_file=s.services_file
                if services_file and fs.access(services_file) then
                        has_services = true
index 49435a4a33791cd54dea17b675902e53b9ec9b15..81eb78fb024ac7f1beb8d2b0070767151921db59 100644 (file)
@@ -103,15 +103,15 @@ function edge(n1,n2){
                        return "";
                }
 
-               x = this.n1.x*scale;
-               y = this.n1.y*scale;
-               dx = this.n2.x*scale - x;
-               dy = this.n2.y*scale - y;
+               var x = this.n1.x*scale;
+               var y = this.n1.y*scale;
+               var dx = this.n2.x*scale - x;
+               var dy = this.n2.y*scale - y;
 
                x += xoff*scale + 75;
                y += yoff*scale + 15;
 
-               imgtag = "<img src='/luci-static/resources/olsr-viz/dot_"
+               var imgtag = "<img src='/luci-static/resources/olsr-viz/dot_"
                if (this.etx > 0 && this.etx < 2) {
                        imgtag += "good.gif'";
                }
@@ -126,9 +126,9 @@ function edge(n1,n2){
                }
                imgtag += " alt='ETX: " + this.etx + "' title='ETX: " + this.etx + "' ";
 
-               d = Math.sqrt(dx*dx+dy*dy);
+               var d = Math.sqrt(dx*dx+dy*dy);
 
-               for (j = 0; j < d; j += 15) {
+               for (var j = 0; j < d; j += 15) {
                        nh += imgtag + "style='top:"
                        + parseInt(y+dy * j / d) + "px; left:"
                        + parseInt(x+dx * j / d) + "px; "
@@ -182,7 +182,7 @@ function edge(n1,n2){
 
 function getEdgeKey(ip1,ip2)
 {
-       key = "";
+       var key = "";
        if(ip1 > ip2) {
                key = ip2 + "-" + ip1;
        }
@@ -215,7 +215,7 @@ function node(ip) {
                        return "";
                }
                var igw = 0;
-               for(h in this.hna) {
+               for(var h in this.hna) {
                        if(h == "0.0.0.0") {
                                igw = 1;
                                break;
@@ -285,7 +285,7 @@ function node(ip) {
 }
 
 function touch_node(ip) {
-       n = nodes[ip];
+       var n = nodes[ip];
        if(!n) {
                n = new node(ip);
                nodes[ip] = n;
@@ -298,19 +298,22 @@ function touch_node(ip) {
 
 function place_new_nodes() {
        var nc = 0;
-       for(i = 0;i<newnodes.length;i++){
-               n = newnodes[i];
+       for(var i = 0;i<newnodes.length;i++){
+               var n = newnodes[i];
                if(n.placed){continue;}
+               var sp;
                if(sp = getCookie("node_"+n.ip)) {
-                       xy = sp.split("x");
+                       var xy = sp.split("x");
                        debug_writeln("sp: "+sp+" xy[0]: "+xy[0]+" xy[1]: "+xy[1]);
                        n.x = parseFloat(xy[0]);
                        n.y = parseFloat(xy[1]);
                }
                else if(n.weight>1){
-                       // see if we find allredy placed nodes
-                       ox=0,oy=0;dx=0,dy=0;c=0;
-                       for(e in n.edges){
+                       // see if we find already placed nodes
+                       var ox=0, oy=0;
+                       var dx=0, dy=0;
+                       var c=0;
+                       for(var e in n.edges){
                                if(nodes[e] && nodes[e].placed){
                                        if(!ox && !oy) {
                                                ox = nodes[e].x;
@@ -329,7 +332,7 @@ function place_new_nodes() {
                        }
                }
                else {
-                       // beginn somewhere
+                       // begin somewhere
                        n.x = Math.random()*400;
                        n.y = Math.random()*400;
                }
@@ -349,7 +352,7 @@ function hna(gw,net,mask) {
 }
 
 function touch_hna(node,net,mask) {
-       h = node.hna[net];
+       var h = node.hna[net];
        if(!h) {
                h = new hna(node.ip,net,mask);
                node.hna[net] = h;
@@ -379,17 +382,20 @@ function viz_setup(iframeid,maindivid,nodedivid,edgedivid) {
        edgediv=document.getElementById(edgedivid);
 
        // autosave on exit?
+       var autosave;
        if((autosave = getCookie("prefs_autosave"))) {
                auto_save = parseInt(autosave);
        }
        viz_autosave(auto_save);
 
        // maximum metric of surrounding nodes
+       var mmx;
        if(mmx = getCookie("prefs_maxmetric")) {
                set_maxmetric(mmx,true,true);
        }
 
        // scale of view
+       var savescale;
        if((savescale = getCookie("prefs_scale")) &&
                 (savescale = parseFloat(savescale))) {
                        set_scale(savescale,true);
@@ -414,10 +420,10 @@ function viz_setup(iframeid,maindivid,nodedivid,edgedivid) {
 function viz_save()
 {
        // let cookie survive a month
-       exp = new Date();
+       var exp = new Date();
        exp.setTime(exp.getTime() + 2592000000);
        // save node positions
-       for(ip in nodes)
+       for(var ip in nodes)
        {
                if(nodes[ip].metric > maxmetric) {
                        continue;
@@ -451,10 +457,10 @@ function viz_autosave(autosave)
 function viz_reset()
 {
        deleteAllCookies();
-       for(ip in nodes) {
+       for(var ip in nodes) {
                delete nodes[ip];
        }
-       for(e in edges) {
+       for(var e in edges) {
                delete edges[e];
        }
        viz_update();
@@ -571,6 +577,10 @@ function fa(x) {
 var dclTimer = 0;
 var declump_running = false;
 function declump(t) {
+       var dx;
+       var dy;
+       var d;
+
        // clear declump timer
        if(dclTimer) {
                clearTimeout(dclTimer);
@@ -581,7 +591,7 @@ function declump(t) {
        declump_running = true;
 
        // nodes
-       nc = 0;
+       var nc = 0;
        for (var ip1 in nodes) {
                nodes[ip1].fr_x=0;
                nodes[ip1].fr_y=0;
@@ -595,7 +605,7 @@ function declump(t) {
                if(nodes[ip1].metric > maxmetric || nodes[ip1].pinned) {
                        continue;
                }
-               for (ip2 in nodes) {
+               for (var ip2 in nodes) {
                        if (nodes[ip2].metric > maxmetric || ip1 == ip2) {
                                continue;
                        }
@@ -611,14 +621,14 @@ function declump(t) {
                dx = nodes[ip1].fr_x;
                dy = nodes[ip1].fr_y;
                d = Math.sqrt(dx*dx+dy*dy);
-               md = Math.min(d,iel/nodes[ip1].weight);
+               var md = Math.min(d,iel/nodes[ip1].weight);
                nodes[ip1].x_next += (dx / d) * md;
                nodes[ip1].y_next += (dy / d) * md;
                nc++;
        }
 
        // edges
-       ec = 0;
+       var ec = 0;
        for (var e in edges) {
                if (!edges[e].n1 || !edges[e].n2 ||
                        edges[e].n1.metric > maxmetric || edges[e].n2.metric > maxmetric) {
@@ -637,7 +647,11 @@ function declump(t) {
        }
 
        // displacement
-       xmin=-20;ymin=-20;xmax=20;ymax=20;dsum=0;
+       var xmin=-20;
+       var ymin=-20;
+       var xmax=20;
+       var ymax=20;
+       var dsum=0;
        for (var ip in nodes) {
                if(nodes[ip].metric > maxmetric || nodes[ip].pinned) {
                        continue;
@@ -713,7 +727,7 @@ function dragstart(element) {
        dragx = posx - element.offsetLeft;
        dragy = posy - element.offsetTop;
 
-       n = nodes[dragip];
+       var n = nodes[dragip];
        if(n) {
                n.pinned = true;
        }
@@ -723,7 +737,7 @@ function dragstart(element) {
 function dragstop() {
        //Wird aufgerufen, wenn ein Objekt nicht mehr bewegt werden soll.
 
-       n = nodes[dragip];
+       var n = nodes[dragip];
        if(n) {
                n.pinned = false;
        }
@@ -738,12 +752,12 @@ function drag(ereignis) {
        posx = document.all ? window.event.clientX : ereignis.pageX;
        posy = document.all ? window.event.clientY : ereignis.pageY;
        if(dragip != null) {
-               n = nodes[dragip];
+               var n = nodes[dragip];
                if(n) {
                        n.x = (posx - dragx)/scale - xoff;
                        n.y = (posy - dragy)/scale - yoff;
                }
-               e = document.getElementById('node_'+dragip);
+               var e = document.getElementById('node_'+dragip);
                e.style.left = parseInt((n.x+xoff)*scale) + "px";
                e.style.top = parseInt((n.y+yoff)*scale) + "px";
        }
@@ -811,8 +825,8 @@ function deleteCookie(name, path, domain) {
 }
 
 function deleteAllCookies() {
-       cookies = document.cookie.split("; ");
-       for(i=0;i<cookies.length;i++) {
+       var cookies = document.cookie.split("; ");
+       for(var i=0;i<cookies.length;i++) {
                deleteCookie(cookies[i].split("=")[0]);
        }
 }
index a075bcf26d7d44cafab4cd5bfa395682c4780f9e..90a615699a87cd1bf3d2778e0f63fc7e583e5351 100644 (file)
@@ -259,7 +259,7 @@ function lqmult.validate(self, value)
                        local host = val[1]
                        local mult = val[2]
                        if not host or not mult then
-                               return nil, translate("LQMult requires two values (IP address or 'default' and multiplicator) seperated by space.")
+                               return nil, translate("LQMult requires two values (IP address or 'default' and multiplicator) separated by space.")
                        end
                        if not (host == "default" or ip.IPv4(host) or ip.IPv6(host)) then
                                return nil, translate("Can only be a valid IPv4 or IPv6 address or 'default'")
index 0007e673e2d70ab77d337404a9024afeede2335b..0206b67dc0fc3d3127e2900bb315778cac06f81a 100644 (file)
@@ -253,7 +253,7 @@ function lqmult.validate(self, value)
                        local host = val[1]
                        local mult = val[2]
                        if not host or not mult then
-                               return nil, translate("LQMult requires two values (IP address or 'default' and multiplicator) seperated by space.")
+                               return nil, translate("LQMult requires two values (IP address or 'default' and multiplicator) separated by space.")
                        end
                        if not (host == "default" or ip.IPv6(host)) then
                                return nil, translate("Can only be a valid IPv6 address or 'default'")
index d6b7cd16a6e93965900fab9b8588a6ecc0f7b8b5..7de2ad9b4453eb0b5e2992d5e6fbb03f28c42528 100644 (file)
@@ -84,7 +84,7 @@ function lqmult.validate(self, value)
                        local host = val[1]
                        local mult = val[2]
                        if not host or not mult then
-                               return nil, translate("LQMult requires two values (IP address or 'default' and multiplicator) seperated by space.")
+                               return nil, translate("LQMult requires two values (IP address or 'default' and multiplicator) separated by space.")
                        end
                        if not (host == "default" or ip.IPv4(host) or ip.IPv6(host)) then
                                return nil, translate("Can only be a valid IPv4 or IPv6 address or 'default'")
index 2f0fa6c38d4f83b8bde0f8eea395d418ea9987a6..00f242df1b716df68e390ecb2dbe74df02019ce4 100644 (file)
@@ -84,7 +84,7 @@ function lqmult.validate(self, value)
                        local host = val[1]
                        local mult = val[2]
                        if not host or not mult then
-                               return nil, translate("LQMult requires two values (IP address or 'default' and multiplicator) seperated by space.")
+                               return nil, translate("LQMult requires two values (IP address or 'default' and multiplicator) separated by space.")
                        end
                        if not (host == "default" or ip.IPv6(host)) then
                                return nil, translate("Can only be a valid IPv6 address or 'default'")
index 43d6a08ad1f7ac3841cf01088f23f53d2fed35e7..2d7cffe6e9f729dca45d14951518956a6a3bea55 100644 (file)
@@ -62,7 +62,7 @@ if arg[1] then
 
 
        local knownPlParams = {
-               ["olsrd_bmf.so.1.5.3"] = {
+               ["olsrd_bmf"] = {
                        { Value,        "BmfInterface",                 "bmf0" },
                        { Value,        "BmfInterfaceIp",               "10.10.10.234/24" },
                        { Flag,         "DoLocalBroadcast",             "no" },
@@ -73,19 +73,19 @@ if arg[1] then
                        { DynamicList,  "NonOlsrIf",                    "br-lan" }
                },
 
-               ["olsrd_dyn_gw.so.0.4"] = {
+               ["olsrd_dyn_gw"] = {
                        { Value,        "Interval",                     "40" },
                        { DynamicList,  "Ping",                         "141.1.1.1" },
                        { DynamicList,  "HNA",                          "192.168.80.0/24", IpMask2Cidr, Cidr2IpMask }
                },
 
-               ["olsrd_httpinfo.so.0.1"] = {
+               ["olsrd_httpinfo"] = {
                        { Value,        "port",                         "80" },
                        { DynamicList,  "Host",                         "163.24.87.3" },
                        { DynamicList,  "Net",                          "0.0.0.0/0", Cidr2IpMask }
                },
 
-               ["olsrd_nameservice.so.0.3"] = {
+               ["olsrd_nameservice"] = {
                        { DynamicList,  "name",                         "my-name.mesh" },
                        { DynamicList,  "hosts",                        "1.2.3.4 name-for-other-interface.mesh" },
                        { Value,        "suffix",                       ".olsr" },
@@ -109,7 +109,7 @@ if arg[1] then
                        { Value,        "macs_change_script",           "/path/to/script" }
                },
 
-               ["olsrd_quagga.so.0.2.2"] = {
+               ["olsrd_quagga"] = {
                        { StaticList,   "redistribute",                 {
                                "system", "kernel", "connect", "static", "rip", "ripng", "ospf",
                                "ospf6", "isis", "bgp", "hsls"
@@ -119,40 +119,40 @@ if arg[1] then
                        { Value,        "Distance",                     Range(0,255) }
                },
 
-               ["olsrd_secure.so.0.5"] = {
+               ["olsrd_secure"] = {
                        { Value,        "Keyfile",                      "/etc/private-olsr.key" }
                },
 
-               ["olsrd_txtinfo.so.0.1"] = {
+               ["olsrd_txtinfo"] = {
                        { Value,        "accept",                       "127.0.0.1" }
                },
 
-               ["olsrd_jsoninfo.so.0.0"] = {
+               ["olsrd_jsoninfo"] = {
                        { Value,        "accept",                       "127.0.0.1" },
                        { Value,        "port",                         "9090" },
                        { Value,        "UUIDFile",                     "/etc/olsrd/olsrd.uuid" },
 
                },
 
-               ["olsrd_watchdog.so.0.1"] = {
+               ["olsrd_watchdog"] = {
                        { Value,        "file",                         "/var/run/olsrd.watchdog" },
                        { Value,        "interval",                     "30" }
                },
 
-               ["olsrd_mdns.so.1.0.0"] = {
+               ["olsrd_mdns"] = {
                        { DynamicList,  "NonOlsrIf",                    "lan" }
                },
 
-               ["olsrd_p2pd.so.0.1.0"] = {
+               ["olsrd_p2pd"] = {
                        { DynamicList,  "NonOlsrIf",                    "lan" },
                        { Value,        "P2pdTtl",                      "10" }
                },
 
-               ["olsrd_arprefresh.so.0.1"]             = {},
-               ["olsrd_dot_draw.so.0.3"]               = {},
-               ["olsrd_dyn_gw_plain.so.0.4"]   = {},
-               ["olsrd_pgraph.so.1.1"]                 = {},
-               ["olsrd_tas.so.0.1"]                    = {}
+               ["olsrd_arprefresh"]            = {},
+               ["olsrd_dot_draw"]              = {},
+               ["olsrd_dyn_gw_plain"]  = {},
+               ["olsrd_pgraph"]                        = {},
+               ["olsrd_tas"]                   = {}
        }
 
 
index d1c68be24b7d5565fd53c64e5118f7bc6ef03228..12fa0a171e5d60e0234afe89af5a2aff43c891cb 100644 (file)
@@ -62,7 +62,7 @@ if arg[1] then
 
 
        local knownPlParams = {
-               ["olsrd_bmf.so.1.5.3"] = {
+               ["olsrd_bmf"] = {
                        { Value,        "BmfInterface",                 "bmf0" },
                        { Value,        "BmfInterfaceIp",               "10.10.10.234/24" },
                        { Flag,         "DoLocalBroadcast",             "no" },
@@ -73,19 +73,19 @@ if arg[1] then
                        { DynamicList,  "NonOlsrIf",                    "br-lan" }
                },
 
-               ["olsrd_dyn_gw.so.0.4"] = {
+               ["olsrd_dyn_gw"] = {
                        { Value,        "Interval",                     "40" },
                        { DynamicList,  "Ping",                         "141.1.1.1" },
                        { DynamicList,  "HNA",                          "192.168.80.0/24", IpMask2Cidr, Cidr2IpMask }
                },
 
-               ["olsrd_httpinfo.so.0.1"] = {
+               ["olsrd_httpinfo"] = {
                        { Value,        "port",                         "80" },
                        { DynamicList,  "Host",                         "163.24.87.3" },
                        { DynamicList,  "Net",                          "0.0.0.0/0", Cidr2IpMask }
                },
 
-               ["olsrd_nameservice.so.0.3"] = {
+               ["olsrd_nameservice"] = {
                        { DynamicList,  "name",                         "my-name.mesh" },
                        { DynamicList,  "hosts",                        "1.2.3.4 name-for-other-interface.mesh" },
                        { Value,        "suffix",                       ".olsr" },
@@ -109,7 +109,7 @@ if arg[1] then
                        { Value,        "macs_change_script",           "/path/to/script" }
                },
 
-               ["olsrd_quagga.so.0.2.2"] = {
+               ["olsrd_quagga"] = {
                        { StaticList,   "redistribute",                 {
                                "system", "kernel", "connect", "static", "rip", "ripng", "ospf",
                                "ospf6", "isis", "bgp", "hsls"
@@ -119,40 +119,40 @@ if arg[1] then
                        { Value,        "Distance",                     Range(0,255) }
                },
 
-               ["olsrd_secure.so.0.5"] = {
+               ["olsrd_secure"] = {
                        { Value,        "Keyfile",                      "/etc/private-olsr.key" }
                },
 
-               ["olsrd_txtinfo.so.0.1"] = {
+               ["olsrd_txtinfo"] = {
                        { Value,        "accept",                       "::1/128" }
                },
 
-               ["olsrd_jsoninfo.so.0.0"] = {
+               ["olsrd_jsoninfo"] = {
                        { Value,        "accept",                       "::1/128" },
                        { Value,        "port",                         "9090" },
                        { Value,        "UUIDFile",                     "/etc/olsrd/olsrd.uuid.ipv6" },
 
                },
 
-               ["olsrd_watchdog.so.0.1"] = {
+               ["olsrd_watchdog"] = {
                        { Value,        "file",                         "/var/run/olsrd.watchdog.ipv6" },
                        { Value,        "interval",                     "30" }
                },
 
-               ["olsrd_mdns.so.1.0.0"] = {
+               ["olsrd_mdns.so"] = {
                        { DynamicList,  "NonOlsrIf",                    "lan" }
                },
 
-               ["olsrd_p2pd.so.0.1.0"] = {
+               ["olsrd_p2pd.so"] = {
                        { DynamicList,  "NonOlsrIf",                    "lan" },
                        { Value,        "P2pdTtl",                      "10" }
                },
 
-               ["olsrd_arprefresh.so.0.1"]             = {},
-               ["olsrd_dot_draw.so.0.3"]               = {},
-               ["olsrd_dyn_gw_plain.so.0.4"]   = {},
-               ["olsrd_pgraph.so.1.1"]                 = {},
-               ["olsrd_tas.so.0.1"]                    = {}
+               ["olsrd_arprefresh"]            = {},
+               ["olsrd_dot_draw"]              = {},
+               ["olsrd_dyn_gw_plain"]  = {},
+               ["olsrd_pgraph"]                        = {},
+               ["olsrd_tas"]                   = {}
        }
 
 
index 1ee763e119578a232f293a55cc622a25a69b94c7..213013f22c82d6fc92958af265238b91c9a90e12 100644 (file)
@@ -9,7 +9,7 @@ function css(selector, property, value) {
 }
 
 window.onload = function() {
-  buttons = '<input type="button" name="show-proto-4" id="show-proto-4" class="cbi-button cbi-button-apply" style="margin-right: 5px" value="<%:Hide IPv4%>">'
+  var buttons = '<input type="button" name="show-proto-4" id="show-proto-4" class="cbi-button cbi-button-apply" style="margin-right: 5px" value="<%:Hide IPv4%>">'
   buttons += '<input type="button" name="show-proto-6" id="show-proto-6" class="cbi-button cbi-button-apply" value="<%:Hide IPv6%>">'
 
   document.getElementById('togglebuttons').innerHTML = buttons;
index 1c178f18103c017757af2cbb21013f67422d0fa7..f04d926918f0e556185c04c92342418addaee6f1 100644 (file)
@@ -47,12 +47,14 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 },
                                linkgw = '<a href="http://' + hna.gateway + '/cgi-bin-status.html">' + hna.gateway + '</a>'
                        }
 
+                       var validity;
                        if (hna.validityTime != undefined) {
                                validity = hna.validityTime + 's'
                        } else {
                                validity = '-'
                        }
 
+                       var hostname;
                        if (hna.hostname != undefined) {
                                hostname = ' / <a href="http://' + hna.hostname + '/cgi-bin-status.html">' + hna.hostname + '</a>'
                        } else {
index 9afd367d1fc6f7caabbc10e39bf3d020db32685d..46cc27dec67d253ac5ab4277e29088f6929c5d5c 100644 (file)
@@ -55,6 +55,7 @@ XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 },
                for (var idx = 0; idx < info.length; idx++)
                {
                        var smartgw = info[idx];
+                       var linkgw;
                        s += '<div class="tr cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-' + smartgw.proto + '">'
                        if (smartgw.proto == '6') {
                                linkgw = '<a href="http://[' + smartgw.ipAddress + ']/cgi-bin-status.html">' + smartgw.ipAddress + '</a>'
index db4bce1b199f48484fc85c8e5dc5ad9733e3f480..441eb36aca1b9aa1a776510de50bc6f6fc938236 100644 (file)
@@ -304,7 +304,7 @@ msgstr "Nivell LQ"
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index 31669072d8f18260d8365838cbece3edf1d60fe9..e40a47d54c4d677e5ec180102013ecef648536ea 100644 (file)
@@ -299,7 +299,7 @@ msgstr ""
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index a23a20d58c35be5e9f2211cfc6e4613ba966a706..e631dcc0c47988581ca8c02701c010f87ae340d0 100644 (file)
@@ -349,7 +349,7 @@ msgstr "LQ-Level"
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index a3cf0d2ae164191fd19a2fda3a0777ff54329c52..668b3db02e2f6ee7e096d12c92817983a5f1fb77 100644 (file)
@@ -301,7 +301,7 @@ msgstr ""
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index 131005e1eebcbdb604f2e13e37f02d50c2e4826a..1eba365586db7e5851d2ef470b5a1b889bc86c02 100644 (file)
@@ -302,7 +302,7 @@ msgstr "LQ level"
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index 0e161bda43f331612fe0e312a8a13f1907a8f773..3c3c2f1dcbedcc3d72d24067ca072ab2e897af42 100644 (file)
@@ -346,7 +346,7 @@ msgstr "LQ - Nivel"
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 "LQMult precisa dos valores (dirección IP o \"por defecto\" y multiplicador) "
 "separados por un espacio."
index e93a6bd20f8648d9ec0d237f2b8bfdaaaacb1f01..fcf5aa3b24bc05a531e1f1a3978f5ed7452d96f4 100644 (file)
@@ -301,7 +301,7 @@ msgstr ""
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index 38aa43bffbe908df0dc796ce81497671d8f29774..a036b030dd611ef2ce5d33e75a62d74d9061ee72 100644 (file)
@@ -296,7 +296,7 @@ msgstr ""
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index 38aa43bffbe908df0dc796ce81497671d8f29774..a036b030dd611ef2ce5d33e75a62d74d9061ee72 100644 (file)
@@ -296,7 +296,7 @@ msgstr ""
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index a88d2970ceab22fdbc97d857d51666a0efbdb62a..ec4210bcbbeb4f7d43cc3add67f2b2dec8039391 100644 (file)
@@ -325,7 +325,7 @@ msgstr ""
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index b3f0109345f74e0d396cc7be08dd8714c56bd14c..298866a9f3e2ba632e63a264f2cdd3f5998ec657 100644 (file)
@@ -339,7 +339,7 @@ msgstr "LQ レベル"
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index c0edce15c1be484d04bcc3dbe35cbf17efcb9bc1..58ebfa5569202b4b325a07d79ffeeeefc1f2548b 100644 (file)
@@ -295,7 +295,7 @@ msgstr ""
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index 38aa43bffbe908df0dc796ce81497671d8f29774..a036b030dd611ef2ce5d33e75a62d74d9061ee72 100644 (file)
@@ -296,7 +296,7 @@ msgstr ""
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index 64a99f6069245b08a349f4dd63d525ca60a9fca9..ee0f0e274f14b67009759940f0a2b226f5d168cf 100644 (file)
@@ -331,7 +331,7 @@ msgstr "Poziom LQ"
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index 499176c16b8d53f605639017da727dca0327ea00..6097093e7f8d9fcf56ca18161ee375712877b4e0 100644 (file)
@@ -379,7 +379,7 @@ msgstr "Nível <abbr title=\"Link Quality, Qualidade do Enlace\">LQ</abbr>"
 # 20140621: edersg: tradução
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 "LQMult exige dois valores (endereço IP ou 'padrão' e multiplicador) "
 "separados por espaços."
index 4e04248f5b4d0a1b69f8912b47752460b169a4ad..e1ab72501341dea3b0b590126c9fbd9f6bd0689a 100644 (file)
@@ -311,7 +311,7 @@ msgstr "Nível LQ"
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index 257fab3733d2c4788c65b76dc5d46774ff7d2329..87cea095bf3623d7e468ad489f3085984af19679 100644 (file)
@@ -300,7 +300,7 @@ msgstr "Nivel LQ"
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index 453454ca64454b2cf1887d86deb2a6841a027b95..df59afa02a51f1b4eafb89cc8432f15f135bc151 100644 (file)
@@ -353,7 +353,7 @@ msgstr "LQ частота"
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 "LQMult требует двух значений (IP-адрес или 'default' и множитель), "
 "разделенных пробелом."
index fdd37e3aff234a53e4bec65d7e9bafe59a33e046..2016a0a5a3a2a9a524a602a7bce5313a29df3c22 100644 (file)
@@ -296,7 +296,7 @@ msgstr ""
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index adf690c3ace2dfac5d3caa191014e29b5ab3d5f2..f4c8381dd59d7bc6091fc9c7f1d9df580478caea 100644 (file)
@@ -299,7 +299,7 @@ msgstr "LQ-nivå"
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index 6bd63c2a2aa4044c0fa107b310a776b62af19e2d..a65c5d0986a0b3b2e42c9120d2da2143c2139aca 100644 (file)
@@ -289,7 +289,7 @@ msgstr ""
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index 18641896defec7a7b63f8690ebd643f67e294acd..d67e6685fe2490e42a9649808405ae8a9a6daac2 100644 (file)
@@ -296,7 +296,7 @@ msgstr ""
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index d35fe3173730ee54e99325cbd80ee4982845b5ed..603abe98ff92d2e79114030f2ef379655cf0bdd6 100644 (file)
@@ -297,7 +297,7 @@ msgstr ""
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index 698e5288e27849954b81cd754968a07598017eee..8a27dda67c1c2c908d96f9479017292be017acab 100644 (file)
@@ -303,7 +303,7 @@ msgstr "LQ level"
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
+"separated by space."
 msgstr ""
 
 msgid "Last hop"
index 37264f584ab5fd1f1f9efdad2353690d887fbe33..dcb55ba0e8fc83097b256ce1c4e5e9ae140b6aa1 100644 (file)
@@ -1,45 +1,48 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2018.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-10-10 20:26+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
-"Language-Team: none\n"
+"PO-Revision-Date: 2018-10-01 11:10+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\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: Gtranslator 2.91.7\n"
 
 msgid "Active MID announcements"
-msgstr ""
+msgstr "活动的 MID 通告"
 
 msgid "Active OLSR nodes"
-msgstr ""
+msgstr "活动的 OLSR 节点"
 
 msgid "Active host net announcements"
-msgstr ""
+msgstr "活动的主机网络通告"
 
 msgid "Advanced Settings"
 msgstr "高级设置"
 
 msgid "Allow gateways with NAT"
-msgstr "允许网关使用NAT"
+msgstr "允许带 NAT 的网关"
 
 msgid "Allow the selection of an outgoing ipv4 gateway with NAT"
-msgstr "允许选定的IPv4通过网关NAT"
+msgstr "允许选择有 NAT 的 IPv4 网关"
 
 msgid "Announce uplink"
-msgstr "广告上行"
+msgstr "通告上行链接"
 
 msgid "Announced network"
-msgstr "广告网络"
+msgstr "通告的网络"
 
 msgid "Bad (ETX > 10)"
-msgstr ""
+msgstr "差(ETX > 10)"
 
 msgid "Bad (SNR < 5)"
-msgstr ""
+msgstr "差(SNR < 5)"
 
 msgid "Both values must use the dotted decimal notation."
 msgstr "两个值必须使用点分十进制表示法。"
@@ -48,10 +51,10 @@ msgid "Broadcast address"
 msgstr "广播地址"
 
 msgid "Can only be a valid IPv4 or IPv6 address or 'default'"
-msgstr ""
+msgstr "必须是有效的 IPv4 或 IPv6 地址,或“默认”"
 
 msgid "Can only be a valid IPv6 address or 'default'"
-msgstr ""
+msgstr "必须是有效的 IPv6 地址,或“默认”"
 
 msgid "Configuration"
 msgstr "配置"
@@ -60,12 +63,13 @@ msgid ""
 "Could not get any data. Make sure the jsoninfo plugin is installed and "
 "allows connections from localhost."
 msgstr ""
+"无法获取任何数据。确保已安装 jsoninfo 插件,并允许来自 localhost 的连接。"
 
 msgid "Display"
 msgstr "显示"
 
 msgid "Downlink"
-msgstr "断线"
+msgstr "下行链接"
 
 msgid "Download Config"
 msgstr "下载配置"
@@ -74,25 +78,26 @@ msgid "ETX"
 msgstr "ETX"
 
 msgid "Enable"
-msgstr "å\85\81许"
+msgstr "å\90¯ç\94¨"
 
 msgid ""
 "Enable SmartGateway. If it is disabled, then all other SmartGateway "
 "parameters are ignored. Default is \"no\"."
 msgstr ""
-"启用SmartGateway。如果禁用,则SmartGateway其他所有参数将忽略。缺省值:“禁用”"
+"启用 SmartGateway。如果禁用,则将忽略 SmartGateway 的其他所有参数。缺省"
+"值:“no”"
 
 msgid "Enable this interface."
 msgstr "启用这个端口"
 
 msgid "Enabled"
-msgstr "启用"
+msgstr "å·²å\90¯ç\94¨"
 
 msgid "Expected retransmission count"
 msgstr "预期重发数"
 
 msgid "FIB metric"
-msgstr "FIB度量"
+msgstr "FIB 度量"
 
 msgid ""
 "FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" "
@@ -102,58 +107,61 @@ msgid ""
 "value too, but does only update the hopcount if the nexthop changes too. "
 "Default is \"flat\"."
 msgstr ""
+"FIBMetric 控制主机路由 OLSRd 集的度量标准值。“flat”表示度量值始终为2。这是首"
+"选值,因为它有助于 linux 内核清理旧路由。“correct”使用 hopcount 作为度量"
+"值。“approx”也使用 hopcount 作为度量值,但只有在下一次更改时才更新 hopcount。"
+"默认为“flat”。"
 
 msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\""
-msgstr ""
+msgstr "TC 的鱼眼机制(校验和开启)。默认为“开启”"
 
 msgid "Gateway"
 msgstr "网关"
 
 msgid "General Settings"
-msgstr "通用设置"
+msgstr "一般设置"
 
 msgid "General settings"
-msgstr "通用设置"
+msgstr "一般设置"
 
 msgid "Good (2 < ETX < 4)"
-msgstr ""
+msgstr "好(2 < ETX < 4)"
 
 msgid "Good (30 > SNR > 20)"
-msgstr ""
+msgstr "好(30 > SNR > 20)"
 
 msgid "Green"
-msgstr ""
+msgstr "绿"
 
 msgid "HNA"
 msgstr "HNA"
 
 msgid "HNA Announcements"
-msgstr "HNA告"
+msgstr "HNA 通告"
 
 msgid "HNA interval"
-msgstr "HNA间隙"
+msgstr "HNA 间隔"
 
 msgid "HNA validity time"
-msgstr "HNA有效时长"
+msgstr "HNA 有效时长"
 
-#, fuzzy
 msgid "HNA6 Announcements"
-msgstr "HNA告"
+msgstr "HNA 通告"
 
 msgid "Hello"
 msgstr "Hello"
 
 msgid "Hello interval"
-msgstr "Hello间隙"
+msgstr "Hello 间隔"
 
 msgid "Hello validity time"
-msgstr "Hello有效时长"
+msgstr "Hello 有效时长"
 
 msgid "Hide IPv4"
-msgstr ""
+msgstr "隐藏 IPv4"
 
 msgid "Hide IPv6"
-msgstr ""
+msgstr "隐藏 IPv6"
 
 msgid "Hna4"
 msgstr "Hna4"
@@ -162,7 +170,7 @@ msgid "Hna6"
 msgstr "Hna6"
 
 msgid "Hops"
-msgstr "è·³"
+msgstr "è·\83ç\82¹"
 
 msgid "Hostname"
 msgstr "主机名"
@@ -170,73 +178,79 @@ msgstr "主机名"
 msgid ""
 "Hosts in a OLSR routed network can announce connecitivity to external "
 "networks using HNA messages."
-msgstr ""
+msgstr "OLSR 路由网络中的主机可以使用 HNA 消息通告与外部网络的连接。"
 
 msgid ""
 "Hosts in a OLSR routed network can announce connecitivity to external "
 "networks using HNA6 messages."
-msgstr ""
+msgstr "OLSR 路由网络中的主机可以使用 HNA6 消息通告与外部网络的连接。"
 
 msgid ""
 "Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more "
 "robustness to the link sensing but delays neighbor registration. Defaults is "
 "\"yes\""
 msgstr ""
+"滞后链路检测(仅适用于 hopcount 度量)。滞后增加了链路感测的健壮性,但延迟了"
+"邻居注册过程。默认值为“是”"
 
 msgid "IP Addresses"
-msgstr "IP地址"
+msgstr "IP 地址"
 
 msgid ""
 "IP-version to use. If 6and4 is selected then one olsrd instance is started "
 "for each protocol."
-msgstr ""
+msgstr "要使用的 IP 版本。如果选择 6and4,则为每个协议启动一个 olsrd 实例。"
 
 msgid "IPv4"
 msgstr "IPv4"
 
 msgid "IPv4 broadcast"
-msgstr "IPv4广播地址"
+msgstr "IPv4 广播地址"
 
 msgid ""
 "IPv4 broadcast address for outgoing OLSR packets. One useful example would "
 "be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the "
 "interface broadcast IP."
 msgstr ""
+"传出 OLSR 数据包的 IPv4 广播地址。一个有用的例子是 255.255.255.255。默认"
+"为“0.0.0.0”,将触发使用接口的 IP 广播地址。"
 
 msgid "IPv4 source"
-msgstr ""
+msgstr "IPv4 源地址"
 
 msgid ""
 "IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which "
 "triggers usage of the interface IP."
-msgstr ""
+msgstr "传出 OLSR 包的 IPv4 源地址。默认为“0.0.0.0”,将触发使用接口的 IP。"
 
 msgid "IPv6"
-msgstr ""
+msgstr "IPv6"
 
 msgid "IPv6 multicast"
-msgstr ""
+msgstr "IPv6 组播地址"
 
 msgid ""
 "IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal "
 "multicast."
-msgstr ""
+msgstr "IPv6 组播地址。默认为“FF02::6D”,即 manet-router 链路本地组播地址。"
 
 msgid ""
 "IPv6 network must be given in full notation, prefix must be in CIDR notation."
-msgstr ""
+msgstr "IPv6 网络必须完整表出,前缀必须是 CIDR 表示法。"
 
 msgid "IPv6 source"
-msgstr ""
+msgstr "IPv6 源地址"
 
 msgid ""
 "IPv6 src prefix. OLSRd will choose one of the interface IPs which matches "
 "the prefix of this parameter. Default is \"0::/0\", which triggers the usage "
 "of a not-linklocal interface IP."
 msgstr ""
+"IPv6 源前缀。OLSRd 将选择一个与此参数前缀匹配的接口 IP。默认为“0::/0”,触发使"
+"用接口的非链路本地 IP。"
 
 msgid "IPv6-Prefix of the uplink"
-msgstr ""
+msgstr "IPv6 上行链路前缀"
 
 msgid ""
 "If the route to the current gateway is to be changed, the ETX value of this "
@@ -245,82 +259,89 @@ msgid ""
 "if changed.<br /><b>WARNING:</b> This parameter should not be used together "
 "with the etx_ffeth metric!<br />Defaults to \"1.0\"."
 msgstr ""
+"如果要更改到当前网关的路由,则在将该网关与新网关进行比较之前,将该网关的ETX值"
+"乘以该值。参数可以是介于0.1和1.0之间的值,但如果更改则应接近1.0。<br /><b>警"
+"告:</b>此参数不应与etx_ffeth指标一起使用!<br />默认值到“1.0”。"
 
 msgid ""
 "If this Node uses NAT for connections to the internet. Default is \"yes\"."
-msgstr ""
+msgstr "如果此节点使用 NAT 连接到互联网。默认为“是”。"
 
 msgid "Interface"
-msgstr ""
+msgstr "接口"
 
 msgid ""
 "Interface Mode is used to prevent unnecessary packet forwarding on switched "
 "ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is "
 "\"mesh\"."
 msgstr ""
+"接口模式用于防止以太网交换机接口上不必要的数据包转发。有效模式"
+"是“mesh”和“ether”。默认为“mesh”。"
 
 msgid "Interfaces"
-msgstr ""
+msgstr "接口"
 
 msgid "Interfaces Defaults"
-msgstr ""
+msgstr "接口默认值"
 
 msgid "Internet protocol"
-msgstr ""
+msgstr "互联网协议"
 
 msgid ""
 "Interval to poll network interfaces for configuration changes (in seconds). "
 "Default is \"2.5\"."
-msgstr ""
+msgstr "轮询网络接口以进行配置更改的间隔(秒)。默认值为“2.5”。"
 
 msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0."
-msgstr ""
+msgstr "LQMult-Value 的值无效。必须介于0.01和1.0之间。"
 
 msgid ""
 "Invalid Value for LQMult-Value. You must use a decimal number between 0.01 "
 "and 1.0 here."
-msgstr ""
+msgstr "LQMult-Value 的值无效。您必须在此处使用介于0.01和1.0之间的十进制数。"
 
 msgid "Known OLSR routes"
-msgstr ""
+msgstr "已知的 OLSR 路由"
 
 msgid "LQ"
-msgstr ""
+msgstr "LQ"
 
 msgid "LQ aging"
-msgstr ""
+msgstr "LQ 老化"
 
 msgid "LQ algorithm"
-msgstr ""
+msgstr "LQ 算法"
 
 msgid "LQ fisheye"
-msgstr ""
+msgstr "LQ 鱼眼"
 
 msgid "LQ level"
-msgstr ""
+msgstr "LQ 级别"
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
-msgstr ""
+"separated by space."
+msgstr "LQMult 需要用空格分隔的两个值(IP 地址或“default”,加上乘数)。"
 
 msgid "Last hop"
-msgstr ""
+msgstr "最后一跳"
 
 msgid "Legend"
-msgstr ""
+msgstr "Legend"
 
 msgid "Library"
-msgstr ""
+msgstr ""
 
 msgid "Link Quality Settings"
-msgstr ""
+msgstr "链接质量设置"
 
 msgid ""
 "Link quality aging factor (only for lq level 2). Tuning parameter for "
 "etx_float and etx_fpm, smaller values mean slower changes of ETX value. "
 "(allowed values are between 0.01 and 1.0)"
 msgstr ""
+"链路质量老化因子(仅适用于 lq 级别2)。调整 etx_float 和 etx_fpm 的参数,值越"
+"小意味着 ETX 值的变化越慢。(允许值介于0.01和1.0之间)"
 
 msgid ""
 "Link quality algorithm (only for lq level 2).<br /><b>etx_float</b>: "
@@ -330,50 +351,60 @@ msgid ""
 "calculation<br /><b>etx_ffeth</b>: incompatible variant of etx_ff that "
 "allows ethernet links with ETX 0.1.<br />Defaults to \"etx_ff\""
 msgstr ""
+"链路质量算法(仅适用于 lq 级别2)。<br /><b>etx_float</b>:浮点数 ETX,按指数"
+"函数老化<br /><b>etx_fpm</b>:与etx_float 相同,但按整数算术<br /><b>etx_ff</"
+"b>:ETX freifunk,一种使用所有 OLSR 流量(而不仅仅是 hello)进行 ETX 计算的 "
+"etx 变体<br /><b>etx_ffeth</b>:不兼容的变体 etx_ff,允许以太网链接使用 ETX "
+"0.1。<br />默认为“etx_ff”"
 
 msgid ""
 "Link quality level switch between hopcount and cost-based (mostly ETX) "
 "routing.<br /><b>0</b> = do not use link quality<br /><b>2</b> = use link "
 "quality for MPR selection and routing<br />Default is \"2\""
 msgstr ""
+"在 hopcount 和基于代价(主要是 ETX)路由之间切换链接质量级别。<br /><b>0</b> "
+"= 不使用链接质量<br /><b>2</b> = 使用链接质量进行 MPR 选择和路由<br />默认"
+"为“2”"
 
 msgid "LinkQuality Multiplicator"
-msgstr ""
+msgstr "LinkQuality 乘数"
 
 msgid "Links per node (average)"
-msgstr ""
+msgstr "每个节点的链接数(平均)"
 
 msgid "Links total"
-msgstr ""
+msgstr "链接总数"
 
 msgid "Local interface IP"
-msgstr ""
+msgstr "本地接口 IP"
 
 msgid "MID"
-msgstr ""
+msgstr "MID"
 
 msgid "MID interval"
-msgstr ""
+msgstr "MID 间隔"
 
 msgid "MID validity time"
-msgstr ""
+msgstr "MID 有效期"
 
 msgid "MTU"
-msgstr ""
+msgstr "MTU"
 
 msgid "Main IP"
-msgstr ""
+msgstr "主要 IP"
 
 msgid ""
 "Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, "
 "configured on port 9090 and accepts connections from \"127.0.0.1\"."
 msgstr ""
+"确保 OLSRd 正在运行,加载了“jsoninfo”插件,在端口9090上配置接受来"
+"自“127.0.0.1”的连接。"
 
 msgid "Metric"
-msgstr ""
+msgstr "度量"
 
 msgid "Mode"
-msgstr ""
+msgstr "模式"
 
 msgid ""
 "Multiply routes with the factor given here. Allowed values are between 0.01 "
@@ -381,6 +412,9 @@ msgid ""
 ">reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5<br />reduce LQ to all "
 "nodes on this interface by 20%: default 0.8"
 msgstr ""
+"使用此处给出的因子放大路由 LQ。允许值介于0.01和1.0之间。它仅在 LQ-Level 大于0"
+"时使用。示例:<br />将到 192.168.0.1 的 LQ 减半:192.168.0.1 0.5<br />将此接"
+"口到所有节点的 LQ 减少20%:default 0.8"
 
 msgid ""
 "Multiply routes with the factor given here. Allowed values are between 0.01 "
@@ -388,201 +422,211 @@ msgid ""
 ">reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5<br />reduce "
 "LQ to all nodes on this interface by 20%: default 0.8"
 msgstr ""
+"使用此处给出的因子放大路由 LQ。允许值介于0.01和1.0之间。它仅在 LQ-Level 大于0"
+"时使用。示例:<br />将到 fd91:662e:3c58::1 的 LQ 减半:fd91:662e:3c58::1 "
+"0.5<br />将此接口到所有节点的 LQ 减少20%:default 0.8"
 
 msgid "NAT threshold"
-msgstr ""
+msgstr "NAT 阈值"
 
 msgid "NLQ"
-msgstr ""
+msgstr "NLQ"
 
 msgid "Neighbors"
-msgstr ""
+msgstr "邻居"
 
 msgid "Neighbour IP"
-msgstr ""
+msgstr "邻居 IP"
 
 msgid "Neighbours"
-msgstr ""
+msgstr "邻居"
 
 msgid "Netmask"
-msgstr ""
+msgstr "子网掩码"
 
 msgid "Network"
-msgstr ""
+msgstr "网络"
 
 msgid "Network address"
-msgstr ""
+msgstr "网络地址"
 
 msgid "Nic changes poll interval"
-msgstr ""
+msgstr "Nic 更改轮询间隔"
 
 msgid "Nodes"
-msgstr ""
+msgstr "节点"
 
 msgid "OLSR"
-msgstr ""
+msgstr "OLSR"
 
 msgid "OLSR - Display Options"
-msgstr ""
+msgstr "OLSR  - 显示选项"
 
 msgid "OLSR - HNA-Announcements"
-msgstr ""
+msgstr "OLSR - HNA-通告"
 
-#, fuzzy
 msgid "OLSR - HNA6-Announcements"
-msgstr "HNA公告"
+msgstr "OLSR - HNA6-通告"
 
 msgid "OLSR - Plugins"
-msgstr ""
+msgstr "OLSR - 插件"
 
 msgid "OLSR Daemon"
-msgstr ""
+msgstr "OLSR 守护进程"
 
 msgid "OLSR Daemon - Interface"
-msgstr ""
+msgstr "OLSR 守护进程 - 接口"
 
 msgid "OLSR connections"
-msgstr ""
+msgstr "OLSR 连接"
 
 msgid "OLSR gateway"
-msgstr ""
+msgstr "OLSR 网关"
 
 msgid "OLSR node"
-msgstr ""
+msgstr "OLSR 节点"
 
 msgid "Orange"
-msgstr ""
+msgstr "橙色"
 
 msgid "Overview"
-msgstr ""
+msgstr "概览"
 
 msgid "Overview of currently active OLSR host net announcements"
-msgstr ""
+msgstr "当前活动的 OLSR 主机网络通告概览"
 
 msgid "Overview of currently established OLSR connections"
-msgstr ""
+msgstr "当前建立的 OLSR 连接概览"
 
 msgid "Overview of currently known OLSR nodes"
-msgstr ""
+msgstr "当前已知的 OLSR 节点概览"
 
 msgid "Overview of currently known routes to other OLSR nodes"
-msgstr ""
+msgstr "当前已知到其他 OLSR 节点的路由概览"
 
 msgid "Overview of interfaces where OLSR is running"
-msgstr ""
+msgstr "OLSR 正在运行的接口概览"
 
 msgid "Overview of known multiple interface announcements"
-msgstr ""
+msgstr "已知的多接口通告概览"
 
 msgid "Overview of smart gateways in this network"
-msgstr ""
+msgstr "此网络中的智能网关概览"
 
 msgid "Plugin configuration"
-msgstr ""
+msgstr "插件配置"
 
 msgid "Plugins"
-msgstr ""
+msgstr "插件"
 
 msgid "Polling rate for OLSR sockets in seconds. Default is 0.05."
-msgstr ""
+msgstr "OLSR 套接字的轮询速率,以秒为单位。默认值为0.05。"
 
 msgid "Pollrate"
-msgstr ""
+msgstr "轮询速率"
 
 msgid "Port"
-msgstr ""
+msgstr "端口"
 
 msgid "Prefix"
-msgstr ""
+msgstr "前缀"
 
 msgid "Red"
-msgstr ""
+msgstr "红色"
 
 msgid "Resolve"
-msgstr ""
+msgstr "解析"
 
 msgid ""
 "Resolve hostnames on status pages. It is generally safe to allow this, but "
 "if you use public IPs and have unstable DNS-Setup then those pages will load "
 "really slow. In this case disable it here."
 msgstr ""
+"解析状态页面上的主机名。通常允许这样做是安全的,但如果您使用公共 IP,且具有不"
+"稳定的 DNS 设置,则这些页面的加载速度会非常慢。这种情况下,在此禁用它。"
 
 msgid "Routes"
-msgstr ""
+msgstr "路由"
 
 msgid "Secondary OLSR interfaces"
-msgstr ""
+msgstr "辅助 OLSR 接口"
 
 msgid ""
 "Sets the main IP (originator ip) of the router. This IP will NEVER change "
 "during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the "
 "IP of the first interface."
 msgstr ""
+"设置路由器的主 IP(发起方 IP)。在 olsrd 的正常运行时间内,此 IP 永远不会改"
+"变。默认为 0.0.0.0,触发使用第一个接口的 IP。"
 
 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 "
 "the first interface."
 msgstr ""
+"设置路由器的主 IP(发起方 IP)。在 olsrd 的正常运行时间内,此 IP 永远不会改"
+"变。默认为 ::,触发使用第一个接口的 IP。"
 
 msgid "Show IPv4"
-msgstr ""
+msgstr "显示 IPv4"
 
 msgid "Show IPv6"
-msgstr ""
+msgstr "显示 IPv6"
 
 msgid "Signal Noise Ratio in dB"
-msgstr ""
+msgstr "信噪比(dB)"
 
 msgid "SmartGW"
-msgstr ""
+msgstr "SmartGW"
 
 msgid "SmartGW announcements"
-msgstr ""
+msgstr "SmartGW 通告"
 
 msgid "SmartGateway is not configured on this system."
-msgstr ""
+msgstr "此系统上未配置 SmartGateway。"
 
 msgid "Source address"
-msgstr ""
+msgstr "源地址"
 
 msgid ""
 "Specifies the speed of the uplink in kilobits/s. First parameter is "
 "upstream, second parameter is downstream. Default is \"128 1024\"."
 msgstr ""
+"以千比特/秒为单位指定上行链路的速度。第一个参数是上传,第二个参数是下载。默认"
+"值为“128 1024”。"
 
 msgid "Speed of the uplink"
-msgstr ""
+msgstr "上行链路的速度"
 
 msgid "State"
-msgstr ""
+msgstr "状态"
 
 msgid "Status"
-msgstr ""
+msgstr "状态"
 
 msgid "Still usable (20 > SNR > 5)"
-msgstr ""
+msgstr "仍可使用(20 > SNR > 5)"
 
 msgid "Still usable (4 < ETX < 10)"
-msgstr ""
+msgstr "仍可使用(4 < ETX < 10)"
 
 msgid "Success rate of packages received from the neighbour"
-msgstr ""
+msgstr "从邻居收包的成功率"
 
 msgid "Success rate of packages sent to the neighbour"
-msgstr ""
+msgstr "向邻居发包的成功率"
 
 msgid "TC"
-msgstr ""
+msgstr "TC"
 
 msgid "TC interval"
-msgstr ""
+msgstr "TC 间隔"
 
 msgid "TC validity time"
-msgstr ""
+msgstr "TC 有效时间"
 
 msgid "TOS value"
-msgstr ""
+msgstr "TOS 值"
 
 msgid ""
 "The OLSR daemon is an implementation of the Optimized Link State Routing "
@@ -591,19 +635,27 @@ msgid ""
 "device. Visit <a href='http://www.olsr.org'>olsrd.org</a> for help and "
 "documentation."
 msgstr ""
+"OLSR 守护程序是优化链路状态路由(Optimized Link State Routing)协议的实现。因"
+"此,它允许在任何网络设备上建立网状路由。它可以在支持 ad-hoc 模式的任何 wifi "
+"卡上运行,当然也可以在任何以太网设备上运行。访问 <a href='http://www.olsr."
+"org'>olsrd.org</a> 获取帮助和文档。"
 
 msgid ""
 "The fixed willingness to use. If not set willingness will be calculated "
 "dynamically based on battery/power status. Default is \"3\"."
 msgstr ""
+"固定的使用意愿值。如果未设置,则将根据电池/电源状态动态计算意愿值。默认值"
+"为“3”。"
 
 msgid "The interface OLSRd should serve."
-msgstr ""
+msgstr "OLSRd 应该服务的接口。"
 
 msgid ""
 "The port OLSR uses. This should usually stay at the IANA assigned port 698. "
 "It can have a value between 1 and 65535."
 msgstr ""
+"OLSR 使用的端口。通常应使用 IANA 分配的保留端口698。它的值可以在1到65535之"
+"间。"
 
 msgid ""
 "This can be used to signal the external IPv6 prefix of the uplink to the "
@@ -611,52 +663,57 @@ msgid ""
 "the IPv6 gateway without any kind of address translation. The maximum prefix "
 "length is 64 bits. Default is \"::/0\" (no prefix)."
 msgstr ""
+"这可用于向客户端通知上行链路的外部 IPv6 前缀。这可能可使客户端更改其本地 "
+"IPv6 地址,以使用 IPv6 网关,而无需任何类型的地址转换。前缀长度最大为64位。默"
+"认为“::/0”(无前缀)。"
 
 msgid "Timing and Validity"
-msgstr ""
+msgstr "时间和有效性"
 
 msgid "Topology"
-msgstr ""
+msgstr "拓扑"
 
 msgid ""
 "Type of service value for the IP header of control traffic. Default is "
 "\"16\"."
-msgstr ""
+msgstr "IP 流量控制头的服务类型值。默认值为“16”。"
 
 msgid "Unable to connect to the OLSR daemon!"
-msgstr ""
+msgstr "无法连接到 OLSR 守护程序!"
 
 msgid "Uplink"
-msgstr ""
+msgstr "上行链接"
 
 msgid "Uplink uses NAT"
-msgstr ""
+msgstr "上行链接使用 NAT"
 
 msgid "Use hysteresis"
-msgstr ""
+msgstr "使用滞后"
 
 msgid "Validity Time"
-msgstr ""
+msgstr "有效时间"
 
 msgid "Version"
-msgstr ""
+msgstr "版本"
 
 msgid "Very good (ETX < 2)"
-msgstr ""
+msgstr "非常好(ETX < 2)"
 
 msgid "Very good (SNR > 30)"
-msgstr ""
+msgstr "非常好(SNR > 30)"
 
 msgid "WLAN"
-msgstr ""
+msgstr "WLAN"
 
 msgid ""
 "Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not "
 "work, please install it."
 msgstr ""
+"警告:未安装 kmod-ipip。没有 kmod-ipip,SmartGateway 将无法正常工作,请安装"
+"它。"
 
 msgid "Weight"
-msgstr ""
+msgstr "体重"
 
 msgid ""
 "When multiple links exist between hosts the weight of interface is used to "
@@ -667,30 +724,38 @@ msgid ""
 "0. For any other value of LinkQualityLevel, the interface ETX value is used "
 "instead."
 msgstr ""
+"当主机之间存在多个链路时,接口权重用于确定要使用的链路。通常,权重由 olsrd 根"
+"据接口的特性自动计算,但您可以在此处指定固定值。Olsrd 将选择值最低的链接。"
+"<br /><b>注意:</b>仅当 LinkQualityLevel 设置为0时才使用接口权重。"
+"LinkQualityLevel 的任何其他值都将使用接口的 ETX 值。"
 
 msgid ""
 "Which kind of uplink is exported to the other mesh nodes. An uplink is "
 "detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. "
 "Default setting is \"both\"."
 msgstr ""
+"将导出哪种上行链路到其他网状节点。通过查找本地 HNA 0.0.0.0/0、::ffff:0:0/96 "
+"或 2000::/3 来检测上行链路。默认设置为“两者”。"
 
 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 "
 "setting is \"both\"."
 msgstr ""
+"将导出哪种上行链路到其他网状节点。通过查找本地 HNA6 ::ffff:0:0/96 或 "
+"2000::/3 来检测上行链路。默认设置为“两者”。"
 
 msgid "Willingness"
-msgstr ""
+msgstr "意愿值"
 
 msgid "Yellow"
-msgstr ""
+msgstr "黄色"
 
 msgid "no"
-msgstr ""
+msgstr ""
 
 msgid "yes"
-msgstr ""
+msgstr ""
 
 #~ msgid "Device"
 #~ msgstr "设备"
index 797874d8f15cdee4dc3b03cc11cdc875b7fb1245..749026585cc4dddd72b17cf3c997b18b7e5fc660 100644 (file)
@@ -1,77 +1,81 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2018.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-15 07:15+0200\n"
-"Last-Translator: omnistack <omnistack@gmail.com>\n"
-"Language-Team: none\n"
+"PO-Revision-Date: 2018-10-01 11:10+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_TW\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: Gtranslator 2.91.7\n"
 
 msgid "Active MID announcements"
-msgstr "啟用Mesh網狀網路ID公告"
+msgstr "活動的 MID 通告"
 
 msgid "Active OLSR nodes"
-msgstr "啟用OLSR路由協議節點"
+msgstr "活動的 OLSR 節點"
 
 msgid "Active host net announcements"
-msgstr "啟用主機網路公告"
+msgstr "活動的主機網路通告"
 
 msgid "Advanced Settings"
 msgstr "進階設定"
 
 msgid "Allow gateways with NAT"
-msgstr "允許帶NAT的匝道器"
+msgstr "允許帶 NAT 的閘道器"
 
 msgid "Allow the selection of an outgoing ipv4 gateway with NAT"
-msgstr "允許帶NAT的匝道器選擇輸出ipv4封包"
+msgstr "允許選擇有 NAT 的 IPv4 閘道器"
 
 msgid "Announce uplink"
-msgstr "公告上傳"
+msgstr "通告上行連結"
 
 msgid "Announced network"
-msgstr "公告網路"
+msgstr "通告的網路"
 
 msgid "Bad (ETX > 10)"
-msgstr ""
+msgstr "差(ETX > 10)"
 
 msgid "Bad (SNR < 5)"
-msgstr ""
+msgstr "差(SNR < 5)"
 
 msgid "Both values must use the dotted decimal notation."
-msgstr "這兩個值都必須採用點分十進位制格式"
+msgstr "兩個值必須使用點分十進位制表示法。"
 
 msgid "Broadcast address"
 msgstr "廣播位址"
 
 msgid "Can only be a valid IPv4 or IPv6 address or 'default'"
-msgstr ""
+msgstr "必須是有效的 IPv4 或 IPv6 位址,或“預設”"
 
 msgid "Can only be a valid IPv6 address or 'default'"
-msgstr ""
+msgstr "必須是有效的 IPv6 位址,或“預設”"
 
 msgid "Configuration"
-msgstr "設定"
+msgstr "配置"
 
 msgid ""
 "Could not get any data. Make sure the jsoninfo plugin is installed and "
 "allows connections from localhost."
 msgstr ""
+"無法獲取任何資料。確保已安裝 jsoninfo 外掛,並允許來自 localhost 的連線。"
 
 msgid "Display"
 msgstr "顯示"
 
 msgid "Downlink"
-msgstr "下行"
+msgstr "下行連結"
 
 msgid "Download Config"
-msgstr "下載置"
+msgstr "下載置"
 
 msgid "ETX"
-msgstr ""
+msgstr "ETX"
 
 msgid "Enable"
 msgstr "啟用"
@@ -80,20 +84,20 @@ msgid ""
 "Enable SmartGateway. If it is disabled, then all other SmartGateway "
 "parameters are ignored. Default is \"no\"."
 msgstr ""
-"啟用機動式匝道器. 假如它失效, 其它所有機動式匝道器參數將被忽視. 預設值是\"no"
-"\""
+"啟用 SmartGateway。如果禁用,則將忽略 SmartGateway 的其他所有引數。預設"
+"值:“no”"
 
 msgid "Enable this interface."
-msgstr "啟用這個介面"
+msgstr "啟用這個"
 
 msgid "Enabled"
-msgstr "啟用"
+msgstr "å·²å\95\9fç\94¨"
 
 msgid "Expected retransmission count"
-msgstr "預計重傳次數"
+msgstr "預期重發數"
 
 msgid "FIB metric"
-msgstr "FIB指標"
+msgstr "FIB 度量"
 
 msgid ""
 "FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" "
@@ -103,16 +107,16 @@ msgid ""
 "value too, but does only update the hopcount if the nexthop changes too. "
 "Default is \"flat\"."
 msgstr ""
-"FIBMetric控制OLSR主機路由的公用路由計量設定.  \"flat\" 代表是公用計量數永遠是"
-"2. 這是較受歡迎的數值, 因為它會協助linux核心路由清除舊的路由表. \"correct\"使"
-"用跳躍數當作公用路由計量. \"approx\"也使用跳躍數當作公用路由計量, 但只作用在"
-"跳躍數也更新時. 預設值是\"flat\"."
+"FIBMetric 控制主機路由 OLSRd 集的度量標準值。“flat”表示度量值始終為2。這是首"
+"選值,因為它有助於 linux 核心清理舊路由。“correct”使用 hopcount 作為度量"
+"值。“approx”也使用 hopcount 作為度量值,但只有在下一次更改時才更新 hopcount。"
+"預設為“flat”。"
 
 msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\""
-msgstr ""
+msgstr "TC 的魚眼機制(校驗和開啟)。預設為“開啟”"
 
 msgid "Gateway"
-msgstr "道器"
+msgstr "道器"
 
 msgid "General Settings"
 msgstr "一般設定"
@@ -121,127 +125,132 @@ msgid "General settings"
 msgstr "一般設定"
 
 msgid "Good (2 < ETX < 4)"
-msgstr ""
+msgstr "好(2 < ETX < 4)"
 
 msgid "Good (30 > SNR > 20)"
-msgstr ""
+msgstr "好(30 > SNR > 20)"
 
 msgid "Green"
-msgstr ""
+msgstr ""
 
 msgid "HNA"
-msgstr ""
+msgstr "HNA"
 
 msgid "HNA Announcements"
-msgstr ""
+msgstr "HNA 通告"
 
 msgid "HNA interval"
-msgstr ""
+msgstr "HNA 間隔"
 
 msgid "HNA validity time"
-msgstr ""
+msgstr "HNA 有效時長"
 
-#, fuzzy
 msgid "HNA6 Announcements"
-msgstr "啟用Mesh網狀網路ID公告"
+msgstr "HNA 通告"
 
 msgid "Hello"
-msgstr ""
+msgstr "Hello"
 
 msgid "Hello interval"
-msgstr ""
+msgstr "Hello 間隔"
 
 msgid "Hello validity time"
-msgstr ""
+msgstr "Hello 有效時長"
 
 msgid "Hide IPv4"
-msgstr ""
+msgstr "隱藏 IPv4"
 
 msgid "Hide IPv6"
-msgstr ""
+msgstr "隱藏 IPv6"
 
 msgid "Hna4"
-msgstr ""
+msgstr "Hna4"
 
 msgid "Hna6"
-msgstr ""
+msgstr "Hna6"
 
 msgid "Hops"
-msgstr ""
+msgstr "躍點"
 
 msgid "Hostname"
-msgstr ""
+msgstr "主機名"
 
 msgid ""
 "Hosts in a OLSR routed network can announce connecitivity to external "
 "networks using HNA messages."
-msgstr ""
+msgstr "OLSR 路由網路中的主機可以使用 HNA 訊息通告與外部網路的連線。"
 
 msgid ""
 "Hosts in a OLSR routed network can announce connecitivity to external "
 "networks using HNA6 messages."
-msgstr ""
+msgstr "OLSR 路由網路中的主機可以使用 HNA6 訊息通告與外部網路的連線。"
 
 msgid ""
 "Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more "
 "robustness to the link sensing but delays neighbor registration. Defaults is "
 "\"yes\""
 msgstr ""
+"滯後鏈路檢測(僅適用於 hopcount 度量)。滯後增加了鏈路感測的健壯性,但延遲了"
+"鄰居註冊過程。預設值為“是”"
 
 msgid "IP Addresses"
-msgstr ""
+msgstr "IP 位址"
 
 msgid ""
 "IP-version to use. If 6and4 is selected then one olsrd instance is started "
 "for each protocol."
-msgstr ""
+msgstr "要使用的 IP 版本。如果選擇 6and4,則為每個協議啟動一個 olsrd 例項。"
 
 msgid "IPv4"
-msgstr ""
+msgstr "IPv4"
 
 msgid "IPv4 broadcast"
-msgstr ""
+msgstr "IPv4 廣播位址"
 
 msgid ""
 "IPv4 broadcast address for outgoing OLSR packets. One useful example would "
 "be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the "
 "interface broadcast IP."
 msgstr ""
+"傳出 OLSR 資料包的 IPv4 廣播位址。一個有用的例子是 255.255.255.255。預設"
+"為“0.0.0.0”,將觸發使用介面的 IP 廣播位址。"
 
 msgid "IPv4 source"
-msgstr ""
+msgstr "IPv4 源位址"
 
 msgid ""
 "IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which "
 "triggers usage of the interface IP."
-msgstr ""
+msgstr "傳出 OLSR 包的 IPv4 源位址。預設為“0.0.0.0”,將觸發使用介面的 IP。"
 
 msgid "IPv6"
-msgstr ""
+msgstr "IPv6"
 
 msgid "IPv6 multicast"
-msgstr ""
+msgstr "IPv6 組播位址"
 
 msgid ""
 "IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal "
 "multicast."
-msgstr ""
+msgstr "IPv6 組播位址。預設為“FF02::6D”,即 manet-router 鏈路本地組播位址。"
 
 msgid ""
 "IPv6 network must be given in full notation, prefix must be in CIDR notation."
-msgstr ""
+msgstr "IPv6 網路必須完整表出,字首必須是 CIDR 表示法。"
 
 msgid "IPv6 source"
-msgstr ""
+msgstr "IPv6 源位址"
 
 msgid ""
 "IPv6 src prefix. OLSRd will choose one of the interface IPs which matches "
 "the prefix of this parameter. Default is \"0::/0\", which triggers the usage "
 "of a not-linklocal interface IP."
 msgstr ""
+"IPv6 源字首。OLSRd 將選擇一個與此引數字首匹配的介面 IP。預設為“0::/0”,觸發使"
+"用介面的非鏈路本地 IP。"
 
 msgid "IPv6-Prefix of the uplink"
-msgstr ""
+msgstr "IPv6 上行鏈路字首"
 
 msgid ""
 "If the route to the current gateway is to be changed, the ETX value of this "
@@ -250,82 +259,89 @@ msgid ""
 "if changed.<br /><b>WARNING:</b> This parameter should not be used together "
 "with the etx_ffeth metric!<br />Defaults to \"1.0\"."
 msgstr ""
+"如果要更改到當前閘道器的路由,則在將該閘道器與新閘道器進行比較之前,將該閘道"
+"器的ETX值乘以該值。引數可以是介於0.1和1.0之間的值,但如果更改則應接近1.0。"
+"<br /><b>警告:</b>此引數不應與etx_ffeth指標一起使用!<br />預設值到“1.0”。"
 
 msgid ""
 "If this Node uses NAT for connections to the internet. Default is \"yes\"."
-msgstr ""
+msgstr "如果此節點使用 NAT 連線到網際網路。預設為“是”。"
 
 msgid "Interface"
-msgstr ""
+msgstr "介面"
 
 msgid ""
 "Interface Mode is used to prevent unnecessary packet forwarding on switched "
 "ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is "
 "\"mesh\"."
 msgstr ""
+"介面模式用於防止乙太網交換機介面上不必要的資料包轉發。有效模式"
+"是“mesh”和“ether”。預設為“mesh”。"
 
 msgid "Interfaces"
-msgstr ""
+msgstr "介面"
 
 msgid "Interfaces Defaults"
-msgstr ""
+msgstr "介面預設值"
 
 msgid "Internet protocol"
-msgstr ""
+msgstr "網際網路協議"
 
 msgid ""
 "Interval to poll network interfaces for configuration changes (in seconds). "
 "Default is \"2.5\"."
-msgstr ""
+msgstr "輪詢網路介面以進行配置更改的間隔(秒)。預設值為“2.5”。"
 
 msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0."
-msgstr ""
+msgstr "LQMult-Value 的值無效。必須介於0.01和1.0之間。"
 
 msgid ""
 "Invalid Value for LQMult-Value. You must use a decimal number between 0.01 "
 "and 1.0 here."
-msgstr ""
+msgstr "LQMult-Value 的值無效。您必須在此處使用介於0.01和1.0之間的十進位制數。"
 
 msgid "Known OLSR routes"
-msgstr ""
+msgstr "已知的 OLSR 路由"
 
 msgid "LQ"
-msgstr ""
+msgstr "LQ"
 
 msgid "LQ aging"
-msgstr ""
+msgstr "LQ 老化"
 
 msgid "LQ algorithm"
-msgstr ""
+msgstr "LQ 演算法"
 
 msgid "LQ fisheye"
-msgstr ""
+msgstr "LQ 魚眼"
 
 msgid "LQ level"
-msgstr ""
+msgstr "LQ 級別"
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
-"seperated by space."
-msgstr ""
+"separated by space."
+msgstr "LQMult 需要用空格分隔的兩個值(IP 位址或“default”,加上乘數)。"
 
 msgid "Last hop"
-msgstr ""
+msgstr "最後一跳"
 
 msgid "Legend"
-msgstr ""
+msgstr "Legend"
 
 msgid "Library"
-msgstr ""
+msgstr ""
 
 msgid "Link Quality Settings"
-msgstr ""
+msgstr "連結質量設定"
 
 msgid ""
 "Link quality aging factor (only for lq level 2). Tuning parameter for "
 "etx_float and etx_fpm, smaller values mean slower changes of ETX value. "
 "(allowed values are between 0.01 and 1.0)"
 msgstr ""
+"鏈路質量老化因子(僅適用於 lq 級別2)。調整 etx_float 和 etx_fpm 的引數,值越"
+"小意味著 ETX 值的變化越慢。(允許值介於0.01和1.0之間)"
 
 msgid ""
 "Link quality algorithm (only for lq level 2).<br /><b>etx_float</b>: "
@@ -335,50 +351,60 @@ msgid ""
 "calculation<br /><b>etx_ffeth</b>: incompatible variant of etx_ff that "
 "allows ethernet links with ETX 0.1.<br />Defaults to \"etx_ff\""
 msgstr ""
+"鏈路質量演算法(僅適用於 lq 級別2)。<br /><b>etx_float</b>:浮點數 ETX,按指"
+"數函式老化<br /><b>etx_fpm</b>:與etx_float 相同,但按整數算術<br /"
+"><b>etx_ff</b>:ETX freifunk,一種使用所有 OLSR 流量(而不僅僅是 hello)進行 "
+"ETX 計算的 etx 變體<br /><b>etx_ffeth</b>:不相容的變體 etx_ff,允許乙太網連"
+"結使用 ETX 0.1。<br />預設為“etx_ff”"
 
 msgid ""
 "Link quality level switch between hopcount and cost-based (mostly ETX) "
 "routing.<br /><b>0</b> = do not use link quality<br /><b>2</b> = use link "
 "quality for MPR selection and routing<br />Default is \"2\""
 msgstr ""
+"在 hopcount 和基於代價(主要是 ETX)路由之間切換連結質量級別。<br /><b>0</b> "
+"= 不使用連結質量<br /><b>2</b> = 使用連結質量進行 MPR 選擇和路由<br />預設"
+"為“2”"
 
 msgid "LinkQuality Multiplicator"
-msgstr ""
+msgstr "LinkQuality 乘數"
 
 msgid "Links per node (average)"
-msgstr ""
+msgstr "每個節點的連結數(平均)"
 
 msgid "Links total"
-msgstr ""
+msgstr "連結總數"
 
 msgid "Local interface IP"
-msgstr ""
+msgstr "本地介面 IP"
 
 msgid "MID"
-msgstr ""
+msgstr "MID"
 
 msgid "MID interval"
-msgstr ""
+msgstr "MID 間隔"
 
 msgid "MID validity time"
-msgstr ""
+msgstr "MID 有效期"
 
 msgid "MTU"
-msgstr ""
+msgstr "MTU"
 
 msgid "Main IP"
-msgstr ""
+msgstr "主要 IP"
 
 msgid ""
 "Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, "
 "configured on port 9090 and accepts connections from \"127.0.0.1\"."
 msgstr ""
+"確保 OLSRd 正在執行,載入了“jsoninfo”外掛,在埠9090上配置接受來"
+"自“127.0.0.1”的連線。"
 
 msgid "Metric"
-msgstr ""
+msgstr "度量"
 
 msgid "Mode"
-msgstr ""
+msgstr "模式"
 
 msgid ""
 "Multiply routes with the factor given here. Allowed values are between 0.01 "
@@ -386,6 +412,9 @@ msgid ""
 ">reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5<br />reduce LQ to all "
 "nodes on this interface by 20%: default 0.8"
 msgstr ""
+"使用此處給出的因子放大路由 LQ。允許值介於0.01和1.0之間。它僅在 LQ-Level 大於0"
+"時使用。示例:<br />將到 192.168.0.1 的 LQ 減半:192.168.0.1 0.5<br />將此接"
+"口到所有節點的 LQ 減少20%:default 0.8"
 
 msgid ""
 "Multiply routes with the factor given here. Allowed values are between 0.01 "
@@ -393,200 +422,211 @@ msgid ""
 ">reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5<br />reduce "
 "LQ to all nodes on this interface by 20%: default 0.8"
 msgstr ""
+"使用此處給出的因子放大路由 LQ。允許值介於0.01和1.0之間。它僅在 LQ-Level 大於0"
+"時使用。示例:<br />將到 fd91:662e:3c58::1 的 LQ 減半:fd91:662e:3c58::1 "
+"0.5<br />將此介面到所有節點的 LQ 減少20%:default 0.8"
 
 msgid "NAT threshold"
-msgstr ""
+msgstr "NAT 閾值"
 
 msgid "NLQ"
-msgstr ""
+msgstr "NLQ"
 
 msgid "Neighbors"
-msgstr ""
+msgstr "鄰居"
 
 msgid "Neighbour IP"
-msgstr ""
+msgstr "鄰居 IP"
 
 msgid "Neighbours"
-msgstr ""
+msgstr "鄰居"
 
 msgid "Netmask"
-msgstr ""
+msgstr "子網掩碼"
 
 msgid "Network"
-msgstr ""
+msgstr "網路"
 
 msgid "Network address"
-msgstr ""
+msgstr "網路位址"
 
 msgid "Nic changes poll interval"
-msgstr ""
+msgstr "Nic 更改輪詢間隔"
 
 msgid "Nodes"
-msgstr ""
+msgstr "節點"
 
 msgid "OLSR"
-msgstr ""
+msgstr "OLSR"
 
 msgid "OLSR - Display Options"
-msgstr ""
+msgstr "OLSR  - 顯示選項"
 
 msgid "OLSR - HNA-Announcements"
-msgstr ""
+msgstr "OLSR - HNA-通告"
 
 msgid "OLSR - HNA6-Announcements"
-msgstr ""
+msgstr "OLSR - HNA6-通告"
 
 msgid "OLSR - Plugins"
-msgstr ""
+msgstr "OLSR - 外掛"
 
 msgid "OLSR Daemon"
-msgstr ""
+msgstr "OLSR 守護程序"
 
 msgid "OLSR Daemon - Interface"
-msgstr ""
+msgstr "OLSR 守護程序 - 介面"
 
 msgid "OLSR connections"
-msgstr ""
+msgstr "OLSR 連線"
 
 msgid "OLSR gateway"
-msgstr ""
+msgstr "OLSR 閘道器"
 
 msgid "OLSR node"
-msgstr ""
+msgstr "OLSR 節點"
 
 msgid "Orange"
-msgstr ""
+msgstr "橙色"
 
 msgid "Overview"
-msgstr ""
+msgstr "概覽"
 
 msgid "Overview of currently active OLSR host net announcements"
-msgstr ""
+msgstr "當前活動的 OLSR 主機網路通告概覽"
 
 msgid "Overview of currently established OLSR connections"
-msgstr ""
+msgstr "當前建立的 OLSR 連線概覽"
 
 msgid "Overview of currently known OLSR nodes"
-msgstr ""
+msgstr "當前已知的 OLSR 節點概覽"
 
 msgid "Overview of currently known routes to other OLSR nodes"
-msgstr ""
+msgstr "當前已知到其他 OLSR 節點的路由概覽"
 
 msgid "Overview of interfaces where OLSR is running"
-msgstr ""
+msgstr "OLSR 正在執行的介面概覽"
 
 msgid "Overview of known multiple interface announcements"
-msgstr ""
+msgstr "已知的多介面通告概覽"
 
 msgid "Overview of smart gateways in this network"
-msgstr ""
+msgstr "此網路中的智慧閘道器概覽"
 
 msgid "Plugin configuration"
-msgstr ""
+msgstr "外掛配置"
 
 msgid "Plugins"
-msgstr ""
+msgstr "外掛"
 
 msgid "Polling rate for OLSR sockets in seconds. Default is 0.05."
-msgstr ""
+msgstr "OLSR 套接字的輪詢速率,以秒為單位。預設值為0.05。"
 
 msgid "Pollrate"
-msgstr ""
+msgstr "輪詢速率"
 
 msgid "Port"
-msgstr ""
+msgstr ""
 
 msgid "Prefix"
-msgstr ""
+msgstr "字首"
 
 msgid "Red"
-msgstr ""
+msgstr "紅色"
 
 msgid "Resolve"
-msgstr ""
+msgstr "解析"
 
 msgid ""
 "Resolve hostnames on status pages. It is generally safe to allow this, but "
 "if you use public IPs and have unstable DNS-Setup then those pages will load "
 "really slow. In this case disable it here."
 msgstr ""
+"解析狀態頁面上的主機名。通常允許這樣做是安全的,但如果您使用公共 IP,且具有不"
+"穩定的 DNS 設定,則這些頁面的載入速度會非常慢。這種情況下,在此禁用它。"
 
 msgid "Routes"
-msgstr ""
+msgstr "路由"
 
 msgid "Secondary OLSR interfaces"
-msgstr ""
+msgstr "輔助 OLSR 介面"
 
 msgid ""
 "Sets the main IP (originator ip) of the router. This IP will NEVER change "
 "during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the "
 "IP of the first interface."
 msgstr ""
+"設定路由器的主 IP(發起方 IP)。在 olsrd 的正常執行時間內,此 IP 永遠不會改"
+"變。預設為 0.0.0.0,觸發使用第一個介面的 IP。"
 
 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 "
 "the first interface."
 msgstr ""
+"設定路由器的主 IP(發起方 IP)。在 olsrd 的正常執行時間內,此 IP 永遠不會改"
+"變。預設為 ::,觸發使用第一個介面的 IP。"
 
 msgid "Show IPv4"
-msgstr ""
+msgstr "顯示 IPv4"
 
 msgid "Show IPv6"
-msgstr ""
+msgstr "顯示 IPv6"
 
 msgid "Signal Noise Ratio in dB"
-msgstr ""
+msgstr "信噪比(dB)"
 
 msgid "SmartGW"
-msgstr ""
+msgstr "SmartGW"
 
 msgid "SmartGW announcements"
-msgstr ""
+msgstr "SmartGW 通告"
 
 msgid "SmartGateway is not configured on this system."
-msgstr ""
+msgstr "此係統上未配置 SmartGateway。"
 
 msgid "Source address"
-msgstr ""
+msgstr "源位址"
 
 msgid ""
 "Specifies the speed of the uplink in kilobits/s. First parameter is "
 "upstream, second parameter is downstream. Default is \"128 1024\"."
 msgstr ""
+"以千位元/秒為單位指定上行鏈路的速度。第一個引數是上傳,第二個引數是下載。預設"
+"值為“128 1024”。"
 
 msgid "Speed of the uplink"
-msgstr ""
+msgstr "上行鏈路的速度"
 
 msgid "State"
-msgstr ""
+msgstr "狀態"
 
 msgid "Status"
-msgstr ""
+msgstr "狀態"
 
 msgid "Still usable (20 > SNR > 5)"
-msgstr ""
+msgstr "仍可使用(20 > SNR > 5)"
 
 msgid "Still usable (4 < ETX < 10)"
-msgstr ""
+msgstr "仍可使用(4 < ETX < 10)"
 
 msgid "Success rate of packages received from the neighbour"
-msgstr ""
+msgstr "從鄰居收包的成功率"
 
 msgid "Success rate of packages sent to the neighbour"
-msgstr ""
+msgstr "向鄰居發包的成功率"
 
 msgid "TC"
-msgstr ""
+msgstr "TC"
 
 msgid "TC interval"
-msgstr ""
+msgstr "TC 間隔"
 
 msgid "TC validity time"
-msgstr ""
+msgstr "TC 有效時間"
 
 msgid "TOS value"
-msgstr ""
+msgstr "TOS 值"
 
 msgid ""
 "The OLSR daemon is an implementation of the Optimized Link State Routing "
@@ -595,19 +635,26 @@ msgid ""
 "device. Visit <a href='http://www.olsr.org'>olsrd.org</a> for help and "
 "documentation."
 msgstr ""
+"OLSR 守護程式是優化鏈路狀態路由(Optimized Link State Routing)協議的實現。因"
+"此,它允許在任何網路裝置上建立網狀路由。它可以在支援 ad-hoc 模式的任何 wifi "
+"卡上執行,當然也可以在任何乙太網裝置上執行。訪問 <a href='http://www.olsr."
+"org'>olsrd.org</a> 獲取幫助和文件。"
 
 msgid ""
 "The fixed willingness to use. If not set willingness will be calculated "
 "dynamically based on battery/power status. Default is \"3\"."
 msgstr ""
+"固定的使用意願值。如果未設定,則將根據電池/電源狀態動態計算意願值。預設值"
+"為“3”。"
 
 msgid "The interface OLSRd should serve."
-msgstr ""
+msgstr "OLSRd 應該服務的介面。"
 
 msgid ""
 "The port OLSR uses. This should usually stay at the IANA assigned port 698. "
 "It can have a value between 1 and 65535."
 msgstr ""
+"OLSR 使用的埠。通常應使用 IANA 分配的保留埠698。它的值可以在1到65535之間。"
 
 msgid ""
 "This can be used to signal the external IPv6 prefix of the uplink to the "
@@ -615,52 +662,57 @@ msgid ""
 "the IPv6 gateway without any kind of address translation. The maximum prefix "
 "length is 64 bits. Default is \"::/0\" (no prefix)."
 msgstr ""
+"這可用於向客戶端通知上行鏈路的外部 IPv6 字首。這可能可使客戶端更改其本地 "
+"IPv6 位址,以使用 IPv6 閘道器,而無需任何型別的位址轉換。字首長度最大為64位。"
+"默認為“::/0”(無字首)。"
 
 msgid "Timing and Validity"
-msgstr ""
+msgstr "時間和有效性"
 
 msgid "Topology"
-msgstr ""
+msgstr "拓撲"
 
 msgid ""
 "Type of service value for the IP header of control traffic. Default is "
 "\"16\"."
-msgstr ""
+msgstr "IP 流量控制頭的服務型別值。預設值為“16”。"
 
 msgid "Unable to connect to the OLSR daemon!"
-msgstr ""
+msgstr "無法連線到 OLSR 守護程式!"
 
 msgid "Uplink"
-msgstr ""
+msgstr "上行連結"
 
 msgid "Uplink uses NAT"
-msgstr ""
+msgstr "上行連結使用 NAT"
 
 msgid "Use hysteresis"
-msgstr ""
+msgstr "使用滯後"
 
 msgid "Validity Time"
-msgstr ""
+msgstr "有效時間"
 
 msgid "Version"
-msgstr ""
+msgstr "版本"
 
 msgid "Very good (ETX < 2)"
-msgstr ""
+msgstr "非常好(ETX < 2)"
 
 msgid "Very good (SNR > 30)"
-msgstr ""
+msgstr "非常好(SNR > 30)"
 
 msgid "WLAN"
-msgstr ""
+msgstr "WLAN"
 
 msgid ""
 "Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not "
 "work, please install it."
 msgstr ""
+"警告:未安裝 kmod-ipip。沒有 kmod-ipip,SmartGateway 將無法正常工作,請安裝"
+"它。"
 
 msgid "Weight"
-msgstr ""
+msgstr "體重"
 
 msgid ""
 "When multiple links exist between hosts the weight of interface is used to "
@@ -671,30 +723,38 @@ msgid ""
 "0. For any other value of LinkQualityLevel, the interface ETX value is used "
 "instead."
 msgstr ""
+"當主機之間存在多個鏈路時,介面權重用於確定要使用的鏈路。通常,權重由 olsrd 根"
+"據介面的特性自動計算,但您可以在此處指定固定值。Olsrd 將選擇值最低的連結。"
+"<br /><b>注意:</b>僅當 LinkQualityLevel 設定為0時才使用介面權重。"
+"LinkQualityLevel 的任何其他值都將使用介面的 ETX 值。"
 
 msgid ""
 "Which kind of uplink is exported to the other mesh nodes. An uplink is "
 "detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. "
 "Default setting is \"both\"."
 msgstr ""
+"將匯出哪種上行鏈路到其他網狀節點。通過查詢本地 HNA 0.0.0.0/0、::ffff:0:0/96 "
+"或 2000::/3 來檢測上行鏈路。預設設定為“兩者”。"
 
 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 "
 "setting is \"both\"."
 msgstr ""
+"將匯出哪種上行鏈路到其他網狀節點。通過查詢本地 HNA6 ::ffff:0:0/96 或 "
+"2000::/3 來檢測上行鏈路。預設設定為“兩者”。"
 
 msgid "Willingness"
-msgstr ""
+msgstr "意願值"
 
 msgid "Yellow"
-msgstr ""
+msgstr "黃色"
 
 msgid "no"
-msgstr ""
+msgstr ""
 
 msgid "yes"
-msgstr ""
+msgstr ""
 
 #~ msgid "Device"
-#~ msgstr "設å\82\99"
+#~ msgstr "è£\9dç½®"
index 2e48a469a1c88b4209a108d5bf66b95152fb540e..61592d0fac8472705256a94eec40e2a60d0895f1 100644 (file)
@@ -8,4 +8,47 @@ function index()
        entry( {"admin", "services", "openvpn"}, cbi("openvpn"), _("OpenVPN") )
        entry( {"admin", "services", "openvpn", "basic"},    cbi("openvpn-basic"),    nil ).leaf = true
        entry( {"admin", "services", "openvpn", "advanced"}, cbi("openvpn-advanced"), nil ).leaf = true
+       entry( {"admin", "services", "openvpn", "file"},     form("openvpn-file"),    nil ).leaf = true
+       entry( {"admin", "services", "openvpn", "upload"},   call("ovpn_upload"))
+end
+
+function ovpn_upload()
+       local fs     = require("nixio.fs")
+       local http   = require("luci.http")
+       local util   = require("luci.util")
+       local uci    = require("luci.model.uci").cursor()
+       local upload = http.formvalue("ovpn_file")
+       local name   = string.gsub(util.shellquote(http.formvalue("instance_name2")), "'", "")
+       local file   = "/etc/openvpn/" ..name.. ".ovpn"
+
+       if name and upload then
+               local fp
+
+               http.setfilehandler(
+                       function(meta, chunk, eof)
+                               local data = util.trim(chunk:gsub("\r\n", "\n")) .. "\n"
+                               data = util.trim(data:gsub("[\128-\255]", ""))
+
+                               if not fp and meta and meta.name == "ovpn_file" then
+                                       fp = io.open(file, "w")
+                               end
+                               if fp and data then
+                                       fp:write(data)
+                               end
+                               if fp and eof then
+                                       fp:close()
+                               end
+                       end
+               )
+
+               if fs.access(file) then
+                       if not uci:get_first("openvpn", name) then
+                               uci:set("openvpn", name, "openvpn")
+                               uci:set("openvpn", name, "config", file)
+                               uci:save("openvpn")
+                               uci:commit("openvpn")
+                       end
+               end
+       end
+       http.redirect(luci.dispatcher.build_url('admin/services/openvpn'))
 end
index 483860c8e93ec8ef866cc99df3a0add9fc82b221..6b6323e078878abc411de7a222a7d05aac2dc59d 100644 (file)
@@ -85,4 +85,3 @@ for _, option in ipairs(basicParams) do
 end
 
 return m
-
diff --git a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-file.lua
new file mode 100644 (file)
index 0000000..6878275
--- /dev/null
@@ -0,0 +1,61 @@
+-- Licensed to the public under the Apache License 2.0.
+
+local ip       = require("luci.ip")
+local fs       = require("nixio.fs")
+local util     = require("luci.util")
+local uci      = require("luci.model.uci").cursor()
+local cfg_file = uci:get("openvpn", arg[1], "config")
+
+local m = Map("openvpn")
+
+local p = m:section( SimpleSection )
+p.template = "openvpn/pageswitch"
+p.mode     = "file"
+p.instance = arg[1]
+
+if not cfg_file or not fs.access(cfg_file) then
+       local f = SimpleForm("error", nil, translatef("The OVPN config file (%s) could not be found, please check your configuration.", cfg_file or "n/a"))
+       f:append(Template("openvpn/ovpn_css"))
+       f.reset = false
+       f.submit = false
+       return m, f
+end
+
+if fs.stat(cfg_file).size >= 102400 then
+       f = SimpleForm("error", nil,
+               translatef("The size of the OVPN config file (%s) is too large for online editing in LuCI (&ge; 100 KB). ", cfg_file)
+               .. translate("Please edit this file directly in a terminal session."))
+       f:append(Template("openvpn/ovpn_css"))
+       f.reset = false
+       f.submit = false
+       return m, f
+end
+
+f = SimpleForm("cfg", nil)
+f:append(Template("openvpn/ovpn_css"))
+f.submit = translate("Save")
+f.reset = false
+
+s = f:section(SimpleSection, nil, translatef("This form allows you to modify the content of the OVPN config file (%s). ", cfg_file))
+file = s:option(TextValue, "data")
+file.datatype = "string"
+file.rows = 20
+file.rmempty = true
+
+function file.cfgvalue()
+       return fs.readfile(cfg_file) or ""
+end
+
+function file.write(self, section, data)
+       return fs.writefile(cfg_file, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function file.remove(self, section, value)
+       return fs.writefile(cfg_file, "")
+end
+
+function s.handle(self, state, data)
+       return true
+end
+
+return m, f
index e17aa4085bf28341a824301a5bfa823bcb9e21ef..8f4859c0e582149386774f838ef4021dd85615c3 100644 (file)
@@ -4,7 +4,7 @@
 local fs  = require "nixio.fs"
 local sys = require "luci.sys"
 local uci = require "luci.model.uci".cursor()
-local testfullps = luci.sys.exec("ps --help 2>&1 | grep BusyBox") --check which ps do we have
+local testfullps = sys.exec("ps --help 2>&1 | grep BusyBox") --check which ps do we have
 local psstring = (string.len(testfullps)>0) and  "ps w" or  "ps axfw" --set command we use to get pid
 
 local m = Map("openvpn", translate("OpenVPN"))
@@ -13,9 +13,16 @@ s.template = "cbi/tblsection"
 s.template_addremove = "openvpn/cbi-select-input-add"
 s.addremove = true
 s.add_select_options = { }
-s.extedit = luci.dispatcher.build_url(
-       "admin", "services", "openvpn", "basic", "%s"
-)
+
+file_cfg = s:option(DummyValue, "config")
+function file_cfg.cfgvalue(self, section)
+       local file_cfg = self.map:get(section, "config")
+       if file_cfg then
+               s.extedit = luci.dispatcher.build_url("admin", "services", "openvpn", "file", "%s")
+       else
+               s.extedit = luci.dispatcher.build_url("admin", "services", "openvpn", "basic", "%s")
+       end
+end
 
 uci:load("openvpn_recipes")
 uci:foreach( "openvpn_recipes", "openvpn_recipe",
@@ -61,10 +68,10 @@ function s.create(self, name)
                if s then
                        local options = uci:get_all("openvpn_recipes", recipe)
                        for k, v in pairs(options) do
-                               uci:set("openvpn", name, k, v)
+                               if k ~= "_role" and k ~= "_description" then
+                                       uci:set("openvpn", name, k, v)
+                               end
                        end
-                       uci:delete("openvpn", name, "_role")
-                       uci:delete("openvpn", name, "_description")
                        uci:save("openvpn")
                        luci.http.redirect( self.extedit:format(name) )
                end
@@ -75,7 +82,6 @@ function s.create(self, name)
        return 0
 end
 
-
 s:option( Flag, "enabled", translate("Enabled") )
 
 local active = s:option( DummyValue, "_active", translate("Started") )
@@ -106,28 +112,27 @@ function updown.cfgvalue(self, section)
 end
 function updown.write(self, section, value)
        if self.option == "stop" then
-               luci.sys.call("/etc/init.d/openvpn stop %s" % section)
+               sys.call("/etc/init.d/openvpn stop %s" % section)
        else
-               luci.sys.call("/etc/init.d/openvpn start %s" % section)
+               sys.call("/etc/init.d/openvpn start %s" % section)
        end
        luci.http.redirect( self.redirect )
 end
 
-
 local port = s:option( DummyValue, "port", translate("Port") )
 function port.cfgvalue(self, section)
        local val = AbstractValue.cfgvalue(self, section)
-       return val or "1194"
+       return val or "-"
 end
 
 local proto = s:option( DummyValue, "proto", translate("Protocol") )
 function proto.cfgvalue(self, section)
        local val = AbstractValue.cfgvalue(self, section)
-       return val or "udp"
+       return val or "-"
 end
 
-function m.on_after_commit(self,map)
-       require("luci.sys").call('/etc/init.d/openvpn reload')
+function m.on_after_apply(self,map)
+       sys.call('/etc/init.d/openvpn reload')
 end
 
 return m
index 0166de778e4c3d984dfd994a0c8f40a4a7b01b88..09da2eb22df799f9c423e673af0c7495c3decf8a 100644 (file)
-<div class="cbi-section-create">
-       <% if self.invalid_cts then -%><div class="cbi-section-error"><% end %>
-       <input type="text" class="cbi-section-create-name" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.text" />
-       <select class="cbi-section-create-name" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.select">
-       <%- for k, v in luci.util.kspairs(self.add_select_options) do %>
-               <option value="<%=k%>"><%=luci.util.pcdata(v)%></option>
-       <% end -%>
-       </select>
-       <input class="cbi-button cbi-button-add" type="submit" value="<%:Add%>" title="<%:Add%>" />
-       <% if self.invalid_cts then %><br /><%:Invalid%></div><% end %>
+
+<script type="text/javascript">
+//<![CDATA[
+       function vpn_add()
+       {
+               var vpn_name     = div_add.querySelector("#instance_name1").value.replace(/[^\x00-\x7F]|[\s!@#$%^&*()+=\[\]{};':"\\|,<>\/?]/g,'');
+               var vpn_template = div_add.querySelector("#instance_template").value;
+               var form         = document.getElementsByName('cbi')[0];
+
+               if (!vpn_name || !vpn_name.length)
+               {
+                       return info_message(vpn_output, "<%=pcdata(translate("The 'Name' field must not be empty!"))%>", 2000);
+               }
+
+               document.getElementById("instance_name1").value = vpn_name;
+               if (document.getElementById("cbi-openvpn-" + vpn_name) != null)
+               {
+                       return info_message(vpn_output, "<%=pcdata(translate("Instance with that name already exists!"))%>", 2000);
+               }
+
+               if (!vpn_template || !vpn_template.length)
+               {
+                       return info_message(vpn_output, "<%=pcdata(translate("Please select a valid VPN template!"))%>", 2000);
+               }
+
+               if (form)
+               {
+                       form.submit();
+               }
+       }
+
+       function vpn_upload()
+       {
+               var vpn_name = div_upload.querySelector("#instance_name2").value.replace(/[^\x00-\x7F]|[\s!@#$%^&*()+=\[\]{};':"\\|,<>\/?]/g,'');
+               var vpn_file = document.getElementById("ovpn_file").value;
+               var form     = document.getElementsByName('cbi')[0];
+
+               if (!vpn_name || !vpn_name.length)
+               {
+                       return info_message(vpn_output, "<%=pcdata(translate("The 'Name' field must not be empty!"))%>", 2000);
+               }
+
+               document.getElementById("instance_name2").value = vpn_name;
+               if (document.getElementById("cbi-openvpn-" + vpn_name) != null)
+               {
+                       return info_message(vpn_output, "<%=pcdata(translate("Instance with that name already exists!"))%>", 2000);
+               }
+
+               if (!vpn_file || !vpn_file.length)
+               {
+                       return info_message(vpn_output, "<%=pcdata(translate("Please select a valid OVPN config file to upload!"))%>", 2000);
+               }
+
+               if (form)
+               {
+                       form.enctype = 'multipart/form-data';
+                       form.action  = '<%=url('admin/services/openvpn/upload')%>';
+                       form.submit();
+               }
+       }
+
+       function info_message(output, msg, timeout)
+       {
+               timeout = timeout || 0;
+               output.innerHTML = '<em>' + msg + '</em>';
+               if (timeout > 0)
+               {
+                       setTimeout(function(){ output.innerHTML=""}, timeout);
+               }
+       }
+//]]>
+</script>
+
+<%+openvpn/ovpn_css%>
+
+<div class="cbi-section-node">
+       <div class="table cbi-section-table">
+               <h4><%:Template based configuration%></h4>
+               <div class="tr cbi-section-table-row" id="div_add">
+                       <div class="td">
+                               <input type="text" maxlength="20" placeholder="Instance name" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.text" id="instance_name1" />
+                       </div>
+                       <div class="td">
+                               <select id="instance_template" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.select">
+                                       <option value="" selected="selected" disabled="disabled"><%:Select template ...%></option>
+                                       <%- for k, v in luci.util.kspairs(self.add_select_options) do %>
+                                               <option value="<%=k%>"><%=luci.util.pcdata(v)%></option>
+                                       <% end -%>
+                               </select>
+                       </div>
+                       <div class="td">
+                               <input class="cbi-button cbi-button-add" type="submit" onclick="vpn_add(); return false;" value="<%:Add%>" title="<%:Add template based configuration%>" /><br />
+                       </div>
+               </div>
+               <h4><%:OVPN configuration file upload%></h4>
+               <div class="tr cbi-section-table-row" id="div_upload">
+                       <div class="td">
+                               <input type="text" maxlength="20" placeholder="Instance name" name="instance_name2" id="instance_name2" />
+                       </div>
+                       <div class="td">
+                               <input type="file" name="ovpn_file" id="ovpn_file" accept="application/x-openvpn-profile,.ovpn" />
+                       </div>
+                       <div class="td">
+                               <input class="cbi-button cbi-button-add" type="submit" onclick="vpn_upload(); return false;" value="<%:Upload%>" title="<%:Upload ovpn file%>" />
+                       </div>
+               </div>
+       </div>
+       <div class="vpn-output">
+               <span id="vpn_output"></span>
+       </div>
 </div>
diff --git a/applications/luci-app-openvpn/luasrc/view/openvpn/ovpn_css.htm b/applications/luci-app-openvpn/luasrc/view/openvpn/ovpn_css.htm
new file mode 100644 (file)
index 0000000..c7062b8
--- /dev/null
@@ -0,0 +1,44 @@
+<style type="text/css">
+       h4
+       {
+               white-space: nowrap;
+               border-bottom: 0px;
+               margin: 10px 5px 5px 5px;
+       }
+       .tr
+       {
+               border: 0px;
+               text-align: left;
+       }
+       .td
+       {
+               text-align: left;
+               border-top: 0px;
+               margin: 5px;
+       }
+       .vpn-output
+       {
+               box-shadow: none;
+               margin: 10px 5px 5px 5px;
+               color: #a22;
+       }
+       textarea
+       {
+               border: 1px solid #cccccc;
+               padding: 5px;
+               font-size: 12px;
+               font-family: monospace;
+               resize: none;
+               white-space: pre;
+               overflow-wrap: normal;
+               overflow-x: scroll;
+       }
+       a
+       {
+               line-height: 1.5;
+       }
+       hr
+       {
+               margin: 0.5em 0;
+       }
+</style>
index 8cb019b461046940282af3a1fbccc4b2650855dd..17beef0d39cc80b153e392776614e4135a3e9787 100644 (file)
@@ -4,25 +4,31 @@
  Licensed to the public under the Apache License 2.0.
 -%>
 
+<%+openvpn/ovpn_css%>
+
 <div class="cbi-section">
        <h3>
-               <a href="<%=url('admin/services/openvpn')%>"><%:Overview%></a> &raquo;
+               <a href="<%=url('admin/services/openvpn')%>"><%:Overview%></a> &#187;
                <%=luci.i18n.translatef("Instance \"%s\"", self.instance)%>
        </h3>
-
-       <% if self.mode == "basic" then %>
-               <a href="<%=url('admin/services/openvpn/advanced', self.instance, "Service")%>"><%:Switch to advanced configuration »%></a>
-       <% else %>
-               <a href="<%=url('admin/services/openvpn/basic', self.instance)%>"><%:« Switch to basic configuration%></a>
-               <hr style="margin:0.5em 0" />
+       <% if self.mode == "file" then %>
+               <a href="<%=url('admin/services/openvpn/basic', self.instance)%>"><%:Switch to basic configuration%> &#187;</a><p/>
+               <a href="<%=url('admin/services/openvpn/advanced', self.instance, "Service")%>"><%:Switch to advanced configuration%> &#187;</a>
+               <hr />
+       <% elseif self.mode == "basic" then %>
+               <a href="<%=url('admin/services/openvpn/advanced', self.instance, "Service")%>"><%:Switch to advanced configuration%> &#187;</a><p/>
+               <a href="<%=url('admin/services/openvpn/file', self.instance)%>"><%:Switch to file based configuration%> &#187;</a>
+               <hr />
+       <% elseif self.mode == "advanced" then %>
+               <a href="<%=url('admin/services/openvpn/basic', self.instance)%>"><%:Switch to basic configuration%> &#187;</a><p/>
+               <a href="<%=url('admin/services/openvpn/file', self.instance)%>"><%:Switch to file based configuration%> &#187;</a>
+               <hr />
                <%:Configuration category%>:
                <% for i, c in ipairs(self.categories) do %>
                        <% if c == self.category then %>
                                <strong><%=translate(c)%></strong>
                        <% else %>
-                               <a href="<%=luci.dispatcher.build_url(
-                                       "admin", "services", "openvpn", "advanced", self.instance, c
-                               )%>"><%=translate(c)%></a>
+                               <a href="<%=luci.dispatcher.build_url("admin", "services", "openvpn", "advanced", self.instance, c)%>"><%=translate(c)%></a>
                        <% end %>
                        <% if next(self.categories, i) then %>|<% end %>
                <% end %>
index 90754c2bc1a7989d02f0b84a9174a71b239aae80..722af19e21f16808b8e746a71ae141899f971882 100644 (file)
@@ -544,7 +544,7 @@ function bl.validate(self, value)
        elseif v < 1 or v > 4096 then
                return nil, err_tab_access(self.title_base, translate("Value not between 1 and 4096") )
        elseif v == self.default then
-               return ""       -- dont need to save default
+               return ""       -- don't need to save default
        end
        return value
 end
@@ -721,7 +721,7 @@ function st.validate(self, value)
        elseif v < 1 then
                return nil, err_tab_misc(self.title_base, translate("Value not greater 0 or empty") )
        elseif v == self.default then
-               return ""       -- dont need to save default
+               return ""       -- don't need to save default
        end
        return value
 end
@@ -740,7 +740,7 @@ function mcc.validate(self, value)
        elseif v < 1 then
                return nil, err_tab_misc(self.title_base, translate("Value not greater 0 or empty") )
        elseif v == self.default then
-               return ""       -- dont need to save default
+               return ""       -- don't need to save default
        end
        return value
 end
index f49abac4e996b0d393baf73328907d46ccea3a15..1ee9996bc77ee9f801d64ac36fd83f84c2e78a28 100644 (file)
@@ -6,7 +6,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2018-08-07 20:10+0800\n"
+"PO-Revision-Date: 2018-10-01 11:12+0800\n"
 "Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
 "Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_CN\n"
@@ -26,10 +26,10 @@ msgid "Allowed users"
 msgstr "允许用户"
 
 msgid "Apple Time-machine share"
-msgstr ""
+msgstr "Apple Time-machine 共享"
 
 msgid "Browse-able"
-msgstr ""
+msgstr "可浏览"
 
 msgid "Create mask"
 msgstr "创建权限掩码"
@@ -56,15 +56,15 @@ msgid "Edit the template that is used for generating the samba configuration."
 msgstr "编辑用来生成 samba 设置的模板"
 
 msgid "Enable macOS compatible shares"
-msgstr ""
+msgstr "启用 macOS 兼容共享"
 
 msgid ""
 "Enables Apple's AAPL extension globally and adds macOS compatibility options "
 "to all shares."
-msgstr ""
+msgstr "全局启用 Apple 的 AAPL 扩展,并为所有共享添加 macOS 兼容性选项。"
 
 msgid "Force Root"
-msgstr ""
+msgstr "强制 Root"
 
 msgid "General Settings"
 msgstr "基本设置"
@@ -111,7 +111,7 @@ msgstr ""
 "符(“|”)包围的值不应更改。它们将从“常规设置”标签中获取其值。"
 
 msgid "Time-machine size in GB"
-msgstr ""
+msgstr "Time-machine 大小(GB)"
 
 msgid "Vfs objects"
 msgstr "VFS 对象"
index ae962f9e82e9dafb09e038f2be52128d46967a8d..6121a74119eb22e05513e9adadaca53a492ac08f 100644 (file)
@@ -6,7 +6,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2018-08-07 20:10+0800\n"
+"PO-Revision-Date: 2018-10-01 11:12+0800\n"
 "Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
 "Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_TW\n"
@@ -26,10 +26,10 @@ msgid "Allowed users"
 msgstr "允許使用者"
 
 msgid "Apple Time-machine share"
-msgstr ""
+msgstr "Apple Time-machine 共享"
 
 msgid "Browse-able"
-msgstr ""
+msgstr "可瀏覽"
 
 msgid "Create mask"
 msgstr "建立權限掩碼"
@@ -56,15 +56,15 @@ msgid "Edit the template that is used for generating the samba configuration."
 msgstr "編輯用來生成 samba 設定的模板"
 
 msgid "Enable macOS compatible shares"
-msgstr ""
+msgstr "啟用 macOS 相容共享"
 
 msgid ""
 "Enables Apple's AAPL extension globally and adds macOS compatibility options "
 "to all shares."
-msgstr ""
+msgstr "全域性啟用 Apple 的 AAPL 擴充套件,併為所有共享新增 macOS 相容性選項。"
 
 msgid "Force Root"
-msgstr ""
+msgstr "強制 Root"
 
 msgid "General Settings"
 msgstr "基本設定"
@@ -111,7 +111,7 @@ msgstr ""
 "符(“|”)包圍的值不應更改。它們將從“常規設定”標籤中獲取其值。"
 
 msgid "Time-machine size in GB"
-msgstr ""
+msgstr "Time-machine 大小(GB)"
 
 msgid "Vfs objects"
 msgstr "VFS 物件"
index 71c66562e153bdba4e2aa35e4354601e90c7e3c2..a0d0079278442ecbdc4c5344bda2eae60e41407d 100644 (file)
@@ -9,7 +9,7 @@ local m, s
 m = Map("shadowsocks-libev",
        translate("Remote Servers"),
        translate("Definition of remote shadowsocks servers.  \
-                       Disable any of them will also disable instances refering to it."))
+                       Disable any of them will also disable instances referring to it."))
 
 local sname = arg[1]
 if sname then
diff --git a/applications/luci-app-shadowsocks-libev/po/templates/shadowsocks-libev.pot b/applications/luci-app-shadowsocks-libev/po/templates/shadowsocks-libev.pot
new file mode 100644 (file)
index 0000000..8c9b3fc
--- /dev/null
@@ -0,0 +1,241 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "<hidden>"
+msgstr ""
+
+msgid "Add"
+msgstr ""
+
+msgid "Advanced Settings"
+msgstr ""
+
+msgid "Bind address"
+msgstr ""
+
+msgid "Bypass ss-redir for packets with dst address in this list"
+msgstr ""
+
+msgid "Bypass ss-redir for packets with src address in this list"
+msgstr ""
+
+msgid ""
+"Continue to have dst address checked for packets with src address in this "
+"list"
+msgstr ""
+
+msgid "Default action for locally generated TCP packets"
+msgstr ""
+
+msgid ""
+"Default action for packets whose dst address do not match any of the dst ip "
+"list"
+msgstr ""
+
+msgid ""
+"Default action for packets whose src address do not match any of the src ip/"
+"net list"
+msgstr ""
+
+msgid ""
+"Definition of remote shadowsocks servers. Disable any of them will also "
+"disable instances referring to it."
+msgstr ""
+
+msgid "Destination Settings"
+msgstr ""
+
+msgid "Disable"
+msgstr ""
+
+msgid "Disabled"
+msgstr ""
+
+msgid "Dst default"
+msgstr ""
+
+msgid "Dst ip/net bypass"
+msgstr ""
+
+msgid "Dst ip/net bypass file"
+msgstr ""
+
+msgid "Dst ip/net forward"
+msgstr ""
+
+msgid "Dst ip/net forward file"
+msgstr ""
+
+msgid "Enable SO_REUSEPORT"
+msgstr ""
+
+msgid "Enable TCP Fast Open"
+msgstr ""
+
+msgid "Enable TCP_NODELAY"
+msgstr ""
+
+msgid "Enable/Disable"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
+msgid "Extra arguments"
+msgstr ""
+
+msgid ""
+"File containing ip/net for the purposes as with <em>Dst ip/net bypass</em>"
+msgstr ""
+
+msgid ""
+"File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"
+msgstr ""
+
+msgid "Forward recentrst"
+msgstr ""
+
+msgid ""
+"Forward those packets whose dst have recently sent to us multiple tcp-rst"
+msgstr ""
+
+msgid "Forward through ss-redir for packets with dst address in this list"
+msgstr ""
+
+msgid "Forward through ss-redir for packets with src address in this list"
+msgstr ""
+
+msgid "General Settings"
+msgstr ""
+
+msgid "IPv6 First"
+msgstr ""
+
+msgid "Ingress interfaces"
+msgstr ""
+
+msgid "Install package %q"
+msgstr ""
+
+msgid "Install package iptables-mod-conntrack-extra"
+msgstr ""
+
+msgid ""
+"Instances of shadowsocks-libev components, e.g. ss-local, ss-redir, ss-"
+"tunnel, ss-server, etc. To enable an instance it is required to enable both "
+"the instance itself and the remote server it refers to."
+msgstr ""
+
+msgid "Key (base64 encoding)"
+msgstr ""
+
+msgid "Local Instances"
+msgstr ""
+
+msgid "Local address"
+msgstr ""
+
+msgid "Local port"
+msgstr ""
+
+msgid "Local-out default"
+msgstr ""
+
+msgid "MTU"
+msgstr ""
+
+msgid "Method"
+msgstr ""
+
+msgid "Mode of operation"
+msgstr ""
+
+msgid "Name"
+msgstr ""
+
+msgid ""
+"On this page you can configure how traffics are to be forwarded to ss-redir "
+"instances. If enabled, packets will first have their src ip addresses "
+"checked against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, "
+"<em>Src ip/net checkdst</em> and if none matches <em>Src default</em> will "
+"give the default action to be taken. If the prior check results in action "
+"<em>checkdst</em>, packets will continue to have their dst addresses checked."
+msgstr ""
+
+msgid "Only apply rules on packets from these network interfaces"
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid "Package is not installed"
+msgstr ""
+
+msgid "Passes additional arguments to iptables. Use with care!"
+msgstr ""
+
+msgid "Password"
+msgstr ""
+
+msgid "Prefer IPv6 addresses when resolving names"
+msgstr ""
+
+msgid "Redir Rules"
+msgstr ""
+
+msgid "Remote Servers"
+msgstr ""
+
+msgid "Remote server"
+msgstr ""
+
+msgid "Run as"
+msgstr ""
+
+msgid "Running"
+msgstr ""
+
+msgid "Server"
+msgstr ""
+
+msgid "Server port"
+msgstr ""
+
+msgid "Shadowsocks-libev"
+msgstr ""
+
+msgid "Source Settings"
+msgstr ""
+
+msgid "Src default"
+msgstr ""
+
+msgid "Src ip/net bypass"
+msgstr ""
+
+msgid "Src ip/net checkdst"
+msgstr ""
+
+msgid "Src ip/net forward"
+msgstr ""
+
+msgid "The address ss-server will initiate connection from"
+msgstr ""
+
+msgid "The address ss-tunnel will forward traffic to"
+msgstr ""
+
+msgid "Timeout (sec)"
+msgstr ""
+
+msgid "Tunnel address"
+msgstr ""
+
+msgid "Verbose"
+msgstr ""
+
+msgid "ss-redir for TCP"
+msgstr ""
+
+msgid "ss-redir for UDP"
+msgstr ""
index 4d1c140b0309052a67df39701167290b9ba0e14a..0bbedaa9dee97de33fffe571bb7b06cd108bc895 100644 (file)
@@ -5,5 +5,5 @@
 module "luci.controller.siitwizard"
 
 function index()
-       entry({"admin", "network", "siitwizard"}, form("siitwizard"), "SIIT 4over6 assistent", 99)
+       entry({"admin", "network", "siitwizard"}, form("siitwizard"), "SIIT 4over6 assistant", 99)
 end
index 0d738326a070acc25647745ddad0885bc475b663..f3501e5d724b5b338136f6ce2d2470005a4b5a05 100644 (file)
@@ -167,7 +167,7 @@ function mode.write(self, section, value)
        --      * wl0 gets an ipv6 address, in this case the fdca:ffee:babe::1:1/64
        --      * we do a ::ffff:ffff:0/96 route into siit0, so everything from 6mesh goes into translation.
        --      * an HNA6 of ::ffff:ffff:0:0/96 announces the mapped 0.0.0.0/0 ipv4 space.
-       --      * MTU on WAN, LAN down to 1400, ipv6 headers are slighly larger.
+       --      * MTU on WAN, LAN down to 1400, ipv6 headers are slightly larger.
 
        if value == "gateway" then
 
@@ -342,9 +342,9 @@ function mode.write(self, section, value)
        -- txtinfo v6 & olsrd nameservice
        uci:foreach("olsrd", "LoadPlugin",
                function(s)
-                       if s.library == "olsrd_txtinfo.so.0.1" then
+                       if s.library == "olsrd_txtinfo" then
                                uci:set("olsrd", s['.name'], "accept", "::1")
-                       elseif s.library == "olsrd_nameservice.so.0.3" then
+                       elseif s.library == "olsrd_nameservice" then
                                uci:set("olsrd", s['.name'], "name", hostname)
                        end
                end)
index b926fd08375bc61632e626a68e15d236d496ec23..11a2364ffebce0e1daff8257ee777aafb3e7255a 100644 (file)
@@ -104,6 +104,9 @@ msgstr "简单 AdBlock 设置"
 msgid "Some output"
 msgstr "一些输出"
 
+msgid "Start Simple Adblock service"
+msgstr ""
+
 msgid "Stop the download if it is stalled for set number of seconds"
 msgstr "如果下载停滞设定的秒数后,则停止下载"
 
index bbeda42c290e2a3038b2a0a663036b4360544419..c4c31aa07114a3fb0433c25c0e1575c6aa4a3420 100644 (file)
@@ -104,6 +104,9 @@ msgstr "簡單 AdBlock 設定"
 msgid "Some output"
 msgstr "一些輸出"
 
+msgid "Start Simple Adblock service"
+msgstr ""
+
 msgid "Stop the download if it is stalled for set number of seconds"
 msgstr "如果下載停滯設定的秒數後,則停止下載"
 
index b3c0f2660be5d553bf5950016d9b3c1ed40ef8f2..cc6951e171d9d17cc5a3a6344c6c144f4473102a 100644 (file)
@@ -26,11 +26,12 @@ s.anonymous = true
 p = s:option(Value, "agentaddress", "The address the agent should listen on",
        [[Eg: UDP:161, or UDP:10.5.4.3:161 to only listen on a given interface]])
 
-s = m:section(TypedSection, "agentx", "AgentX settings")
+s = m:section(TypedSection, "agentx", "AgentX settings", "Delete this section to disable agentx")
 s.anonymous = true
 p = s:option(Value, "agentxsocket", "The address the agent should allow agentX connections to",
     [[This is only necessary if you have subagents using the agentX socket protocol.
-    Note that agentX requires TCP transport]])
+    Eg: /var/run/agentx.sock]])
+s.addremove=true
 
 s = m:section(TypedSection, "com2sec", "com2sec security")
 p = s:option(Value, "secname", "secname")
index 5740aa5f7c4364923bbd18b2822bb15204838885..46537248710962768495fe91585823409740d3d0 100644 (file)
@@ -7,7 +7,7 @@
 include $(TOPDIR)/rules.mk
 
 LUCI_TITLE:=Freifunk DHCP-Splash application
-LUCI_DEPENDS:=+luci-lib-nixio +tc +kmod-sched +iptables-mod-nat-extra +iptables-mod-ipopt
+LUCI_DEPENDS:=+luci-lib-nixio +luci-lib-iptparser +tc +kmod-sched +iptables-mod-nat-extra +iptables-mod-ipopt
 
 define Package/luci-app-splash/conffiles
 /etc/config/luci_splash
index c09d2e0f78e62b0749785ffae887b8d90aca073b..bd88e8a6e274570a5672276900397d60e77a2629 100644 (file)
@@ -2,7 +2,7 @@
 
 require("luci.model.uci")
 
-m = Map("luci_splash", translate("Client-Splash"), translate("Client-Splash is a hotspot authentification system for wireless mesh networks."))
+m = Map("luci_splash", translate("Client-Splash"), translate("Client-Splash is a hotspot authentication system for wireless mesh networks."))
 
 s = m:section(NamedSection, "general", "core", translate("General"))
 s.addremove = false
index 8d84463ef7f1aac32bae87f139c81cfc3965c76c..64c326ff3ad2dd4529000d3fc306ba4020d50c96 100644 (file)
@@ -81,7 +81,7 @@ if has_custom_splash then
        is limited and because of this we ask you not to do any of the following:%></p>
        <ul>
                <li><%:use filesharing applications on this network%></li>
-               <li><%:waste bandwidth with unneccesary downloads or streams%></li>
+               <li><%:waste bandwidth with unnecessary downloads or streams%></li>
                <li><%:perform any kind of illegal activities%></li>
        </ul>
        <br />
index 3afef1a7b3f22213d79dbfd469995d4047f25b58..a71742d0c320744703e6348f20ed4125804618d1 100644 (file)
@@ -71,7 +71,7 @@ msgid "Client-Splash"
 msgstr ""
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 
@@ -323,7 +323,7 @@ msgstr "desconegut"
 msgid "use filesharing applications on this network"
 msgstr "utilitza aplicacions de compartició de fitxers en aquesta xarxa"
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr "malgasta l'amplada de banda amb baixades o corrents innecessaris"
 
 msgid "whitelisted"
index 671afd79e267eb0c2ec02f7d896cebe36b8b08ce..114eaf4e3d047616a9f69aa05249216aa022b370 100644 (file)
@@ -79,7 +79,7 @@ msgid "Client-Splash"
 msgstr "Client-Splash"
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 
@@ -324,7 +324,7 @@ msgstr "neznámý"
 msgid "use filesharing applications on this network"
 msgstr "používat aplikace na sdílení souborů v této síti"
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr "plýtvat šířkou pásma nepotřebným stahováním nebo streamy"
 
 msgid "whitelisted"
index 8b1cd9a5ece92b5df75c53779a53a5f1fc20c618..592012302e91da9b6b9335a674d69441ba3ad14f 100644 (file)
@@ -86,7 +86,7 @@ msgid "Client-Splash"
 msgstr "Client-Splash"
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 "Client-Splash ist ein Hotspot-Authentifizierungssystem für Freifunk und "
@@ -368,7 +368,7 @@ msgstr "Unbekannt"
 msgid "use filesharing applications on this network"
 msgstr "Filesharing betreiben"
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr "Bandbreite durch unnötige Downloads oder Streams zu verschwenden."
 
 msgid "whitelisted"
index df90478f71eaa3497abcb64f1a8c406f9d6a90db..1d09bbb16d59bec0123a5bfc427f632b4dece9c0 100644 (file)
@@ -68,7 +68,7 @@ msgid "Client-Splash"
 msgstr ""
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 
@@ -300,7 +300,7 @@ msgstr ""
 msgid "use filesharing applications on this network"
 msgstr ""
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr ""
 
 msgid "whitelisted"
index 615be16b23c3eb08bfd0079d4a75ca1829fc399d..734e7d89c0cfdff423c12aa64b7866b2945a1491 100644 (file)
@@ -53,7 +53,7 @@ msgid "Client-Splash"
 msgstr ""
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 
@@ -285,7 +285,7 @@ msgstr ""
 msgid "use filesharing applications on this network"
 msgstr ""
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr ""
 
 msgid "whitelisted"
index 836352ea9b5343dbe414effd67480e655b5c45d9..360faa7b9e19a1540d0ee2dca5614647e15e9ec5 100644 (file)
@@ -84,7 +84,7 @@ msgid "Client-Splash"
 msgstr "Cliente-Splash"
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr "Cliente-Splash es un sistema de autentificación para redes mesh."
 
@@ -350,7 +350,7 @@ msgstr "desconocido"
 msgid "use filesharing applications on this network"
 msgstr "usar aplicaciones de compartición de ficheros en esta red"
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr "malgastar ancho de banda con descargas innecesarias o multimedia"
 
 msgid "whitelisted"
index e525ab316cf8eda021c935e113bba5fa4007e787..96195c9001ea5989777d613513a179285b3b9dd4 100644 (file)
@@ -69,7 +69,7 @@ msgid "Client-Splash"
 msgstr "Client-Splash"
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 "Client-Splash est un système d'authentification de HotSpot pour des réseaux "
@@ -308,7 +308,7 @@ msgstr "inconnu"
 msgid "use filesharing applications on this network"
 msgstr ""
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr ""
 
 msgid "whitelisted"
index bf7e2f07453e61211c0b74a85f87656285ccc806..eb1275966362d8f3553a96ccb6a70de8931d363a 100644 (file)
@@ -71,7 +71,7 @@ msgid "Client-Splash"
 msgstr ""
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 
@@ -309,7 +309,7 @@ msgstr "לא ידוע"
 msgid "use filesharing applications on this network"
 msgstr "השתמש בתוכנות לשיתוף קבצים ברשת זו."
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr "לבזבז רוחב פס עם הורדות או שידורים מיותרים"
 
 msgid "whitelisted"
index f2c7da14ab50941f3ae63dd0eb0a2bd1b893846e..bd66926da64a3187cb2bb6412d0273c5de123e6d 100644 (file)
@@ -64,7 +64,7 @@ msgid "Client-Splash"
 msgstr ""
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 
@@ -296,7 +296,7 @@ msgstr ""
 msgid "use filesharing applications on this network"
 msgstr ""
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr ""
 
 msgid "whitelisted"
index 8964b6c3fb50d1aee88a7e5faa4328bbf506731a..870e5f8614644b1dd91479ba7f0d930604a0a934 100644 (file)
@@ -79,7 +79,7 @@ msgid "Client-Splash"
 msgstr "Client-Splash"
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 "Client-Splash è un sistema di autenticazione hotspot per le reti mesh "
@@ -333,7 +333,7 @@ msgstr "sconosciuto"
 msgid "use filesharing applications on this network"
 msgstr "utilizzare le applicazioni di filesharing su questa rete"
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr "sprecate banda con download o flussi inutili"
 
 msgid "whitelisted"
index 615be16b23c3eb08bfd0079d4a75ca1829fc399d..734e7d89c0cfdff423c12aa64b7866b2945a1491 100644 (file)
@@ -53,7 +53,7 @@ msgid "Client-Splash"
 msgstr ""
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 
@@ -285,7 +285,7 @@ msgstr ""
 msgid "use filesharing applications on this network"
 msgstr ""
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr ""
 
 msgid "whitelisted"
index 615be16b23c3eb08bfd0079d4a75ca1829fc399d..734e7d89c0cfdff423c12aa64b7866b2945a1491 100644 (file)
@@ -53,7 +53,7 @@ msgid "Client-Splash"
 msgstr ""
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 
@@ -285,7 +285,7 @@ msgstr ""
 msgid "use filesharing applications on this network"
 msgstr ""
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr ""
 
 msgid "whitelisted"
index 615be16b23c3eb08bfd0079d4a75ca1829fc399d..734e7d89c0cfdff423c12aa64b7866b2945a1491 100644 (file)
@@ -53,7 +53,7 @@ msgid "Client-Splash"
 msgstr ""
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 
@@ -285,7 +285,7 @@ msgstr ""
 msgid "use filesharing applications on this network"
 msgstr ""
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr ""
 
 msgid "whitelisted"
index 68568848f047e13d79371f07f1d9989893564d05..660f2db8e647407cb3fe08936566891764032483 100644 (file)
@@ -87,7 +87,7 @@ msgstr "Splash kliencki"
 
 # nie ma słowa "autentykacja" - to brzydka kalka z angielskiego. 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 "Klient Splash - sposób uwierzytelniania użytkowników dla sieci WiFi oparty o "
@@ -359,7 +359,7 @@ msgid "use filesharing applications on this network"
 msgstr "używał programów do dzielenia się plikami w tej sieci"
 
 # j.w.
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr "marnował transfer na niepotrzebne pobieranie plików i strumieni"
 
 msgid "whitelisted"
index cbdc8016c1b9fc6cac05db96b9a74cf33c398c15..c839a74a421b45f37acdf399ec043a648dde312a 100644 (file)
@@ -84,7 +84,7 @@ msgid "Client-Splash"
 msgstr "Client-Splash"
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 "Client-Splash é um sistema de autenticação de ponto de acesso para redes sem "
@@ -363,7 +363,7 @@ msgstr "desconhecido"
 msgid "use filesharing applications on this network"
 msgstr "usar aplicativos de compartilhamento de arquivos nesta rede"
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr "usar banda com fluxos ou arquivos baixados não necessários"
 
 msgid "whitelisted"
index 05bee4f323d421f7053a60827c4f17f02b46538f..ff99eb3bd901dc2706c17845889e41dd31e8655a 100644 (file)
@@ -68,7 +68,7 @@ msgid "Client-Splash"
 msgstr ""
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 
@@ -302,7 +302,7 @@ msgstr "desconhecido"
 msgid "use filesharing applications on this network"
 msgstr ""
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr ""
 
 msgid "whitelisted"
index 615be16b23c3eb08bfd0079d4a75ca1829fc399d..734e7d89c0cfdff423c12aa64b7866b2945a1491 100644 (file)
@@ -53,7 +53,7 @@ msgid "Client-Splash"
 msgstr ""
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 
@@ -285,7 +285,7 @@ msgstr ""
 msgid "use filesharing applications on this network"
 msgstr ""
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr ""
 
 msgid "whitelisted"
index 24151654a608b5cd6b205d007d9d146321fce412..655cd9aa981b656d25bd544e647149f7ba3b31b2 100644 (file)
@@ -88,8 +88,7 @@ msgid "Client-Splash"
 msgstr "Splash-Клиент"
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
-"networks."
+"Client-Splash is a hotspot authentication system for wireless mesh networks."
 msgstr ""
 "Splash-Клиент - это система аутентификации точек доступа для беспроводных "
 "Mesh сетей."
@@ -359,7 +358,7 @@ msgstr "неизвестно"
 msgid "use filesharing applications on this network"
 msgstr "использование файлообменных приложений в этой сети"
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr "тратить пропускную способность на ненужные загрузки или потоки"
 
 msgid "whitelisted"
index e9dd448ec5e34b334bb8e373798e3809a5869bb4..6372baf63b85a04dfb6ae1a7e8026bda0074c81c 100644 (file)
@@ -64,7 +64,7 @@ msgid "Client-Splash"
 msgstr ""
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 
@@ -296,7 +296,7 @@ msgstr ""
 msgid "use filesharing applications on this network"
 msgstr ""
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr ""
 
 msgid "whitelisted"
index a5ebcb7efeb78c7bbeb28a571c44cb811b2fc10a..3cb612180821375802553ce598b5b05f6fd6b0d3 100644 (file)
@@ -66,8 +66,7 @@ msgid "Client-Splash"
 msgstr ""
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
-"networks."
+"Client-Splash is a hotspot authentication system for wireless mesh networks."
 msgstr ""
 
 msgid ""
@@ -313,7 +312,7 @@ msgstr "okänd"
 msgid "use filesharing applications on this network"
 msgstr "använd fildelningsapplikationer i det här nätverket"
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr "slösa bandbredd med onödiga nerladdningar eller strömmar"
 
 msgid "whitelisted"
index f29b73691504ae27de69115f56d250eed009fd5c..70a3f6dceeb3a32145101af42ed38dddeb80bf4a 100644 (file)
@@ -56,8 +56,7 @@ msgid "Client-Splash"
 msgstr ""
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
-"networks."
+"Client-Splash is a hotspot authentication system for wireless mesh networks."
 msgstr ""
 
 msgid ""
@@ -288,7 +287,7 @@ msgstr ""
 msgid "use filesharing applications on this network"
 msgstr ""
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr ""
 
 msgid "whitelisted"
index 03fa7b3b744c2978fd8d861f3d8ae925e97e4539..04faa37ca31d000a9092f97d44109035f0c80fb9 100644 (file)
@@ -64,7 +64,7 @@ msgid "Client-Splash"
 msgstr ""
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 
@@ -296,7 +296,7 @@ msgstr ""
 msgid "use filesharing applications on this network"
 msgstr ""
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr ""
 
 msgid "whitelisted"
index 2364c63d41cde6d9ab3a303b912dbfb57640ce8f..2fd76fd4390b286b30d2c0d445d97120c931544b 100644 (file)
@@ -65,7 +65,7 @@ msgid "Client-Splash"
 msgstr ""
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 
@@ -297,7 +297,7 @@ msgstr ""
 msgid "use filesharing applications on this network"
 msgstr ""
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr ""
 
 msgid "whitelisted"
index 615be16b23c3eb08bfd0079d4a75ca1829fc399d..734e7d89c0cfdff423c12aa64b7866b2945a1491 100644 (file)
@@ -53,7 +53,7 @@ msgid "Client-Splash"
 msgstr ""
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
 msgstr ""
 
@@ -285,7 +285,7 @@ msgstr ""
 msgid "use filesharing applications on this network"
 msgstr ""
 
-msgid "waste bandwidth with unneccesary downloads or streams"
+msgid "waste bandwidth with unnecessary downloads or streams"
 msgstr ""
 
 msgid "whitelisted"
index 4ad740470191dcae5c02348c5ddaead602895ebe..773e5d65e73976b663876bfd43ad6bafef4c8258 100644 (file)
@@ -1,20 +1,23 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2018.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2012-06-28 08:58+0200\n"
-"PO-Revision-Date: 2014-07-23 02:07+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2018-10-01 11:38+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\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: Gtranslator 2.91.7\n"
 
 msgid "Accept"
-msgstr "接"
+msgstr "接"
 
 msgid ""
 "Access to the internet might be possible nevertheless, because some "
@@ -22,97 +25,107 @@ msgid ""
 "few connections are shared between all users. That means available bandwidth "
 "is limited and because of this we ask you not to do any of the following:"
 msgstr ""
+"尽管如此,您仍然可以访问互联网,因为该项目的一些活动人士愿意分享他们的私人互"
+"联网连接。所有用户之间共享这些连接。这意味着可用带宽有限,因此我们要求您不要"
+"执行以下任何操作:"
 
 msgid ""
 "Access to the network is not guaranteed. It can be interrupted at any time "
 "without notice for any reason, for certain devices, and/or may be blocked "
 "for certain users."
 msgstr ""
+"网络访问没有任何保证。对于某些设备,它可以因任何原因随时中断而不加以提前通"
+"知,及/或可能被某些用户阻止。"
 
 msgid "Active Clients"
 msgstr "活动的客户端"
 
 msgid "Allowed hosts/subnets"
-msgstr "允许的 主机/掩码"
+msgstr "允许的主机/掩码"
 
 msgid ""
 "As an alternative to editing the complete splash text you can also just "
 "include some custom text in the default splash page by entering it here."
 msgstr ""
+"除了编辑完整的 splash 文本,您还可以在此处输入,向默认启动页面加入一些自定义"
+"文本。"
 
 msgid ""
 "Bandwidth limit for clients is only activated when both up- and download "
 "limit are set. Use a value of 0 here to completely disable this limitation. "
 "Whitelisted clients are not limited."
 msgstr ""
-"只有当 上传和下载的限制都设置的时候对客户端的带宽限制才会生效。在这里使用0 可"
-"以完全禁用此限制。白名单客户端不受限制。"
+"仅当设置了上传和下载限制时,才会激活客户端带宽限制。在此处使用值0可完全禁用此"
+"限制。白名单客户不受限制。"
 
 # Something wwrong?
 msgid ""
 "Become an active member of this community and help by operating your own node"
-msgstr "成为这个社区的一个活跃成员并且运营您自己的节点以帮助别人。"
+msgstr "成为此社区的活跃成员,并通过操作您自己的节点提供帮助"
 
 msgid "Blacklist"
 msgstr "黑名单"
 
 msgid "Blocked"
-msgstr "锁定"
+msgstr "封锁"
 
 msgid ""
 "By accepting these rules you can use this network for %s hour(s). After this "
 "time you need to accept these rules again."
 msgstr ""
+"接受这些规则,您可以使用此网络 %s 小时。在此之后,您需要再次接受这些规则。"
 
 msgid "Clearance time"
 msgstr "清理时间"
 
 msgid "Client-Splash"
-msgstr "客户端弹窗"
+msgstr "Client-Splash"
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
-msgstr "Client-Splash是无线MESH网络的一个热点认证系统"
+msgstr "Client-Splash 是无线网状网络的一个热点认证系统。"
 
 msgid ""
 "Clients are redirected to this page after they have accepted the splash. If "
 "this is left empty they are redirected to the page they had requested."
 msgstr ""
+"客户端连接到 splash 后将会重定向到此页面。如果留空,则会重定向到他们请求的页"
+"面。"
 
 msgid "Clients download speed is limited to this value (kbyte/s)"
-msgstr "客户端下载速度限制为此值(kbyte/s)"
+msgstr "客户端下载速度限制(kbyte/s)"
 
 msgid ""
 "Clients that have accepted the splash are allowed to use the network for "
 "that many hours."
-msgstr "已接受Splash的客户端允许使用这个网络N小时"
+msgstr "已接受 splash 的客户端允许使用这个网络 N 小时。"
 
 msgid "Clients upload speed is limited to this value (kbyte/s)"
-msgstr "客户端上传速度限制为此值(kbyte/s)"
+msgstr "客户端上传速度限制(kbyte/s)"
 
 msgid "Contact"
-msgstr "联系"
+msgstr "联系方式"
 
 msgid "Decline"
-msgstr "下降"
+msgstr "拒绝"
 
 msgid ""
 "Destination hosts and networks that are excluded from splashing, i.e. they "
 "are always allowed."
-msgstr ""
+msgstr "Splashing 将排除的主机和网络,如:始终允许访问。"
 
 msgid "Donate some money to help us keep this project alive."
-msgstr "æ\8d\90å\8a©æ\88\91们ä¸\80äº\9bé\92±ä»¥å¸®å\8a©æ\88\91们维æ\8a¤è¿\99个项ç\9b®ã\80\82"
+msgstr "æ\8d\90å\87ºä¸\80äº\9bé\92±æ\9d¥å¸®å\8a©æ\88\91们维æ\8a¤è¿\99个项ç\9b®ã\80\82"
 
 msgid "Download limit"
 msgstr "下载限制"
 
 msgid "Edit the complete splash text"
-msgstr ""
+msgstr "编辑完整的 splash 文本"
 
 msgid "Fair Use Policy"
-msgstr ""
+msgstr "合理使用政策"
 
 msgid "Firewall zone"
 msgstr "防火墙区域"
@@ -121,23 +134,23 @@ msgid "General"
 msgstr "概述"
 
 msgid "Get in %s with the operator of this access point."
-msgstr ""
+msgstr "在 %s 与此访问点的操作者取得联系。"
 
 msgid "Hostname"
 msgstr "主机名"
 
 msgid "IP Address"
-msgstr "IP地址"
+msgstr "IP 地址"
 
 msgid ""
 "If you operate your own wifi equipment use channels different from ours."
-msgstr "如果您操作您自有的wifi设备,使用与我们不同的频道"
+msgstr "如果您操作您自有的 wifi 设备,请使用不同的频道。"
 
 msgid "If you use this network on a regular basis we ask for your support:"
-msgstr "如果您经常使用这个网络,我们需要您的支持"
+msgstr "如果您经常使用这个网络,我们需要您的支持"
 
 msgid "Include your own text in the default splash"
-msgstr ""
+msgstr "在默认的 splash 中包含您自己的文本"
 
 msgid "Intercept client traffic on this Interface"
 msgstr "在这个接口上拦截客户端通信流量"
@@ -146,12 +159,12 @@ msgid "Interfaces"
 msgstr "接口"
 
 msgid "Interfaces that are used for Splash."
-msgstr "Splash使用的接口"
+msgstr "Splash 使用的接口。"
 
 msgid ""
 "KB/s (Download/Upload). You may be able to remove this limit by actively "
 "contributing to this project."
-msgstr ""
+msgstr "KB/s(下载/上传)。您可以通过积极参与此项目来消除此限制。"
 
 msgid "Legally Prohibited Activities"
 msgstr "法律禁止行为"
@@ -160,15 +173,15 @@ msgid "Legally Prohibited content"
 msgstr "法律禁止内容"
 
 msgid "MAC Address"
-msgstr "MAC地址"
+msgstr "MAC 地址"
 
 msgid "MAC addresses in this list are blocked."
-msgstr "在本列表中的MAC地址将被阻挡"
+msgstr "在本列表中的 MAC 地址将被阻挡。"
 
 msgid ""
 "MAC addresses of whitelisted clients. These do not need to accept the splash "
 "and are not bandwidth limited."
-msgstr "白名单中的MAC地址,可不用接受splash,同时没有带宽限制。"
+msgstr "白名单中的 MAC 地址,可不用接受 splash,同时没有带宽限制。"
 
 msgid "Netmask"
 msgstr "网络掩码"
@@ -182,10 +195,10 @@ msgstr "无客户端连接"
 msgid ""
 "Please note that we are not an internet service provider but an experimental "
 "community network."
-msgstr "我们不是ISP(互联网运行商),仅仅只是一个实验性的社区网络。"
+msgstr "我们不是 ISP(互联网运行商),仅仅只是一个实验性的社区网络。"
 
 msgid "Policy"
-msgstr "策略"
+msgstr "政策"
 
 msgid "Redirect target"
 msgstr "重定向目标"
@@ -197,58 +210,68 @@ msgid "Save"
 msgstr "保存"
 
 msgid "Splash rules are integrated in this firewall zone"
-msgstr ""
+msgstr "Splash 规则集成在此防火墙区域中"
 
 msgid "Splashtext"
-msgstr ""
+msgstr "Splashtext"
 
 msgid ""
 "The network, like the Internet, is unencrypted and open. Each participant is "
 "responsible for the safety of their own connections and devices."
 msgstr ""
+"与互联网一样,此网络是未加密及开放的。每个参与者都对自己的连接和设备的安全负"
+"责。"
 
 msgid ""
 "The open and free wireless network of volunteers (\"Operators\") provides "
 "the necessary equipment and Internet connections (\"Infrastructure\") at "
 "their own expense."
 msgstr ""
+"开放和免费无线网络的志愿者(“操作者”)自费提供必要的设备和互联网连接(“基础设"
+"施”)。"
 
 msgid ""
 "The operator claims no liability for loss of data, unauthorized access/"
 "damage to devices, or financial losses that participants may suffer from the "
 "use of the network."
 msgstr ""
+"操作者不对数据丢失,对设备未经授权的访问/损坏,或参与者因使用网络而可能遭受的"
+"经济损失承担任何责任。"
 
 msgid ""
 "The participant agrees to not perform any action and refrain from acts which "
 "may violate the law or infringe upon the rights of third parties."
-msgstr ""
+msgstr "参与者同意不采取及避免任何可能违反法律或侵犯第三方权利的行为。"
 
 msgid ""
 "The participant agrees to not transfer content over the network which "
 "violates the law."
-msgstr ""
+msgstr "参与者同意不通过网络传播违反法律的内容。"
 
 msgid ""
 "The participant agrees to not use the network in any way which will harm the "
 "infrastructure, the network itself, its operators or other participants."
 msgstr ""
+"参与者同意不以任何有损基础设施、网络本身、操作者或其他参与者的方式使用本网"
+"络。"
 
 msgid ""
 "These Terms of Use govern the use of the network by its participants' "
 "computer, PDA, or similar device (\"Devices\") within the network."
 msgstr ""
+"这些使用条款规定了网络中参与者的计算机、PDA 或类似设备(“设备”)使用网络的方"
+"式。"
 
 msgid "Time remaining"
-msgstr ""
+msgstr "剩余时间:"
 
 msgid ""
 "To ask for the reason why you have been blocked or ask for access again you "
 "can try to contact the owner of this access point:"
-msgstr ""
+msgstr "要询问您被封禁的原因,或要求再次访问,您可以尝试联系此访问点的所有者:"
 
 msgid "Traffic in/out"
-msgstr "流量 入/出"
+msgstr "流量入站/出站"
 
 msgid "Upload limit"
 msgstr "上传限制"
@@ -263,18 +286,21 @@ msgid "Whitelist"
 msgstr "白名单"
 
 msgid "You are now connected to the free wireless mesh network"
-msgstr ""
+msgstr "您现在已连接到免费无线网状网络"
 
 msgid ""
 "You can enter your own text that is displayed to clients here.<br />It is "
 "possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, "
 "###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###."
 msgstr ""
+"您可以在此处输入自己显示给客户的文本。<br />可以使用以下标记:"
+"###COMMUNITY###,###COMMUNITY_URL###,###CONTACTURL###,###LEASETIME###,"
+"###LIMIT### 和 ###ACCEPT###。"
 
 msgid ""
 "Your access to this network has been blocked, most likely because you did "
 "something that our rules explicitly forbid."
-msgstr ""
+msgstr "您已被禁止访问此网络,很可能是因为您执行了规则中明令禁止的操作。"
 
 msgid "Your bandwidth is limited to"
 msgstr "您的带宽限制为"
@@ -283,39 +309,31 @@ msgid "blacklisted"
 msgstr "黑名单"
 
 msgid "expired"
-msgstr "过期"
+msgstr "过期"
 
 msgid "optional when using host addresses"
-msgstr ""
+msgstr "使用主机地址时可选"
 
 msgid "perform any kind of illegal activities"
-msgstr ""
+msgstr "进行任何形式的非法活动"
 
 msgid "splashed"
-msgstr ""
+msgstr "splash 通过"
 
 msgid "temporarily blocked"
-msgstr ""
+msgstr "暂时被阻止"
 
 msgid "unknown"
-msgstr ""
+msgstr "未知"
 
 msgid "use filesharing applications on this network"
-msgstr ""
+msgstr "在此网络上使用文件共享应用程序"
 
-msgid "waste bandwidth with unneccesary downloads or streams"
-msgstr ""
+msgid "waste bandwidth with unnecessary downloads or streams"
+msgstr "用不必要的下载或流媒体浪费带宽"
 
 msgid "whitelisted"
-msgstr ""
-
-#~ msgid ""
-#~ "Hosts and Networks that are listed here are excluded from splashing, i.e. "
-#~ "they are always allowed."
-#~ msgstr "列在这里的主机和网络都排除在Splashing之外,例如:一直被允许访问。"
-
-#~ msgid "By accepting these rules you can use this network for"
-#~ msgstr "接受这些条款以便使用这个网络"
+msgstr "白名单"
 
 #~ msgid "Edit Splash text"
 #~ msgstr "编辑Splash文本"
index 1125abfedae1c41504d1fbea8c3e011edbe3bb7f..c20a1ba7a3af005cd997bc88c4e0e41e46b0ce3f 100644 (file)
@@ -1,15 +1,23 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2018.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"Language: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-06-28 08:58+0200\n"
+"PO-Revision-Date: 2018-10-01 11:38+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Language: zh_TW\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: Gtranslator 2.91.7\n"
 
 msgid "Accept"
-msgstr ""
+msgstr "接受"
 
 msgid ""
 "Access to the internet might be possible nevertheless, because some "
@@ -17,286 +25,315 @@ msgid ""
 "few connections are shared between all users. That means available bandwidth "
 "is limited and because of this we ask you not to do any of the following:"
 msgstr ""
+"儘管如此,您仍然可以訪問網際網路,因為該專案的一些活動人士願意分享他們的私人"
+"互聯網連線。所有使用者之間共享這些連線。這意味著可用頻寬有限,因此我們要求您"
+"不要執行以下任何操作:"
 
 msgid ""
 "Access to the network is not guaranteed. It can be interrupted at any time "
 "without notice for any reason, for certain devices, and/or may be blocked "
 "for certain users."
 msgstr ""
+"網路訪問沒有任何保證。對於某些裝置,它可以因任何原因隨時中斷而不加以提前通"
+"知,及/或可能被某些使用者阻止。"
 
 msgid "Active Clients"
-msgstr ""
+msgstr "活動的客戶端"
 
 msgid "Allowed hosts/subnets"
-msgstr ""
+msgstr "允許的主機/掩碼"
 
 msgid ""
 "As an alternative to editing the complete splash text you can also just "
 "include some custom text in the default splash page by entering it here."
 msgstr ""
+"除了編輯完整的 splash 文字,您還可以在此處輸入,向預設啟動頁面加入一些自定義"
+"文字。"
 
 msgid ""
 "Bandwidth limit for clients is only activated when both up- and download "
 "limit are set. Use a value of 0 here to completely disable this limitation. "
 "Whitelisted clients are not limited."
 msgstr ""
+"僅當設定了上傳和下載限制時,才會啟用客戶端頻寬限制。在此處使用值0可完全禁用此"
+"限制。白名單客戶不受限制。"
 
+# Something wwrong?
 msgid ""
 "Become an active member of this community and help by operating your own node"
-msgstr ""
+msgstr "成為此社群的活躍成員,並通過操作您自己的節點提供幫助"
 
 msgid "Blacklist"
-msgstr ""
+msgstr "黑名單"
 
 msgid "Blocked"
-msgstr ""
+msgstr "封鎖"
 
 msgid ""
 "By accepting these rules you can use this network for %s hour(s). After this "
 "time you need to accept these rules again."
 msgstr ""
+"接受這些規則,您可以使用此網路 %s 小時。在此之後,您需要再次接受這些規則。"
 
 msgid "Clearance time"
-msgstr ""
+msgstr "清理時間"
 
 msgid "Client-Splash"
-msgstr ""
+msgstr "Client-Splash"
 
 msgid ""
-"Client-Splash is a hotspot authentification system for wireless mesh "
+"Client-Splash is a hotspot authentication system for wireless mesh "
 "networks."
-msgstr ""
+msgstr "Client-Splash 是無線網狀網路的一個熱點認證系統。"
 
 msgid ""
 "Clients are redirected to this page after they have accepted the splash. If "
 "this is left empty they are redirected to the page they had requested."
 msgstr ""
+"客戶端連線到 splash 後將會重定向到此頁面。如果留空,則會重定向到他們請求的頁"
+"面。"
 
 msgid "Clients download speed is limited to this value (kbyte/s)"
-msgstr ""
+msgstr "客戶端下載速度限制(kbyte/s)"
 
 msgid ""
 "Clients that have accepted the splash are allowed to use the network for "
 "that many hours."
-msgstr ""
+msgstr "已接受 splash 的客戶端允許使用這個網路 N 小時。"
 
 msgid "Clients upload speed is limited to this value (kbyte/s)"
-msgstr ""
+msgstr "客戶端上傳速度限制(kbyte/s)"
 
 msgid "Contact"
-msgstr ""
+msgstr "聯絡方式"
 
 msgid "Decline"
-msgstr ""
+msgstr "拒絕"
 
 msgid ""
 "Destination hosts and networks that are excluded from splashing, i.e. they "
 "are always allowed."
-msgstr ""
+msgstr "Splashing 將排除的主機和網路,如:始終允許訪問。"
 
 msgid "Donate some money to help us keep this project alive."
-msgstr ""
+msgstr "捐出一些錢來幫助我們維護這個專案。"
 
 msgid "Download limit"
-msgstr ""
+msgstr "下載限制"
 
 msgid "Edit the complete splash text"
-msgstr ""
+msgstr "編輯完整的 splash 文字"
 
 msgid "Fair Use Policy"
-msgstr ""
+msgstr "合理使用政策"
 
 msgid "Firewall zone"
-msgstr ""
+msgstr "防火牆區域"
 
 msgid "General"
-msgstr ""
+msgstr "概述"
 
 msgid "Get in %s with the operator of this access point."
-msgstr ""
+msgstr "在 %s 與此訪問點的操作者取得聯絡。"
 
 msgid "Hostname"
-msgstr ""
+msgstr "主機名"
 
 msgid "IP Address"
-msgstr ""
+msgstr "IP 地址"
 
 msgid ""
 "If you operate your own wifi equipment use channels different from ours."
-msgstr ""
+msgstr "如果您操作您自有的 wifi 裝置,請使用不同的頻道。"
 
 msgid "If you use this network on a regular basis we ask for your support:"
-msgstr ""
+msgstr "如果您經常使用這個網路,我們需要您的支援:"
 
 msgid "Include your own text in the default splash"
-msgstr ""
+msgstr "在預設的 splash 中包含您自己的文字"
 
 msgid "Intercept client traffic on this Interface"
-msgstr ""
+msgstr "在這個介面上攔截客戶端通訊流量"
 
 msgid "Interfaces"
-msgstr ""
+msgstr "介面"
 
 msgid "Interfaces that are used for Splash."
-msgstr ""
+msgstr "Splash 使用的介面。"
 
 msgid ""
 "KB/s (Download/Upload). You may be able to remove this limit by actively "
 "contributing to this project."
-msgstr ""
+msgstr "KB/s(下載/上傳)。您可以通過積極參與此專案來消除此限制。"
 
 msgid "Legally Prohibited Activities"
-msgstr ""
+msgstr "法律禁止行為"
 
 msgid "Legally Prohibited content"
-msgstr ""
+msgstr "法律禁止內容"
 
 msgid "MAC Address"
-msgstr ""
+msgstr "MAC 地址"
 
 msgid "MAC addresses in this list are blocked."
-msgstr ""
+msgstr "在本列表中的 MAC 地址將被阻擋。"
 
 msgid ""
 "MAC addresses of whitelisted clients. These do not need to accept the splash "
 "and are not bandwidth limited."
-msgstr ""
+msgstr "白名單中的 MAC 地址,可不用接受 splash,同時沒有頻寬限制。"
 
 msgid "Netmask"
-msgstr ""
+msgstr "網路掩碼"
 
 msgid "Network"
-msgstr ""
+msgstr "網路"
 
 msgid "No clients connected"
-msgstr ""
+msgstr "無客戶端連線"
 
 msgid ""
 "Please note that we are not an internet service provider but an experimental "
 "community network."
-msgstr ""
+msgstr "我們不是 ISP(網際網路執行商),僅僅只是一個實驗性的社群網路。"
 
 msgid "Policy"
-msgstr ""
+msgstr "政策"
 
 msgid "Redirect target"
-msgstr ""
+msgstr "重定向目標"
 
 msgid "Safety"
-msgstr ""
+msgstr "安全"
 
 msgid "Save"
-msgstr ""
+msgstr "儲存"
 
 msgid "Splash rules are integrated in this firewall zone"
-msgstr ""
+msgstr "Splash 規則整合在此防火牆區域中"
 
 msgid "Splashtext"
-msgstr ""
+msgstr "Splashtext"
 
 msgid ""
 "The network, like the Internet, is unencrypted and open. Each participant is "
 "responsible for the safety of their own connections and devices."
 msgstr ""
+"與網際網路一樣,此網路是未加密及開放的。每個參與者都對自己的連線和裝置的安全"
+"負責。"
 
 msgid ""
 "The open and free wireless network of volunteers (\"Operators\") provides "
 "the necessary equipment and Internet connections (\"Infrastructure\") at "
 "their own expense."
 msgstr ""
+"開放和免費無線網路的志願者(“操作者”)自費提供必要的裝置和網際網路連線(“基礎"
+"設施”)。"
 
 msgid ""
 "The operator claims no liability for loss of data, unauthorized access/"
 "damage to devices, or financial losses that participants may suffer from the "
 "use of the network."
 msgstr ""
+"操作者不對資料丟失,對裝置未經授權的訪問/損壞,或參與者因使用網路而可能遭受的"
+"經濟損失承擔任何責任。"
 
 msgid ""
 "The participant agrees to not perform any action and refrain from acts which "
 "may violate the law or infringe upon the rights of third parties."
-msgstr ""
+msgstr "參與者同意不採取及避免任何可能違反法律或侵犯第三方權利的行為。"
 
 msgid ""
 "The participant agrees to not transfer content over the network which "
 "violates the law."
-msgstr ""
+msgstr "參與者同意不通過網路傳播違反法律的內容。"
 
 msgid ""
 "The participant agrees to not use the network in any way which will harm the "
 "infrastructure, the network itself, its operators or other participants."
 msgstr ""
+"參與者同意不以任何有損基礎設施、網路本身、操作者或其他參與者的方式使用本網"
+"絡。"
 
 msgid ""
 "These Terms of Use govern the use of the network by its participants' "
 "computer, PDA, or similar device (\"Devices\") within the network."
 msgstr ""
+"這些使用條款規定了網路中參與者的計算機、PDA 或類似裝置(“裝置”)使用網路的方"
+"式。"
 
 msgid "Time remaining"
-msgstr ""
+msgstr "剩餘時間:"
 
 msgid ""
 "To ask for the reason why you have been blocked or ask for access again you "
 "can try to contact the owner of this access point:"
-msgstr ""
+msgstr "要詢問您被封禁的原因,或要求再次訪問,您可以嘗試聯絡此訪問點的所有者:"
 
 msgid "Traffic in/out"
-msgstr ""
+msgstr "流量入站/出站"
 
 msgid "Upload limit"
-msgstr ""
+msgstr "上傳限制"
 
 msgid "Usage Agreement"
-msgstr ""
+msgstr "使用協議"
 
 msgid "Welcome"
-msgstr ""
+msgstr "歡迎"
 
 msgid "Whitelist"
-msgstr ""
+msgstr "白名單"
 
 msgid "You are now connected to the free wireless mesh network"
-msgstr ""
+msgstr "您現在已連線到免費無線網狀網路"
 
 msgid ""
 "You can enter your own text that is displayed to clients here.<br />It is "
 "possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, "
 "###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###."
 msgstr ""
+"您可以在此處輸入自己顯示給客戶的文字。<br />可以使用以下標記:"
+"###COMMUNITY###,###COMMUNITY_URL###,###CONTACTURL###,###LEASETIME###,"
+"###LIMIT### 和 ###ACCEPT###。"
 
 msgid ""
 "Your access to this network has been blocked, most likely because you did "
 "something that our rules explicitly forbid."
-msgstr ""
+msgstr "您已被禁止訪問此網路,很可能是因為您執行了規則中明令禁止的操作。"
 
 msgid "Your bandwidth is limited to"
-msgstr ""
+msgstr "您的頻寬限制為"
 
 msgid "blacklisted"
-msgstr ""
+msgstr "黑名單"
 
 msgid "expired"
-msgstr ""
+msgstr "已過期"
 
 msgid "optional when using host addresses"
-msgstr ""
+msgstr "使用主機地址時可選"
 
 msgid "perform any kind of illegal activities"
-msgstr ""
+msgstr "進行任何形式的非法活動"
 
 msgid "splashed"
-msgstr ""
+msgstr "splash 通過"
 
 msgid "temporarily blocked"
-msgstr ""
+msgstr "暫時被阻止"
 
 msgid "unknown"
-msgstr ""
+msgstr "未知"
 
 msgid "use filesharing applications on this network"
-msgstr ""
+msgstr "在此網路上使用檔案共享應用程式"
 
-msgid "waste bandwidth with unneccesary downloads or streams"
-msgstr ""
+msgid "waste bandwidth with unnecessary downloads or streams"
+msgstr "用不必要的下載或流媒體浪費頻寬"
 
 msgid "whitelisted"
-msgstr ""
+msgstr "白名單"
+
+#~ msgid "Edit Splash text"
+#~ msgstr "編輯Splash文字"
index feefabd81aaea87ea33e6c4d159a39c811eb5f87..01a606c32110617930807b21230f9560f6ede667 100755 (executable)
@@ -237,12 +237,12 @@ start() {
        [ -s $IPT_REPLAY ] && . $IPT_REPLAY
        echo -n > $IPT_REPLAY
 
-       ### Add interface independant prerouting rules
+       ### Add interface independent prerouting rules
        $IPT -t nat -A luci_splash_prerouting -j luci_splash_leases
        $IPT -t nat -A luci_splash_leases -p udp --dport 53 -j REDIRECT --to-ports 53
        $IPT -t nat -A luci_splash_leases -p tcp --dport 80 -j REDIRECT --to-ports 8082
 
-       ### Add interface independant forwarding rules
+       ### Add interface independent forwarding rules
        $IPT -t filter -A luci_splash_forwarding -j luci_splash_filter
        $IPT -t filter -A luci_splash_filter -p tcp -j REJECT --reject-with tcp-reset
        $IPT -t filter -A luci_splash_filter -j REJECT --reject-with icmp-net-prohibited
index 008792a5d018078525e53ea21dc62d0d22fd7e96..b552400fed90db1510361d5649764724ac3dbffb 100644 (file)
@@ -8,6 +8,7 @@ include $(TOPDIR)/rules.mk
 
 LUCI_TITLE:=LuCI Statistics Application
 LUCI_DEPENDS:= \
+       +luci-lib-iptparser \
        +collectd +rrdtool1 +collectd-mod-rrdtool +collectd-mod-iwinfo \
        +collectd-mod-cpu +collectd-mod-memory \
        +collectd-mod-interface +collectd-mod-load +collectd-mod-network
index ec26f02d0db9e46bfe882cb37e2ed8d7292fff63..9a3850d6838dcbfed4a7ee4c95804db69fdf107e 100644 (file)
@@ -10,7 +10,7 @@ function index()
        require("luci.util")
        require("luci.statistics.datatree")
 
-       -- override entry(): check for existance <plugin>.so where <plugin> is derived from the called path
+       -- override entry(): check for existence <plugin>.so where <plugin> is derived from the called path
        function _entry( path, ... )
                local file = path[5] or path[4]
                if nixio.fs.access( "/usr/lib/collectd/" .. file .. ".so" ) then
@@ -29,6 +29,7 @@ function index()
                cpu                     = _("Processor"),
                cpufreq         = _("CPU Frequency"),
                csv                     = _("CSV Output"),
+               curl            = _("cUrl"),
                df                      = _("Disk Space Usage"),
                disk            = _("Disk Usage"),
                dns                     = _("DNS"),
@@ -63,7 +64,7 @@ function index()
                general = { "apcups", "contextswitch", "cpu", "cpufreq", "df",
                        "disk", "email", "entropy", "exec", "irq", "load", "memory",
                        "nut", "processes", "sensors", "thermal", "uptime" },
-               network = { "conntrack", "dns", "interface", "iptables",
+               network = { "conntrack", "curl", "dns", "interface", "iptables",
                        "netlink", "olsrd", "openvpn", "ping",
                        "splash_leases", "tcpconns", "iwinfo" }
        }
diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/curl.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/curl.lua
new file mode 100644 (file)
index 0000000..606e1cb
--- /dev/null
@@ -0,0 +1,24 @@
+-- Copyright 2018 Chizhong Jin <pjincz@gmail.com>
+-- Licensed to the public under the BSD 3-clause license
+
+m = Map("luci_statistics",
+               translate("cUrl Plugin Configuration"))
+
+s = m:section(NamedSection, "collectd_curl")
+s_enable = s:option(Flag, "enable", translate("Enable this plugin"))
+s_enable.default = 0
+
+page = m:section(TypedSection, "collectd_curl_page")
+page.addremove = true
+page.anonymous = true
+page.template = "cbi/tblsection"
+page.sortable = true
+
+page_enable = page:option(Flag, "enable", translate("Enable"))
+page_enable.default = 1
+
+page_name = page:option(Value, "name", translate("Name"))
+
+page_addr = page:option(Value, "url", translate("URL"))
+
+return m
index dc3d3fb2be08de3f00ae47ad2696bc3d5dda480d..d336a7e51c297d80f96db516af2ad9c64b18c392 100644 (file)
@@ -4,7 +4,7 @@
 m = Map("luci_statistics",
        translate("Disk Plugin Configuration"),
        translate(
-               "The disk plugin collects detailled usage statistics " ..
+               "The disk plugin collects detailed usage statistics " ..
                "for selected partitions or whole disks."
        ))
 
index 29b998b87798c58b9814b19866e13b6f7298e85a..dafcc452ccfd87e76a3a44d9eae16e3663fb12e4 100644 (file)
@@ -7,7 +7,7 @@ require("luci.sys")
 m = Map("luci_statistics",
        translate("DNS Plugin Configuration"),
        translate(
-               "The dns plugin collects detailled statistics about dns " ..
+               "The dns plugin collects detailed statistics about dns " ..
                "related traffic on selected interfaces."
        ))
 
index 48e0ec2d7afab29e35c58e8601a526ec37adc176..9c8e3e1880c91665127682151b16801bcb698998 100644 (file)
@@ -51,8 +51,8 @@ notify = m:section( TypedSection, "collectd_exec_notify",
        translate(
                "Here you can define external commands which will be " ..
                "started by collectd when certain threshold values have " ..
-               "been reached. The values leading to invokation will be " ..
-               "feeded to the the called programs stdin."
+               "been reached. The values leading to invocation will be " ..
+               "fed to the the called programs stdin."
        ))
 notify.addremove = true
 notify.anonymous = true
index aa469843ec99af5f7f5c7ec6a4fb74ff3d2e8010..ded3f7f996b96c6a497755ec541b37bda9ba1d85 100644 (file)
@@ -19,7 +19,7 @@ m = Map("luci_statistics",
        translate("Iptables Plugin Configuration"),
        translate(
                "The iptables plugin will monitor selected firewall rules and " ..
-               "collect informations about processed bytes and packets per rule."
+               "collect information about processed bytes and packets per rule."
        ))
 
 -- collectd_iptables config section
index 917abd0c43d58f78be31943af0009a4193c4ccf9..66449ec467341916c9beab1db97e7b4bb79150cc 100644 (file)
@@ -9,7 +9,7 @@ local devices = luci.sys.net.devices()
 m = Map("luci_statistics",
        translate("Netlink Plugin Configuration"),
        translate(
-               "The netlink plugin collects extended informations like " ..
+               "The netlink plugin collects extended information like " ..
                "qdisc-, class- and filter-statistics for selected interfaces."
        ))
 
index 4171a886b925628992f9ec24d58c4d5d046ea841..c0a18a9c1f815da7f94ab517b42a9630297a72b8 100644 (file)
@@ -4,7 +4,7 @@
 m = Map("luci_statistics",
        translate("Processes Plugin Configuration"),
        translate(
-               "The processes plugin collects informations like cpu time, " ..
+               "The processes plugin collects information like cpu time, " ..
                "page faults and memory usage of selected processes."
        ))
 
index 3c650180aa6358fd1d899ab57df07b706891ed97..a02b2be4fd10cfdeaf54363221c7c5be3f86de77 100644 (file)
@@ -4,7 +4,7 @@
 m = Map("luci_statistics",
        translate("TCPConns Plugin Configuration"),
        translate(
-               "The tcpconns plugin collects informations about open tcp " ..
+               "The tcpconns plugin collects information about open tcp " ..
                "connections on selected ports."
        ))
 
diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/curl.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/curl.lua
new file mode 100644 (file)
index 0000000..89a65a6
--- /dev/null
@@ -0,0 +1,22 @@
+-- Copyright 2018 Chizhong Jin <pjincz@gmail.com>
+-- Licensed to the public under the BSD 3-clause license
+
+module("luci.statistics.rrdtool.definitions.curl", package.seeall)
+
+function rrdargs( graph, plugin, plugin_instance, dtype )
+       return {
+               title = "%H: cUrl Response Time for #%pi",
+               y_min = "0",
+               alt_autoscale_max = true,
+               vlabel = "Response Time",
+               number_format = "%5.1lf%Ss",
+               data = {
+                       types = { "response_time" },
+                       options = {
+                               response_time = {
+                                       title = ""
+                               }
+                       }
+               }
+       }
+end
index 6f687d218ddb4e340726659421a328f058bae341..6ca65e539f0aa7f9faa272610135c66b9c1f9ece 100644 (file)
@@ -17,7 +17,7 @@ function rrdargs( graph, plugin, plugin_instance )
 
                -- diagram data description
                data = {
-                       -- defined sources for data types, if ommitted assume a single DS named "value" (optional)
+                       -- defined sources for data types, if omitted assume a single DS named "value" (optional)
                        sources = {
                                if_octets = { "tx", "rx" }
                        },
index 7b6acf36633262ef57a14d09eebcad49bc52790d..a612126ed0f5536c3ebd51f366ad91012e2a295d 100644 (file)
@@ -14,7 +14,7 @@ function rrdargs( graph, plugin, plugin_instance )
 
                -- diagram data description
                data = {
-                       -- defined sources for data types, if ommitted assume a single DS named "value" (optional)
+                       -- defined sources for data types, if omitted assume a single DS named "value" (optional)
                        sources = {
                                if_octets = { "tx", "rx" }
                        },
index 738af5510ff8e027e79a4ad2780838dd87329258..367857cd3f3a59aed2ed849ce85d5156ac126349 100644 (file)
@@ -201,8 +201,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 "Ací pots definir ordres externes que s'iniciaran pel collectd quan s'aribi a "
 "uns certs valors llindars. Els valors que condueixin a la invocació, "
@@ -558,14 +558,14 @@ msgstr ""
 "dispositius, punts de muntatge i tipus de sistema de fitxers."
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 "El connector de disc recull estadístiques d'ús detallades per les particions "
 "seleccionades o per tot el disc."
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 "El connector DNS recull estadístiques detallades sobre el tràfic DNS a les "
@@ -600,7 +600,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 "El connector iptables monitoritzarà les regles de tallafocs seleccionades i "
 "recollirà informacions sobre els bytes i paquests processats per regla."
@@ -629,7 +629,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr "El connector de memòria recull estadístiques sobre l'ús de memòria."
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 "El connector d'enllaç de xarxa recull informació extensa com estadístiques "
@@ -655,7 +655,7 @@ msgstr ""
 "i mesurarà el temps d'anada i tornada en cada màquina."
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 "El connector de processor recollirà informacions com el temps de cpu, errors "
@@ -689,7 +689,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 "El connector TCPConns recull informació sobre les connexions TCP obertes en "
index fc3f513c5c8bfce20f387808a3de31f98f9519d8..703dc393a00e1c0fa6fd2b378b8df43c3cec0682 100644 (file)
@@ -198,8 +198,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 
 msgid ""
@@ -551,14 +551,14 @@ msgstr ""
 "zařízeních, přípojných bodech nebo typech souborových systémů."
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 "Plugin Disk shromažďuje podrobné statistiky o využívání vybraného oddílu "
 "nebo celého disku."
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 "Plugin DNS shromažďuje podrobné statistky o provozu, vztahující se k DNS, na "
@@ -590,7 +590,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 "Plugin Iptables monitoruje vybraná pravidla firewallu a shromažďuje "
 "informace o zpracovaných bajtech a paketech pro každé pravidlo."
@@ -616,7 +616,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr "Plugin Memory shromažďuje statistiky o využití paměti."
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 "Plugin Netlink shromažďuje rozšířené informace jako statistiky qdisk, class "
@@ -641,7 +641,7 @@ msgstr ""
 "zpáteční čas pro každého hosta."
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 "Plugin Processes shromažďuje informace o procesorovém času, výpadcích "
@@ -675,7 +675,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 "Plugin Tcpconns shromažďuje informace o otevřených TCP spojeních na "
index 45ba020ada9cb108e857a4d6ff1cfbdadd8af25d..151d1d73eb14626d93e8107760ee47f2824f2704 100644 (file)
@@ -200,8 +200,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 "Hier können externe Kommandos definiert werden, welche durch Collectd "
 "gestartet werden sobald konfigurierte Grenzwerte erreicht werden. Die Werte "
@@ -563,14 +563,14 @@ msgstr ""
 "verschiedenen Geräten, Mount-Punkten oder Dateisystemtypen."
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 "Das Disk-Plugin sammelt detaillierte Statistiken über die Auslastung auf "
 "ausgewählten Festplatten und Partitionen."
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 "Das DNS-Plugin sammelt detaillierte Statistiken über DNS-bezogenen Verkehr "
@@ -605,7 +605,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 "Das Iptables-Plugin überwacht ausgewählte Firewall-Regeln und sammelt Werte "
 "über die Anzahl der verarbeiteten Pakete und Bytes."
@@ -633,7 +633,7 @@ msgstr ""
 "Das memory-Plugin sammelt Statistiken über die RAM-Auslastung des Systems."
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 "Das Netlink-Plugin sammelt erweiterte QoS-Informationen wie QDisc-, Class- "
@@ -659,7 +659,7 @@ msgstr ""
 "Antwortzeiten für jede Adresse."
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 "Das Prozess-Plugin sammelt Statistiken über Prozess-Zeit, Speicher-Fehler "
@@ -694,7 +694,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 "Das TCPConns-Plugin sammelt Informationen über offene TCP-Verbindungen auf "
index 4062868446bdce26349d5181ef3d262ee3d68ae1..b2d88f51ca07c962382e03707da9886555ca86de 100644 (file)
@@ -199,8 +199,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 
 msgid ""
@@ -544,12 +544,12 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 
@@ -574,7 +574,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 
 msgid ""
@@ -594,7 +594,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr ""
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 
@@ -611,7 +611,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 
@@ -639,7 +639,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 
index f7ebfe0c2b556e52fc3913a338e49bebb5f662fd..5c02e36287d8a1a243ad4e0403cb6d250da8bb2f 100644 (file)
@@ -199,12 +199,12 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 
 msgid ""
 "Here you can define various criteria by which the monitored iptables rules "
@@ -553,17 +553,17 @@ msgstr ""
 "devices, mount points or filesystem types."
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 
 msgid ""
@@ -594,10 +594,10 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 
 msgid ""
 "The irq plugin will monitor the rate of issues per second for each selected "
@@ -618,10 +618,10 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr ""
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 
 msgid ""
@@ -643,10 +643,10 @@ msgstr ""
 "the roundtrip time for each host."
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 
 msgid ""
@@ -677,10 +677,10 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 
 msgid ""
index 3c811ffeff047e543fffd19c8d08d9a76fa2f62d..86370b48f332251d41fa5dd859a33706667e7430 100644 (file)
@@ -199,8 +199,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 "Aquí puede definir los comandos externos que iniciará collectd cuando se "
 "alcancen ciertos valores umbral."
@@ -560,14 +560,14 @@ msgstr ""
 "en diferentes dispositivos, puntos de montaje y tipos de sistema de archivos."
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 "El plugin \"Disco\" recolecta estadísticas detallada acerca de su "
 "utilización para las particiones seleccionadas o bien el disco completo."
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 "El plugin \"DNS\" recolecta estadísticas detalladas acerca del trafico DNS "
@@ -603,7 +603,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 "El plugin \"Iptables\" monitoriza las reglas seleccionadas del cortafuegos y "
 "recoge información de bytes y paquetes procesados por cada regla."
@@ -630,7 +630,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr "El plugin \"memoria\" recoge estadísticas sobre el uso de memoria."
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 "El plugin \"netlink\" recoge informaciones extendidas como estadísticas "
@@ -656,7 +656,7 @@ msgstr ""
 "tiempo de viaje para cada host."
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 "El plugin \"procesos\" recoge información como tiempo de CPU, fallos de "
@@ -690,7 +690,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 "El plugin \"tcpconns\" recoge información de conexiones TCP abiertas en los "
index bc156dd42a1a0d98ca7c6814637783ef0a1ea8f2..3c4ca7ba4b26423d5be6b61d7171e14920e99e39 100644 (file)
@@ -200,8 +200,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 "Vous pouvez définir ici des commandes externes qui seront démarrées par "
 "collectd quand certaines valeurs-seuil seront atteintes. Les valeurs "
@@ -554,14 +554,14 @@ msgstr ""
 "différents périphériques, points de montage ou types de systèmes de fichiers."
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 "Le greffon Disque récupère des informations détaillées sur des disques ou "
 "partitions sélectionnées."
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 "Le greffon DNS récupère des données détaillées à propos du trafic lié au DNS "
@@ -596,7 +596,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 "Le greffon IPtables surveillera des règles de pare-feu sélectionnées et "
 "collectera des informations sur les octets et paquets IP traités par chaque "
@@ -624,11 +624,11 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr ""
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 "Le greffon de lien-réseau récupère sur les interfaces sélectionnées des "
-"informations avancées liées à la QOS, aux classes et au filtrage."
+"informations  avancées liées à la QOS, aux classes et au filtrage."
 
 msgid ""
 "The network plugin provides network based communication between different "
@@ -640,7 +640,7 @@ msgstr ""
 "instances collectd : ce programme peut fonctionner à la fois comme client et "
 "serveur. En mode client, les données collectées localement sont transférées "
 "à un serveur, en mode serveur, l'instance collectd locale reçoit des "
-"informations d'autres hôtes."
+"informations  d'autres hôtes."
 
 msgid ""
 "The ping plugin will send icmp echo replies to selected hosts and measure "
@@ -650,7 +650,7 @@ msgstr ""
 "mesure le temps d'aller-retour avec chacun."
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 "Le greffon des processus récupère des informations comme le temps CPU, les "
@@ -685,7 +685,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 "Le greffon des connexions TCP récupère des informations sur les ouvertures "
index 35f978ed206cd329d3f8a37fd39caa9c52743a42..27b9993d2d331d06a405580bfa13396c329cacc1 100644 (file)
@@ -194,8 +194,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 
 msgid ""
@@ -539,12 +539,12 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 
@@ -569,7 +569,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 
 msgid ""
@@ -589,7 +589,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr ""
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 
@@ -606,7 +606,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 
@@ -634,7 +634,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 
index e5c4e601cb5cbc6b61e7d34b3f4f54e6da2533ef..64a58a08736b88c53338ba596487df4346d4ed77 100644 (file)
@@ -198,8 +198,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 "Itt megadhatók külső parancsok amelyek a collectd által lesznek futtatva "
 "amikor bizonyos küszbértékek elérésre kerülnek. A hívást kiváltó értékek a "
@@ -565,14 +565,14 @@ msgstr ""
 "eszközökön, csatolási pontokon vagy fájlrendszereken."
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 "A lemez bővítmény részletes használati statisztikákat készít a kiválasztott "
 "paticiókhoz vagy teljes lemezekhez."
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 "A DNS bővítmény részletes adatokat gyűjt a kiválasztott interfészek DNS-hez "
@@ -607,7 +607,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 "Az iptables bővítmény kiválasztott tűzfal szabályok alapján információt "
 "gyűjt a szabályonként feldolgozott bájtokról és csomagokról."
@@ -630,7 +630,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr "A memória bővítmény a memórahasználatról gyűjt információkat."
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 
@@ -649,7 +649,7 @@ msgstr ""
 "oda-vissza eltelt időt minden gép esetében."
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 
@@ -677,7 +677,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 "A tcpconns bővítmény a kiválasztott portokon lévő TCP kapcsolatokról gyűjt "
index 2451503f231a27452ecb1b6cd4ac04b635502827..c40e38f4e6761fb57edfa96fae335574a4196432 100644 (file)
@@ -199,8 +199,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 "Qui puoi definire un comando che sarà avviato da collectd quando un certo "
 "valore soglia sia raggiunto. Il valore in questione sarà passato al comando "
@@ -549,12 +549,12 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 
@@ -579,7 +579,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 
 msgid ""
@@ -599,7 +599,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr ""
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 
@@ -616,7 +616,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 
@@ -644,7 +644,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 
index 53941cf0f86f0c630b28141a07f84be6f21097cb..632dc02614e057c0d6b8b7e2e4657b11dbf5a5a4 100644 (file)
@@ -198,8 +198,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 "ここでは、特定の閾値に到達したときにcollectによって開始される外部コマンドを設"
 "定することができます。呼び出しにつながる値は、呼び出されたプログラムの標準入"
@@ -559,14 +559,14 @@ msgstr ""
 "ディスク使用量についての統計を収集します。"
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 "ディスク プラグインは、選択されたパーティションまたはディスク全体の詳細な使用"
 "統計を収集します。"
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 "DNS プラグインは、選択されたインターフェースでのDNSに関連したトラフィックにつ"
@@ -602,7 +602,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 "iptables プラグインは、選択されたファイアウォール規をモニターし、規則ごとの処"
 "理されたバイト数とパケット数についての情報を収集します。"
@@ -627,7 +627,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr "メモリー プラグインは、メモリー使用についての統計を収集します。"
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 "Netlink プラグインは、選択されたインターフェースの qdisc- や class- 、filter-"
@@ -653,7 +653,7 @@ msgstr ""
 "復時間を計測します。"
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 "プロセス プラグインは、選択されたプロセスのCPU時間やページフォルト、メモリー"
@@ -692,7 +692,7 @@ msgstr ""
 "rrdtool/\">RRDtool</a>を使用します。"
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 "TCP接続プラグインは、選択されたポートにおいてオープンなTCP接続についての情報"
index c02556fc862fb08c7d133cf9d29359f3151904ee..55fcd3207abef6e5c412662905c121c652c18fb1 100644 (file)
@@ -191,8 +191,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 
 msgid ""
@@ -536,12 +536,12 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 
@@ -566,7 +566,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 
 msgid ""
@@ -586,7 +586,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr ""
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 
@@ -603,7 +603,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 
@@ -631,7 +631,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 
index 4de2ee6b55f8fb259633d3340f0af038efe9e66e..d3318518e3b44cf87443c2545ac605a520f5d30e 100644 (file)
@@ -190,8 +190,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 "Her kan du definere eksterne kommandoer som blir startet av collectd når "
 "visse grenseverdier er blitt nådd. Verdiene som fører til aktivering vil bli "
@@ -542,14 +542,14 @@ msgstr ""
 "punkter eller filsystem typer."
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 "Disk plugin samler detaljert brukerstatistikk for utvalgte partisjoner og "
 "hele disker."
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 "DNS pluging samler detaljert statistikk om DNS relatert trafikk på utvalgte "
@@ -582,7 +582,7 @@ msgstr "Grensesnitt plugin samler trafikk statistikk på utvalgte grensesnitt."
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 "Iptables plugin vil overvåke utvalgte brannmurregler og samle informasjon om "
 "bearbeidet data per regel."
@@ -606,7 +606,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr ""
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 "Netlink plugin samler utvidet informasjon som qdisc-, klasse- og filter-"
@@ -631,7 +631,7 @@ msgstr ""
 "rundtur tar for hver vert."
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 "Prosess plugin samler informasjon som f.eks. CPU tid, sidefeil og minnebruk "
@@ -665,7 +665,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 "Tcpconns plugin samler informasjon om åpne TCP tilkoblinger på utvalgte "
index 6e34ce0725824ef37930a01d4892c2707ecdbcdb..208580d15a38b48451209cb3b514f430efafdc1b 100644 (file)
@@ -200,8 +200,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 "Tutaj można zdefiniować zewnętrzne komendy, które będą włączane przez "
 "collectd, kiedy zostaną osiągnięte konkretne wartości progowe. Wartości "
@@ -559,14 +559,14 @@ msgstr ""
 "urządzenia, dyskach i systemach plików."
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 "Wtyczka \"disk\" zbiera szczegółowe informacje z poszczególnych partycji lub "
 "całych dysków."
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 "Wtyczka \"dns\" zbiera statystyki odnośnie ruchu DNS dla wybranych "
@@ -599,7 +599,7 @@ msgstr "Wtyczka \"interface\" zbiera statystyki z wybranych interfejsów."
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 "Wtyczka \"iptables\" monitoruje wybrane reguły firewalla i zbiera statystyki "
 "o procesach, bajtach i pakietach przypadających na daną regułę."
@@ -625,7 +625,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr "Wtyczka \"memory\" zbiera statystyki dotyczące wykorzystania pamięci."
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 "Wtyczki netlink zbiera rozszerzone informacje statystyk z qdisc-, klasa- i "
@@ -650,7 +650,7 @@ msgstr ""
 "hostów oraz mierzy czasy odpowiedzi zwrotnych dla każdego z nich."
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 "Wtyczki processes zbiera informacje o czasie procesora, błędach strony i "
@@ -685,7 +685,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 "Wtyczka \"tcpconns\" zbiera informacje o otwartych połączeniach tcp dla "
index 601ac962eada35f2f946f85309e746e9155a82df..acfcb3c2db13564b5ec950624bd273cc9f458efb 100644 (file)
@@ -200,8 +200,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 "Aqui você pode definir os comandos externos que serão iniciados pelo "
 "collectd quando determinados valores limite forem atingidos. Os valores "
@@ -568,14 +568,14 @@ msgstr ""
 "diferentes dispositivos, pontos de montagem ou tipos de sistemas de arquivos."
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 "O plugin disco coleta estatísticas de uso detalhadas das partições "
 "selecionadas ou discos inteiros."
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 "O plugin dns coleta estatísticas detalhadas sobre o tráfego do dns nas "
@@ -610,7 +610,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 "O plugin iptables irá monitorar as regras de firewall selecionadas e coletar "
 "informações sobre pacotes e bytes processados pela regra."
@@ -637,7 +637,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr "O plugin de memória coleta estatísticas sobre o uso da memória."
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 "O plugin Netlink coleta informações detalhadas como qdisc-, classe- e "
@@ -663,7 +663,7 @@ msgstr ""
 "selecionados e medir o tempo de resposta para cada equipamento."
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 "O plugin de processos coleta informações como o tempo da cpu, falha de "
@@ -704,7 +704,7 @@ msgstr ""
 "a>  para desenhar os gráficos."
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 "O plugin tcpconns coleta informações sobre as conexões TCP abertas das "
index 245e6e9bf976af477ca29594afe28489bbd9e6b9..1256878ee326cdbe822abc4d16d0ff60ae161494 100644 (file)
@@ -199,8 +199,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 "Aqui pode definir os comandos externos que serão iniciados pelo collectd "
 "quando determinados valores limite forem  atingidos. Os valores passados ao "
@@ -556,14 +556,14 @@ msgstr ""
 "diferentes dispositivos, pontos de montagem ou tipos de sistemas de arquivos."
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 "O plugin disco coleta estatísticas de uso detalhadas das partições "
 "selecionadas ou discos inteiros."
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 "O plugin dns coleta estatísticas detalhadas sobre o tráfego do dns nas "
@@ -598,7 +598,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 "O plugin iptables irá monitorar as regras de firewall selecionadas e coletar "
 "informações sobre pacotes e bytes processados pela regra."
@@ -623,7 +623,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr ""
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 "O plugin Netlink coleta informações detalhadas como qdisc-, classe- e filtro "
@@ -649,7 +649,7 @@ msgstr ""
 "medir o tempo de resposta para cada host."
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 "O plugin processo coleta informações como o tempo da cpu, página falhas e "
@@ -683,7 +683,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 "O plugin tcpconns coleta informações sobre as conexões TCP abertas das "
index a326fec7992e9316973d82c584bb6191061bb4f9..84a3aa10441497c91041f647750413e778619be4 100644 (file)
@@ -198,8 +198,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 
 msgid ""
@@ -545,12 +545,12 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 
@@ -575,7 +575,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 
 msgid ""
@@ -595,7 +595,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr ""
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 
@@ -612,7 +612,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 
@@ -640,7 +640,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 
index 300b1c07da813d36222e3e1fd2da48374b02a95a..9af2767da69eac49fef389cb313821836e7fd0d2 100644 (file)
@@ -201,8 +201,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 "На странице вы можете определить  внешние команды, которые будут выполнены, "
 "когда значения достигнут определенного порога. Значения будут переданы на "
@@ -567,13 +567,13 @@ msgstr ""
 "устройствах, точках монтирования или файловых системах."
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 "Плагин 'Disk' собирает подробную статистику по выбранным разделам или дискам."
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 "Плагин 'DNS' собирает подробную статистику о DNS трафике на выбранных "
@@ -607,7 +607,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 "Плагин 'Iptables' собирает статистику с определенных правил межсетевого "
 "экрана."
@@ -634,7 +634,7 @@ msgstr ""
 "памяти."
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 "Плагин 'Netlink' собирает расширенную статистику с выбранных интерфейсов."
@@ -658,7 +658,7 @@ msgstr ""
 "отклика."
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 "Плагин 'Processes' собирает информацию, такую как время CPU, ошибки страницы "
@@ -698,7 +698,7 @@ msgstr ""
 "и представления их в виде графиков."
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 "Плагин 'TCPConns' собирает информацию об открытых TCP соединениях на "
index 53858ca5402494faafe59235dddc33b1ab9cb2fb..ff0af62b357cc42d6a3a59fb320c927324284712 100644 (file)
@@ -189,8 +189,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 
 msgid ""
@@ -534,12 +534,12 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 
@@ -564,7 +564,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 
 msgid ""
@@ -584,7 +584,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr ""
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 
@@ -601,7 +601,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 
@@ -629,7 +629,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 
index 9d738f2f33f230248b91c3e4c309a60b16f064f9..0aa1381ee1ecfa78a6338a133faf34b92ad6fd63 100644 (file)
@@ -193,8 +193,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 
 msgid ""
@@ -539,12 +539,12 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 
@@ -569,7 +569,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 
 msgid ""
@@ -589,7 +589,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr ""
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 
@@ -606,7 +606,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 
@@ -634,7 +634,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 
index ec630b69621e8a477963e076ea48cf035bc308ea..c5997ace9affcdc129b0757f1859438de89cc7d6 100644 (file)
@@ -182,8 +182,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 
 msgid ""
@@ -527,12 +527,12 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 
@@ -557,7 +557,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 
 msgid ""
@@ -577,7 +577,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr ""
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 
@@ -594,7 +594,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 
@@ -622,7 +622,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 
index 860ff95e881aa065663d919e9d9a5372a2c2dd6a..0bcff9dc0e3bd2c6b8155ff1971522f68902ee8c 100644 (file)
@@ -190,8 +190,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 
 msgid ""
@@ -535,12 +535,12 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 
@@ -565,7 +565,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 
 msgid ""
@@ -585,7 +585,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr ""
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 
@@ -602,7 +602,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 
@@ -630,7 +630,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 
index ac9ae509400a2ee2f36714f85f84403c54f55792..87136d094681b1c9d072f7160022adfc385713e3 100644 (file)
@@ -195,8 +195,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 
 msgid ""
@@ -540,12 +540,12 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 
@@ -570,7 +570,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 
 msgid ""
@@ -590,7 +590,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr ""
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 
@@ -607,7 +607,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 
@@ -635,7 +635,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 
index f5798a26510e2ff0f0176468a1ffe5e6738672cc..09d2e9e79c997a1638c8382a94da63bc0a14b755 100644 (file)
@@ -200,12 +200,12 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 "Ở đây bạn có thể định nghĩa các lệnh  bên ngoài cái mà bắt đầu bằng collectd "
 "khi những giá trị threshold nhất định được tiếp cận. Những giá trị dẫn tới "
-"invokation sẽ được feed tới một chương trình gọi là stdin"
+"invocation sẽ được feed tới một chương trình gọi là stdin"
 
 msgid ""
 "Here you can define various criteria by which the monitored iptables rules "
@@ -554,14 +554,14 @@ msgstr ""
 "thiết bị khác,  mount points hoặc những loại filesystem."
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
 "Disk plugin thu thập số liệu thống kê chi tiết về cách sử dụng cho những "
 "phân vùng lựa chọn hoặc toàn bộ đĩa."
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
 " dns plugin thu thập những thông kê chi tiết về dns liên quan đến lưu thông "
@@ -597,7 +597,7 @@ msgstr ""
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr ""
 "iptables plugin sẽ monitor những cái firewall rules được chọn và thu thập "
 "thông tin về bytes xử lý và gói trên rule. "
@@ -623,7 +623,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr ""
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
 "Netlink plugin thu thập những thông tin mở rộng như qdisc-, class- and "
@@ -649,7 +649,7 @@ msgstr ""
 "gian vận hành qua lại cho từng host"
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
 "Processes plugin thu thập thông tin như cpu time, page faults và memory "
@@ -683,7 +683,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr ""
 "Tcpconns plugin thu thập thông tin về open tcp kết nối trên những cổng được "
index fe631b5e8f1d9ff1a1b332da3c09bbeeb850c741..0075fabbc5956162ce761068e866ef7afb15d2ec 100644 (file)
@@ -201,8 +201,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 "在这里,您可以定义外部命令,当 Collectd 达到一定阈值时,将启动命令。阀值将会"
 "作为命令的标准输入。"
@@ -550,12 +550,12 @@ msgid ""
 msgstr "df 插件收集磁盘空间使用情况、挂载点及文件系统相关信息。"
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr "disk 插件收集磁盘分区使用情况及相关信息。"
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr "dns 插件收集 dns 数据流相关信息。"
 
@@ -584,7 +584,7 @@ msgstr "Interface 插件用于收集选定接口的数据包的统计信息。"
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr "iptables 插件将监测选定防火墙规则和收集关于每个规则处理的数据包信息。"
 
 msgid ""
@@ -606,7 +606,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr "memory 插件收集关于内存使用情况的统计信息。"
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr "netlink 插件收集为选定接口 qdisc-、class- 和 filter- 的扩展数据。"
 
@@ -626,7 +626,7 @@ msgid ""
 msgstr "ping 插件将发送 icmp echo replies 到选定主机来测量每台主机的响应时间。"
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr "processes 插件收集选定进程的 cpu 时间、页面错误和内存使用信息。"
 
@@ -660,7 +660,7 @@ msgstr ""
 "表。"
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr "tcpconns 插件收集选定端口 TCP 连接信息。"
 
index f0bfae35da74af5e614e655cc530b1a244940718..9661a7b906d39958673a54ed93cf7150c67c0b95 100644 (file)
@@ -201,8 +201,8 @@ msgstr ""
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
-"certain threshold values have been reached. The values leading to invokation "
-"will be feeded to the the called programs stdin."
+"certain threshold values have been reached. The values leading to invocation "
+"will be fed to the the called programs stdin."
 msgstr ""
 "在這裡,您可以定義外部指令,當 Collectd 達到一定閾值時,將啟動指令。閥值將會"
 "作為指令的標準輸入。"
@@ -550,12 +550,12 @@ msgid ""
 msgstr "df 外掛收集磁碟空間使用情況、掛載點及檔案系統相關資訊。"
 
 msgid ""
-"The disk plugin collects detailled usage statistics for selected partitions "
+"The disk plugin collects detailed usage statistics for selected partitions "
 "or whole disks."
 msgstr "disk 外掛收集磁碟分割槽使用情況及相關資訊。"
 
 msgid ""
-"The dns plugin collects detailled statistics about dns related traffic on "
+"The dns plugin collects detailed statistics about dns related traffic on "
 "selected interfaces."
 msgstr "dns 外掛收集 dns 資料流相關資訊。"
 
@@ -584,7 +584,7 @@ msgstr "Interface 外掛用於收集選定介面的資料包的統計資訊。"
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
-"informations about processed bytes and packets per rule."
+"information about processed bytes and packets per rule."
 msgstr "iptables 外掛將監測選定防火牆規則和收集關於每個規則處理的資料包資訊。"
 
 msgid ""
@@ -606,7 +606,7 @@ msgid "The memory plugin collects statistics about the memory usage."
 msgstr "memory 外掛收集關於記憶體使用情況的統計資訊。"
 
 msgid ""
-"The netlink plugin collects extended informations like qdisc-, class- and "
+"The netlink plugin collects extended information like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr "netlink 外掛收集為選定介面 qdisc-、class- 和 filter- 的擴充套件資料。"
 
@@ -626,7 +626,7 @@ msgid ""
 msgstr "ping 外掛將傳送 icmp echo replies 到選定主機來測量每臺主機的響應時間。"
 
 msgid ""
-"The processes plugin collects informations like cpu time, page faults and "
+"The processes plugin collects information like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr "processes 外掛收集選定程序的 cpu 時間、頁面錯誤和記憶體使用資訊。"
 
@@ -660,7 +660,7 @@ msgstr ""
 "表。"
 
 msgid ""
-"The tcpconns plugin collects informations about open tcp connections on "
+"The tcpconns plugin collects information about open tcp connections on "
 "selected ports."
 msgstr "tcpconns 外掛收集選定埠 TCP 連線資訊。"
 
index 8cc918e3db8409a638dfcd99528e98a347c7a26c..1e841fec8aa9bb4dff35e628ef04a5f1fa6c77e3 100644 (file)
@@ -66,6 +66,9 @@ config statistics 'collectd_cpu'
 config statistics 'collectd_cpufreq'
        option enable '0'
 
+config statistics 'collectd_curl'
+       option enable '0'
+
 config statistics 'collectd_df'
        option enable '0'
        option Devices '/dev/mtdblock/4'
index 2bf63c1fe668081e9f5c6e6ea8530cb3d45b8a26..7d1349b249939ce2cebde7c0363c6821ad6edc48 100755 (executable)
@@ -117,6 +117,21 @@ function config_exec( c )
        return str
 end
 
+function config_curl( c )
+       local str = ""
+
+       for s in pairs(sections) do
+               if sections[s][".type"] == "collectd_curl_page" then
+                       str = str .. "\t<Page \"" .. sections[s].name .. "\">\n" ..
+                                                "\t\tURL \"" .. sections[s].url .. "\"\n" ..
+                                                "\t\tMeasureResponseTime true\n" ..
+                                                "\t</Page>\n"
+               end
+       end
+
+       return str
+end
+
 function config_iptables( c )
        local str = ""
 
@@ -297,6 +312,8 @@ plugins = {
                { }
        },
 
+       curl = config_curl,
+
        df      = {
                { },
                { "IgnoreSelected" },
index 11f34fbad4591edf411047be421d55c8b7b992cd..e38dec4b91f73ff71e75c22983c553e2acc5e0c6 100644 (file)
@@ -216,7 +216,7 @@ s.addremove = true
 
 
 t = s:option(ListValue, "type", translate("Policy"),
-       translate("<em>Via proxy</em> routes requests to the given target via the specifed upstream proxy, <em>Reject access</em> disables any upstream proxy for the target"))
+       translate("<em>Via proxy</em> routes requests to the given target via the specified upstream proxy, <em>Reject access</em> disables any upstream proxy for the target"))
 
 t:value("proxy", translate("Via proxy"))
 t:value("reject", translate("Reject access"))
index 69cd99e5b952d97871eb1f86cd59e7d5cadaf47d..f6f2ba32eeaad2dd90d97b2c60750cc668430e86 100644 (file)
@@ -16,7 +16,7 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 2a2cbdc84a782c7b990935a163e1460bf8e97c72..5d350d62ce6e5f8dcbc6385f9f6e9e5220d8cb8a 100644 (file)
@@ -12,7 +12,7 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index d444872437858772fb62b1b71a418c419d91f48d..aa719c6f3ebd76cb896261a2a0268e5b850ce06b 100644 (file)
@@ -14,7 +14,7 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 718424e0ceec0f4958467166cb52ca3a212f332b..2f4f59fb932a99d9563a6323c5b0919578bbbbd2 100644 (file)
@@ -14,7 +14,7 @@ msgstr ""
 "X-Generator: Pootle 2.0.4\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 4650f3e1fc856a226c91ab6e7d10d520f6323fa5..276797b9275d28cc6239d9d937f23d9b9cb07676 100644 (file)
@@ -13,7 +13,7 @@ msgstr ""
 "X-Generator: Translate Toolkit 1.1.1\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index c9faff194aab556f49b39a589801c68993bb7a2e..ec99699927f9474db0b16fec4c2118c4437444f8 100644 (file)
@@ -14,7 +14,7 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index d359442a20490841425d18c3c017107fec86d5d1..38f86d69d1764b8d55705e679f3c93dd61e3dfbd 100644 (file)
@@ -14,7 +14,7 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 5c4ddddb0974dc77c3d2d5690ca5dfeb647e9268..a1368218b65ec4483b1c1dfe3cb4c3c8178a592a 100644 (file)
@@ -9,7 +9,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 5c4ddddb0974dc77c3d2d5690ca5dfeb647e9268..a1368218b65ec4483b1c1dfe3cb4c3c8178a592a 100644 (file)
@@ -9,7 +9,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 34528c1139987934ff4b42701c794800c11217bf..4fea270dbcbd132f3cd284928e0ea3833f56eb5b 100644 (file)
@@ -14,7 +14,7 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 03ea890fee18a53d418ee449bb42191cb72b0b58..00dddaaf572294a51fb8cf9e67181523752ce770 100644 (file)
@@ -14,7 +14,7 @@ msgstr ""
 "X-Generator: Pootle 2.0.4\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 08ed7dc47a0e9dd7b6fcf9dc1c39bfa2e6118215..51079ddae934106eeaecdf5e3c03fefa995c16a3 100644 (file)
@@ -8,7 +8,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 5c4ddddb0974dc77c3d2d5690ca5dfeb647e9268..a1368218b65ec4483b1c1dfe3cb4c3c8178a592a 100644 (file)
@@ -9,7 +9,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 8e3bfc7f75a74ee82be5e36b3f1d60c94cece725..962455a0ced2f6c1e0ee6560a857fe08c7986c37 100644 (file)
@@ -13,7 +13,7 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index ef7ffdad878c589eddc021289586043e8ab83589..92945ad2279fa3214728a9f9ed09d65af91e991d 100644 (file)
@@ -14,7 +14,7 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 833a7fa62138b4a232c9f9a73e770c51edd1e84a..aa8f498ef2e0c58f18d434a471552bacbc282a9e 100644 (file)
@@ -14,7 +14,7 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 799fecbc9fdbbc1f9a0155a5633e7b1e1c577e41..4acfdf6044d72f035d06e9637c8f6e0bc62e7c17 100644 (file)
@@ -10,7 +10,7 @@ msgstr ""
 "20)) ? 1 : 2;\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 8e7362a4582aa5acdda02e82f47acd95c7d43115..64f20368065bd2ef7050543d0b66a0e41064d7ca 100644 (file)
@@ -16,7 +16,7 @@ msgstr ""
 "интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 128c71d4f2d49fcb8d3988b02637a1931889c1a6..3f97c8864b948b2e36790f90f25c343f9f38384c 100644 (file)
@@ -9,7 +9,7 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index d49df605e7296a6c051a75796eab50f409b42ff6..1daf6b2f491067bb212dd130a7e078d09e9ad5cf 100644 (file)
@@ -10,7 +10,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 712fad92aa51c65d9737429a3634171df04907cb..a560550e21b95230a6e88a3f83e5c4f104e6dc5f 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index a7af49df2f83830786f65c9a181ca671e177db0e..99ec20164efdfca158296074f1669103d37d3fdb 100644 (file)
@@ -9,7 +9,7 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=0;\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 2e268ba7fe8f435c6f3fb953238e5cc1b2de144b..73742f96178a9fcad67ab438cb6529d67a760dcf 100644 (file)
@@ -10,7 +10,7 @@ msgstr ""
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 6c825f53681f794ecdb5d044545f27a73489099d..f9df4b75255f1ded6eaa5c9825e3ef58d75d79f5 100644 (file)
@@ -14,7 +14,7 @@ msgstr ""
 "X-Generator: Pootle 1.1.0\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 828e952e097257b193ae951083406e945dfa6804..f56bd0611be5851968edb79d38069d99ff4e0387 100644 (file)
@@ -12,7 +12,7 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 849fcdeffb983d11c0c11305eceda4051e258e8c..ae7b640850399aa393a5c48eaf630e10b8d0b01e 100644 (file)
@@ -8,7 +8,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 
 msgid ""
-"<em>Via proxy</em> routes requests to the given target via the specifed "
+"<em>Via proxy</em> routes requests to the given target via the specified "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
index 81280cdcda3983cad689ffc4ef1b6facebe5fbc2..b8277d4cf34a4e825d23e370788a229866f40f53 100644 (file)
@@ -1,12 +1,12 @@
 #
-# Yangfl <mmyangfl@gmail.com>, 2017.
+# Yangfl <mmyangfl@gmail.com>, 2017, 2018.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2013-10-08 14:06+0200\n"
-"PO-Revision-Date: 2017-10-29 15:56+0800\n"
+"PO-Revision-Date: 2018-10-01 11:39+0800\n"
 "Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
 "Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_CN\n"
@@ -65,7 +65,7 @@ msgid "Config file directory"
 msgstr "配置文件的目录"
 
 msgid "Custom WEB UI directory"
-msgstr ""
+msgstr "自定义 WEB UI 目录"
 
 msgid "DHT enabled"
 msgstr "启用 DHT"
index 6edf3b6d22c22b837ac95d9304c6b3f5511470f3..f73fc86349f04880ef0a28cde2ea4c3ca33c06e5 100644 (file)
@@ -1,12 +1,12 @@
 #
-# Yangfl <mmyangfl@gmail.com>, 2017.
+# Yangfl <mmyangfl@gmail.com>, 2017, 2018.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2013-10-08 14:06+0200\n"
-"PO-Revision-Date: 2017-10-29 15:56+0800\n"
+"PO-Revision-Date: 2018-10-01 11:39+0800\n"
 "Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
 "Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_TW\n"
@@ -65,7 +65,7 @@ msgid "Config file directory"
 msgstr "配置檔案的目錄"
 
 msgid "Custom WEB UI directory"
-msgstr ""
+msgstr "自訂 WEB UI 目錄"
 
 msgid "DHT enabled"
 msgstr "啟用 DHT"
index 775831d9d00090e84dbbf31ecb7b2a8d291fc50b..0c5890810e9aaca12c69222097a91207d25f04a8 100644 (file)
@@ -27,7 +27,6 @@ function index()
        entry({"admin", "services", "travelmate", "logread"}, call("logread"), nil).leaf = true
        entry({"admin", "services", "travelmate", "status"}, call("status_update"), nil).leaf = true
        entry({"admin", "services", "travelmate", "action"}, call("trm_action"), nil).leaf = true
-       entry({"admin", "services", "travelmate", "apqr"}, template("travelmate/ap_qr")).leaf = true
        entry({"admin", "services", "travelmate", "wifiscan"}, template("travelmate/wifi_scan")).leaf = true
        entry({"admin", "services", "travelmate", "wifiadd"}, form("travelmate/wifi_add", {hideresetbtn=true, hidesavebtn=true})).leaf = true
        entry({"admin", "services", "travelmate", "wifiedit"}, form("travelmate/wifi_edit", {hideresetbtn=true, hidesavebtn=true})).leaf = true
index a1a7ed72c3602e0ad3b857062118589b82bac32b..e98cde719c317bdb3036bbdd42ebe85d0f83e84a 100644 (file)
@@ -56,7 +56,7 @@ end
 
 s = m:section(NamedSection, "global", "travelmate")
 
-o1 = s:option(Flag, "trm_enabled", translate("Enable travelmate"))
+o1 = s:option(Flag, "trm_enabled", translate("Enable Travelmate"))
 o1.default = o1.disabled
 o1.rmempty = false
 
@@ -65,30 +65,23 @@ o2 = s:option(Flag, "trm_captive", translate("Captive Portal Detection"),
 o2.default = o2.enabled
 o2.rmempty = false
 
-o3 = s:option(ListValue, "trm_iface", translate("Uplink / Trigger interface"),
+o3 = s:option(Flag, "trm_proactive", translate("ProActive Uplink Switch"),
+       translate("Proactively scan and switch to a higher prioritized uplink, despite of an already existing connection."))
+o3.default = o3.enabled
+o3.rmempty = false
+
+o4 = s:option(ListValue, "trm_iface", translate("Uplink / Trigger interface"),
        translate("Name of the used uplink interface."))
 if dump then
        local i, v
        for i, v in ipairs(dump.interface) do
                if v.interface ~= "loopback" and v.interface ~= "lan" then
-                       o3:value(v.interface)
+                       o4:value(v.interface)
                end
        end
 end
-o3.default = trmiface
-o3.rmempty = false
-
-if fs.access("/usr/bin/qrencode") then
-       btn = s:option(Button, "btn", translate("View AP QR-Codes"),
-               translate("Connect your Android or iOS devices to your router's WiFi using the shown QR code."))
-       btn.inputtitle = translate("QR-Codes")
-       btn.inputstyle = "apply"
-       btn.disabled = false
-
-       function btn.write()
-               luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate", "apqr"))
-       end
-end
+o4.default = trmiface
+o4.rmempty = false
 
 -- Runtime information
 
@@ -97,16 +90,15 @@ ds.template = "travelmate/runtime"
 
 -- Extra options
 
-e = m:section(NamedSection, "global", "travelmate", translate("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(Flag, "trm_debug", translate("Enable verbose debug logging"))
+e1 = e:option(Flag, "trm_debug", translate("Enable Verbose Debug Logging"))
 e1.default = e1.disabled
 e1.rmempty = false
 
-e2 = e:option(Value, "trm_radio", translate("Radio selection"),
-       translate("Restrict travelmate to a dedicated radio, e.g. 'radio0'."))
-e2.datatype = "and(uciname,rangelength(6,6))"
+e2 = e:option(Value, "trm_radio", translate("Radio Selection / Order"),
+       translate("Restrict travelmate to a single radio (e.g. 'radio1') or change the overall scanning order (e.g. 'radio1 radio2 radio0')."))
 e2.rmempty = true
 
 e3 = e:option(Value, "trm_triggerdelay", translate("Trigger Delay"),
diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/ap_qr.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/ap_qr.htm
deleted file mode 100644 (file)
index 3f01a81..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<%#
-Copyright 2018 Dirk Brenken (dev@brenken.org)
-This is free software, licensed under the Apache License, Version 2.0
--%>
-
-<%+header%>
-
-<div class="cbi-map">
-       <div class="cbi-map-descr">
-               <%=translate("Here you'll find the QR codes from all of your configured Access Points. It allows you to connect your Android or iOS devices to your router's WiFi using the QR code shown below.")%>
-       </div>
-       <%- local uci = require("luci.model.uci").cursor()
-
-               uci:foreach("wireless", "wifi-iface", function(s)
-                       local device = s.device or ""
-                       local mode = s.mode or ""
-                       local ssid = s.ssid or ""
-                       local enc = s.encryption or ""
-                       local key = s.key or ""
-                       local hidden = s.hidden or "false"
-                       local disabled = s.disabled or ""
-                       local wep_slots = {s.key1 or "", s.key2 or "", s.key3 or "", s.key4 or ""}
-
-                       if device and mode == "ap" and disabled ~= "1" then
-                               if string.match(enc, '^psk') then
-                                       enc = "WPA"
-                               elseif string.match(enc, '^wep') then
-                                       enc = "WEP"
-                                       if tonumber(key) then
-                                               key = wep_slots[tonumber(key)]
-                                       end
-                               elseif enc == "none" then
-                                       enc = "nopass"
-                                       key = "nokey"
-                               else
-                                       enc = ""
-                               end
-
-                               if hidden == "1" then
-                                       hidden = "true"
-                               end
-
-                               if ssid and enc and key then
-                                       local e_ssid = string.gsub(ssid,"[\"\\';:, ]",[[\\\%1]])
-                                       local e_key = string.gsub(key,"[\"\\';:, ]",[[\\\%1]])
-                                       local qrcode = ""
-
-                                       qrcode = luci.sys.exec("/usr/bin/qrencode --inline --8bit --type=SVG --output=- 'WIFI:S:\"'" .. e_ssid .. "'\";T:'" .. enc .. "';P:\"'" .. e_key .. "'\";H:'" .. hidden .. "';'")
-       -%>
-       <div class="cbi-section">
-               <h3>AP on <%=device%> with SSID "<%=ssid%>"</h3>
-               <h3><%=qrcode%></h3>
-       </div>
-       <%-
-                               end
-                       end
-               end)
-       -%>
-</div>
-<div class="cbi-page-actions right">
-       <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/tab_from_cbi')%>" method="post">
-               <input class="cbi-button cbi-button-reset" type="submit" value="<%:Back to overview%>" />
-       </form>
-</div>
-
-<%+footer%>
index 272612600cd95f6e199c19a3a810b9ba869030a3..1a53b577d12afb98202afb95bfa045bea6cfd2f3 100644 (file)
@@ -75,6 +75,15 @@ This is free software, licensed under the Apache License, Version 2.0
                }
        }
 
+       function toggle_qrcode() {
+               var view = document.getElementById("qrcode");
+               if (view.style.display === "none") {
+                       view.style.display = "block";
+               } else {
+                       view.style.display = "none";
+               }
+       }
+
        XHR.get('<%=luci.dispatcher.build_url("admin", "services", "travelmate", "status")%>', null,
        function(x, json_info)
        {
@@ -142,3 +151,74 @@ This is free software, licensed under the Apache License, Version 2.0
                <span id="btn1_running" style="display:inline-block; width:16px; height:16px; margin:0 5px"></span>
        </div>
 </div>
+<div class="cbi-value" id="button_2">
+       <label class="cbi-value-title" for="button_2"><%:View AP QR-Codes%></label>
+       <div class="cbi-value-field">
+               <input class="cbi-button cbi-button-apply" type="button" value="<%:Show/Hide QR-Codes%>" onclick="toggle_qrcode()" />
+       </div>
+</div>
+<div class="cbi-value" style="margin-bottom: 0px">
+       <span class="cbi-value" style="display: none" id="qrcode">
+<%-
+               local fs  = require("nixio.fs")
+               local uci = require("luci.model.uci").cursor()
+               local qrcode
+
+               uci:foreach("wireless", "wifi-iface", function(s)
+                       local device = s.device or ""
+                       local mode = s.mode or ""
+                       local ssid = s.ssid or ""
+                       local enc = s.encryption or ""
+                       local key = s.key or ""
+                       local hidden = s.hidden or "false"
+                       local disabled = s.disabled or ""
+                       local wep_slots = {s.key1 or "", s.key2 or "", s.key3 or "", s.key4 or ""}
+
+                       if device and mode == "ap" and disabled ~= "1" then
+                               if string.match(enc, '^psk') then
+                                       enc = "WPA"
+                               elseif string.match(enc, '^wep') then
+                                       enc = "WEP"
+                                       if tonumber(key) then
+                                               key = wep_slots[tonumber(key)]
+                                       end
+                               elseif enc == "none" then
+                                       enc = "nopass"
+                                       key = "nokey"
+                               else
+                                       enc = ""
+                               end
+
+                               if hidden == "1" then
+                                       hidden = "true"
+                               end
+
+                               if ssid and enc and key then
+                                       local e_ssid = string.gsub(ssid,"[\"\\';:, ]",[[\\\%1]])
+                                       local e_key = string.gsub(key,"[\"\\';:, ]",[[\\\%1]])
+
+                                       if fs.access("/usr/bin/qrencode") then
+                                               qrcode = luci.sys.exec("/usr/bin/qrencode --inline --8bit --type=SVG --output=- 'WIFI:S:\"'" .. e_ssid .. "'\";T:'" .. enc .. "';P:\"'" .. e_key .. "'\";H:'" .. hidden .. "';'")
+-%>
+               <div class="cbi-value" style="border-bottom: 0px; margin-bottom: 0px; padding: 0.25em 0.6em; text-align: left">
+                       <%=qrcode%>
+               </div>
+               <div class="cbi-value" style="border-bottom: 0px; margin-bottom: 0px; padding: 0.25em 0.6em; text-align: left">
+                       <em><%:AP on %><%=device%><%: with SSID %>"<%=ssid%>"</em>
+                       <hr />
+               </div>
+<%-
+                                       end
+                               end
+                       end
+               end)
+               if not qrcode then
+-%>
+               <div class="cbi-value" style="border-bottom: 0px; margin-bottom: 0px; padding: 0.25em 0.6em; text-align: left">
+                       <em><%:For QR-Code support please install package 'qrencode'!%></em>
+               </div>
+<%-
+               end
+-%>
+       </span>
+</div>
index ab3fe77fbc9415eb9bcd2b931ab80d9e3dfbe8fa..67568f179e19887248da00a1b5d9f50f7eb08abf 100644 (file)
@@ -18,7 +18,7 @@ This is free software, licensed under the Apache License, Version 2.0
                if info.wep == true then
                        return translate("WEP")
                elseif info.wpa > 0 then
-                       return "%s (%s/%s)" %{label[info.wpa], table.concat(info.auth_suites), table.concat(info.group_ciphers)}
+                       return "%s (%s/%s)" %{label[info.wpa] or translate("Unknown"), table.concat(info.auth_suites), table.concat(info.group_ciphers)}
                elseif info.enabled then
                        return translate("Unknown")
                else
index f608a2aa9a66af827aa07b13130a9eb43713f401..ee081d62d29c63508949caf535ddd502cdf1674f 100644 (file)
@@ -12,6 +12,9 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=0;\n"
 "Language: ja\n"
 
+msgid "AP on"
+msgstr ""
+
 msgid "Action"
 msgstr ""
 
@@ -59,12 +62,6 @@ msgid ""
 msgstr ""
 "トラベル ルーター機能を有効化するための、 Travelmate パッケージの設定です。"
 
-msgid ""
-"Connect your Android or iOS devices to your router's WiFi using the shown QR "
-"code."
-msgstr ""
-"Android や iOS デバイスを、表示される QR コードを使用して WiFi に接続します。"
-
 msgid "Connection Limit"
 msgstr "接続制限"
 
@@ -113,16 +110,16 @@ msgstr "無線アップリンク設定の編集"
 msgid "Edit this Uplink"
 msgstr "このアップリンクを編集"
 
-msgid "Enable travelmate"
+msgid "Enable Travelmate"
 msgstr "Travelmate の有効化"
 
-msgid "Enable verbose debug logging"
+msgid "Enable Verbose Debug Logging"
 msgstr "詳細なデバッグ ログの有効化"
 
 msgid "Encryption"
 msgstr "暗号化"
 
-msgid "Extra options"
+msgid "Extra Options"
 msgstr "拡張オプション"
 
 msgid "Faulty Stations"
@@ -131,6 +128,9 @@ msgstr ""
 msgid "Find and join network on"
 msgstr "ネットワークの検索と参加:"
 
+msgid "For QR-Code support please install package 'qrencode'!"
+msgstr ""
+
 msgid ""
 "For further information <a href=\"%s\" target=\"_blank\">see online "
 "documentation</a>"
@@ -147,15 +147,6 @@ msgstr "TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "TKIP と CCMP (AES)"
 
-msgid ""
-"Here you'll find the QR codes from all of your configured Access Points. It "
-"allows you to connect your Android or iOS devices to your router's WiFi "
-"using the QR code shown below."
-msgstr ""
-"ここには、構成済みの全アクセスポイントの QR コードを表示しています。以下の "
-"QR コードを使用して、 Android または iOS デバイスをルータの WiFi に接続するこ"
-"とができます。"
-
 msgid ""
 "How long should travelmate wait for a successful wlan uplink connection."
 msgstr "Travelmate が無線アップリンクへの接続成功を待つ時間です。"
@@ -237,11 +228,8 @@ msgid ""
 "one. The currently used uplink is emphasized in blue, faulty stations in red."
 msgstr ""
 
-msgid "QR-Codes"
-msgstr "QR-コード"
-
-msgid "Radio selection"
-msgstr "無線の選択"
+msgid "Radio Selection / Order"
+msgstr ""
 
 msgid "Repeat scan"
 msgstr "再スキャン"
@@ -252,8 +240,10 @@ msgstr ""
 msgid "Restart Travelmate"
 msgstr ""
 
-msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
-msgstr "Travelmate が指定された無線に接続するよう制御します。(例: 'radio0')"
+msgid ""
+"Restrict travelmate to a single radio (e.g. 'radio1') or change the overall "
+"scanning order (e.g. 'radio1 radio2 radio0')."
+msgstr ""
 
 msgid "Retry limit to connect to an uplink."
 msgstr "アップリンクへの接続を試行する回数です。"
@@ -273,6 +263,9 @@ msgstr "保存"
 msgid "Scan"
 msgstr "スキャン:"
 
+msgid "Show/Hide QR-Codes"
+msgstr ""
+
 msgid "Signal Quality Threshold"
 msgstr "シグナル品質閾値"
 
@@ -388,6 +381,35 @@ msgstr ""
 msgid "hidden"
 msgstr "(ステルス)"
 
+msgid "with SSID"
+msgstr ""
+
+#~ msgid ""
+#~ "Connect your Android or iOS devices to your router's WiFi using the shown "
+#~ "QR code."
+#~ msgstr ""
+#~ "Android や iOS デバイスを、表示される QR コードを使用して WiFi に接続しま"
+#~ "す。"
+
+#~ msgid ""
+#~ "Here you'll find the QR codes from all of your configured Access Points. "
+#~ "It allows you to connect your Android or iOS devices to your router's "
+#~ "WiFi using the QR code shown below."
+#~ msgstr ""
+#~ "ここには、構成済みの全アクセスポイントの QR コードを表示しています。以下"
+#~ "の QR コードを使用して、 Android または iOS デバイスをルータの WiFi に接続"
+#~ "することができます。"
+
+#~ msgid "QR-Codes"
+#~ msgstr "QR-コード"
+
+#~ msgid "Radio selection"
+#~ msgstr "無線の選択"
+
+#~ msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
+#~ msgstr ""
+#~ "Travelmate が指定された無線に接続するよう制御します。(例: 'radio0')"
+
 #~ msgid "Last rundate"
 #~ msgstr "最終実行日時"
 
index 5079c5bc8b7baa21c90f01a2740ad43e4ea10c7a..4bc72fe25ae777baaf3bec9ccc00ae5bf1a474ae 100644 (file)
@@ -114,16 +114,16 @@ msgstr "Editar Configurações da Rede sem fio de saída"
 msgid "Edit this Uplink"
 msgstr "Editar Configurações da Rede de saída"
 
-msgid "Enable travelmate"
+msgid "Enable Travelmate"
 msgstr "Habilitar o Travelmate"
 
-msgid "Enable verbose debug logging"
+msgid "Enable Verbose Debug Logging"
 msgstr "Habilitar os registros de depuração detalhados"
 
 msgid "Encryption"
 msgstr "Cifragem"
 
-msgid "Extra options"
+msgid "Extra Options"
 msgstr "Opções adicionais"
 
 msgid "Faulty Stations"
index b97e76dd05d270d6fa84f896efae86c6d1dae70d..8d03cfebdaddf2d7a8c85eb9989f0f3bfa98a44e 100644 (file)
@@ -15,6 +15,9 @@ msgstr ""
 "Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
 "интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
 
+msgid "AP on"
+msgstr ""
+
 msgid "Action"
 msgstr ""
 
@@ -59,11 +62,6 @@ msgid ""
 "functionality."
 msgstr "Настройка утилиты TravelMate - помощника путешественника. "
 
-msgid ""
-"Connect your Android or iOS devices to your router's WiFi using the shown QR "
-"code."
-msgstr ""
-
 msgid "Connection Limit"
 msgstr "Ограничение соединений"
 
@@ -112,16 +110,16 @@ msgstr "Редактировать настройки беспроводной 
 msgid "Edit this Uplink"
 msgstr "Редактировать настройки сети"
 
-msgid "Enable travelmate"
+msgid "Enable Travelmate"
 msgstr "Включить Travelmate"
 
-msgid "Enable verbose debug logging"
+msgid "Enable Verbose Debug Logging"
 msgstr "Включить подробное ведение журнала отладки"
 
 msgid "Encryption"
 msgstr "Шифрование"
 
-msgid "Extra options"
+msgid "Extra Options"
 msgstr "Дополнительные настройки"
 
 msgid "Faulty Stations"
@@ -130,6 +128,9 @@ msgstr ""
 msgid "Find and join network on"
 msgstr "Найти сеть для подключения используя"
 
+msgid "For QR-Code support please install package 'qrencode'!"
+msgstr ""
+
 msgid ""
 "For further information <a href=\"%s\" target=\"_blank\">see online "
 "documentation</a>"
@@ -146,12 +147,6 @@ msgstr "Назначить TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "Назначить TKIP и CCMP (AES)"
 
-msgid ""
-"Here you'll find the QR codes from all of your configured Access Points. It "
-"allows you to connect your Android or iOS devices to your router's WiFi "
-"using the QR code shown below."
-msgstr ""
-
 msgid ""
 "How long should travelmate wait for a successful wlan uplink connection."
 msgstr ""
@@ -233,12 +228,9 @@ msgid ""
 "one. The currently used uplink is emphasized in blue, faulty stations in red."
 msgstr ""
 
-msgid "QR-Codes"
+msgid "Radio Selection / Order"
 msgstr ""
 
-msgid "Radio selection"
-msgstr "Выбор Wi-Fi устройства"
-
 msgid "Repeat scan"
 msgstr "Повторить поиск"
 
@@ -248,8 +240,10 @@ msgstr ""
 msgid "Restart Travelmate"
 msgstr ""
 
-msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
-msgstr "Выделить TravelMate-у конкретное Wi-Fi устройство, например 'radio0'."
+msgid ""
+"Restrict travelmate to a single radio (e.g. 'radio1') or change the overall "
+"scanning order (e.g. 'radio1 radio2 radio0')."
+msgstr ""
 
 msgid "Retry limit to connect to an uplink."
 msgstr ""
@@ -269,6 +263,9 @@ msgstr "Сохранить"
 msgid "Scan"
 msgstr "Поиск"
 
+msgid "Show/Hide QR-Codes"
+msgstr ""
+
 msgid "Signal Quality Threshold"
 msgstr ""
 
@@ -382,6 +379,16 @@ msgstr ""
 msgid "hidden"
 msgstr "скрытый"
 
+msgid "with SSID"
+msgstr ""
+
+#~ msgid "Radio selection"
+#~ msgstr "Выбор Wi-Fi устройства"
+
+#~ msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
+#~ msgstr ""
+#~ "Выделить TravelMate-у конкретное Wi-Fi устройство, например 'radio0'."
+
 #~ msgid "Last rundate"
 #~ msgstr "Дата последнего запуска"
 
index b8c235ff4880937990158591c7b21dcc4cbc36c9..c712c10658d0af361642e2eb4dfedd93da6149c1 100644 (file)
@@ -1,6 +1,9 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8"
 
+msgid "AP on"
+msgstr ""
+
 msgid "Action"
 msgstr ""
 
@@ -45,11 +48,6 @@ msgid ""
 "functionality."
 msgstr ""
 
-msgid ""
-"Connect your Android or iOS devices to your router's WiFi using the shown QR "
-"code."
-msgstr ""
-
 msgid "Connection Limit"
 msgstr ""
 
@@ -96,16 +94,16 @@ msgstr ""
 msgid "Edit this Uplink"
 msgstr ""
 
-msgid "Enable travelmate"
+msgid "Enable Travelmate"
 msgstr ""
 
-msgid "Enable verbose debug logging"
+msgid "Enable Verbose Debug Logging"
 msgstr ""
 
 msgid "Encryption"
 msgstr ""
 
-msgid "Extra options"
+msgid "Extra Options"
 msgstr ""
 
 msgid "Faulty Stations"
@@ -114,6 +112,9 @@ msgstr ""
 msgid "Find and join network on"
 msgstr ""
 
+msgid "For QR-Code support please install package 'qrencode'!"
+msgstr ""
+
 msgid ""
 "For further information <a href=\"%s\" target=\"_blank\">see online "
 "documentation</a>"
@@ -128,12 +129,6 @@ msgstr ""
 msgid "Force TKIP and CCMP (AES)"
 msgstr ""
 
-msgid ""
-"Here you'll find the QR codes from all of your configured Access Points. It "
-"allows you to connect your Android or iOS devices to your router's WiFi "
-"using the QR code shown below."
-msgstr ""
-
 msgid ""
 "How long should travelmate wait for a successful wlan uplink connection."
 msgstr ""
@@ -213,10 +208,7 @@ msgid ""
 "one. The currently used uplink is emphasized in blue, faulty stations in red."
 msgstr ""
 
-msgid "QR-Codes"
-msgstr ""
-
-msgid "Radio selection"
+msgid "Radio Selection / Order"
 msgstr ""
 
 msgid "Repeat scan"
@@ -228,7 +220,9 @@ msgstr ""
 msgid "Restart Travelmate"
 msgstr ""
 
-msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
+msgid ""
+"Restrict travelmate to a single radio (e.g. 'radio1') or change the overall "
+"scanning order (e.g. 'radio1 radio2 radio0')."
 msgstr ""
 
 msgid "Retry limit to connect to an uplink."
@@ -249,6 +243,9 @@ msgstr ""
 msgid "Scan"
 msgstr ""
 
+msgid "Show/Hide QR-Codes"
+msgstr ""
+
 msgid "Signal Quality Threshold"
 msgstr ""
 
@@ -353,3 +350,6 @@ msgstr ""
 
 msgid "hidden"
 msgstr ""
+
+msgid "with SSID"
+msgstr ""
index e52d8e85466305174536b339b75cdbdc99b42798..6bfa3532f46e523faf8bc365e2e91f122cc49e3c 100644 (file)
@@ -11,6 +11,12 @@ msgstr ""
 "PO-Revision-Date: 2018-08-17 17:06+0800\n"
 "X-Generator: Gtranslator 2.91.7\n"
 
+msgid "AP on"
+msgstr ""
+
+msgid "Action"
+msgstr ""
+
 msgid "Add Uplink"
 msgstr "添加上行连接"
 
@@ -52,11 +58,6 @@ msgid ""
 "functionality."
 msgstr "配置 travelmate 包,以启用旅行路由器功能。"
 
-msgid ""
-"Connect your Android or iOS devices to your router's WiFi using the shown QR "
-"code."
-msgstr "使用显示的 QR 码,将您的 Android 或 iOS 设备连接到路由器 WiFi。"
-
 msgid "Connection Limit"
 msgstr "连接限制"
 
@@ -103,21 +104,27 @@ msgstr "编辑无线上行连接配置"
 msgid "Edit this Uplink"
 msgstr "编辑此上行连接"
 
-msgid "Enable travelmate"
+msgid "Enable Travelmate"
 msgstr "启用 travelmate"
 
-msgid "Enable verbose debug logging"
+msgid "Enable Verbose Debug Logging"
 msgstr "启用详细调试日志"
 
 msgid "Encryption"
 msgstr "加密"
 
-msgid "Extra options"
+msgid "Extra Options"
 msgstr "额外选项"
 
+msgid "Faulty Stations"
+msgstr ""
+
 msgid "Find and join network on"
 msgstr "查找并加入网络"
 
+msgid "For QR-Code support please install package 'qrencode'!"
+msgstr ""
+
 msgid ""
 "For further information <a href=\"%s\" target=\"_blank\">see online "
 "documentation</a>"
@@ -132,14 +139,6 @@ msgstr "强制 TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "强制 TKIP 和 CCMP(AES)"
 
-msgid ""
-"Here you'll find the QR codes from all of your configured Access Points. It "
-"allows you to connect your Android or iOS devices to your router's WiFi "
-"using the QR code shown below."
-msgstr ""
-"在这里,您可以找到所有已配置的接入点的 QR 码。您可以使用下面显示的 QR 码,使 "
-"Android 或 iOS 设备连接到路由器 WiFi。"
-
 msgid ""
 "How long should travelmate wait for a successful wlan uplink connection."
 msgstr "travelmate 等待 wlan 上行连接成功最长时间。"
@@ -159,8 +158,11 @@ msgstr "接口超时"
 msgid "Interface Wizard"
 msgstr "接口向导"
 
-msgid "Last rundate"
-msgstr "最后运行时间"
+msgid "Last Run"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
 
 msgid ""
 "Minimum signal quality threshold as percent for conditional uplink (dis-) "
@@ -213,22 +215,25 @@ msgstr "私钥路径"
 msgid ""
 "Provides an overview of all configured uplinks for the travelmate interface "
 "(%s). You can edit, delete or re-order existing uplinks or scan for a new "
-"one. The currently used uplink is emphasized in blue."
+"one. The currently used uplink is emphasized in blue, faulty stations in red."
 msgstr ""
-"此处显示 travelmate 接口(%s)所有已配置上行连接的概述。您可以编辑、删除或重"
-"新排序现有连接,或扫描新上行连接。当前使用的上行连接以蓝色突出显示。"
-
-msgid "QR-Codes"
-msgstr "QR 码"
 
-msgid "Radio selection"
-msgstr "无线选择"
+msgid "Radio Selection / Order"
+msgstr ""
 
 msgid "Repeat scan"
 msgstr "重新扫描"
 
-msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
-msgstr "将 travelmate 限制在专用无线电中,如“radio0”。"
+msgid "Restart"
+msgstr ""
+
+msgid "Restart Travelmate"
+msgstr ""
+
+msgid ""
+"Restrict travelmate to a single radio (e.g. 'radio1') or change the overall "
+"scanning order (e.g. 'radio1 radio2 radio0')."
+msgstr ""
 
 msgid "Retry limit to connect to an uplink."
 msgstr "连接到上行连接的重试限制。"
@@ -248,25 +253,28 @@ msgstr "保存"
 msgid "Scan"
 msgstr "扫描"
 
+msgid "Show/Hide QR-Codes"
+msgstr ""
+
 msgid "Signal Quality Threshold"
 msgstr "信号质量阈值"
 
 msgid "Signal strength"
 msgstr "信号强度"
 
-msgid "Station ID (SSID/BSSID)"
-msgstr "站点 ID(SSID/BSSID)"
+msgid "Station ID (RADIO/SSID/BSSID)"
+msgstr ""
 
 msgid "Station Interface"
 msgstr "站点接口"
 
-msgid "Station Radio"
-msgstr "站点无线"
-
 msgid ""
 "The BSSID information '%s' is optional and only required for hidden networks"
 msgstr "BSSID 信息“%s”是可选的,仅对隐藏网络必需"
 
+msgid "The syslog output, pre-filtered for travelmate related messages only."
+msgstr ""
+
 msgid ""
 "This form allows you to modify the content of the main firewall "
 "configuration file (/etc/config/firewall)."
@@ -287,20 +295,12 @@ msgid ""
 "configuration file (/etc/config/wireless)."
 msgstr "此表单允许您修改主无线配置文件(/etc/config/wireless)的内容。"
 
-msgid ""
-"This form shows the syslog output, pre-filtered for travelmate related "
-"messages only."
-msgstr "此表单显示 syslog 输出,仅针对 travelmate 相关消息进行预过滤。"
-
 msgid "This step has only to be done once."
 msgstr "此步骤只需执行一次。"
 
 msgid "Travelmate"
 msgstr "Travelmate"
 
-msgid "Travelmate Logfile"
-msgstr "Travelmate 日志文件"
-
 msgid "Travelmate Status (Quality)"
 msgstr "Travelmate 状态(质量)"
 
@@ -355,11 +355,64 @@ msgstr "无线扫描"
 msgid "Wireless Stations"
 msgstr "无线站点"
 
-msgid "add it to the wan zone of the firewall.<br />"
-msgstr "将其添加到防火墙的 wan 区域。<br />"
+msgid "add it to the wan zone of the firewall."
+msgstr ""
 
 msgid "hidden"
 msgstr "隐藏"
 
-msgid "n/a"
-msgstr "n/a"
+msgid "with SSID"
+msgstr ""
+
+#~ msgid ""
+#~ "Connect your Android or iOS devices to your router's WiFi using the shown "
+#~ "QR code."
+#~ msgstr "使用显示的 QR 码,将您的 Android 或 iOS 设备连接到路由器 WiFi。"
+
+#~ msgid ""
+#~ "Here you'll find the QR codes from all of your configured Access Points. "
+#~ "It allows you to connect your Android or iOS devices to your router's "
+#~ "WiFi using the QR code shown below."
+#~ msgstr ""
+#~ "在这里,您可以找到所有已配置的接入点的 QR 码。您可以使用下面显示的 QR 码,"
+#~ "使 Android 或 iOS 设备连接到路由器 WiFi。"
+
+#~ msgid "Last rundate"
+#~ msgstr "最后运行时间"
+
+#~ msgid ""
+#~ "Provides an overview of all configured uplinks for the travelmate "
+#~ "interface (%s). You can edit, delete or re-order existing uplinks or scan "
+#~ "for a new one. The currently used uplink is emphasized in blue."
+#~ msgstr ""
+#~ "此处显示 travelmate 接口(%s)所有已配置上行连接的概述。您可以编辑、删除或"
+#~ "重新排序现有连接,或扫描新上行连接。当前使用的上行连接以蓝色突出显示。"
+
+#~ msgid "QR-Codes"
+#~ msgstr "QR 码"
+
+#~ msgid "Radio selection"
+#~ msgstr "无线选择"
+
+#~ msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
+#~ msgstr "将 travelmate 限制在专用无线电中,如“radio0”。"
+
+#~ msgid "Station ID (SSID/BSSID)"
+#~ msgstr "站点 ID(SSID/BSSID)"
+
+#~ msgid "Station Radio"
+#~ msgstr "站点无线"
+
+#~ msgid ""
+#~ "This form shows the syslog output, pre-filtered for travelmate related "
+#~ "messages only."
+#~ msgstr "此表单显示 syslog 输出,仅针对 travelmate 相关消息进行预过滤。"
+
+#~ msgid "Travelmate Logfile"
+#~ msgstr "Travelmate 日志文件"
+
+#~ msgid "add it to the wan zone of the firewall.<br />"
+#~ msgstr "将其添加到防火墙的 wan 区域。<br />"
+
+#~ msgid "n/a"
+#~ msgstr "n/a"
index aa4612b6d0a212acf501ecd5af153f4aa5fee834..529bbbdb071f704ab34cb0f4b1b4194b94a80734 100644 (file)
@@ -11,6 +11,12 @@ msgstr ""
 "PO-Revision-Date: 2018-08-17 17:06+0800\n"
 "X-Generator: Gtranslator 2.91.7\n"
 
+msgid "AP on"
+msgstr ""
+
+msgid "Action"
+msgstr ""
+
 msgid "Add Uplink"
 msgstr "新增上行連線"
 
@@ -42,7 +48,8 @@ msgstr "強制門戶檢測"
 msgid ""
 "Check the internet availability, log captive portal redirections and keep "
 "the uplink connection 'alive'."
-msgstr "檢查網際網路可用性,記錄強制網路門戶重定向,並保持上行連線為“活動”狀態。"
+msgstr ""
+"檢查網際網路可用性,記錄強制網路門戶重定向,並保持上行連線為“活動”狀態。"
 
 msgid "Cipher"
 msgstr "密碼"
@@ -52,11 +59,6 @@ msgid ""
 "functionality."
 msgstr "配置 travelmate 包,以啟用旅行路由器功能。"
 
-msgid ""
-"Connect your Android or iOS devices to your router's WiFi using the shown QR "
-"code."
-msgstr "使用顯示的 QR 碼,將您的 Android 或 iOS 裝置連線到路由器 WiFi。"
-
 msgid "Connection Limit"
 msgstr "連線限制"
 
@@ -103,21 +105,27 @@ msgstr "編輯無線上行連線配置"
 msgid "Edit this Uplink"
 msgstr "編輯此上行連線"
 
-msgid "Enable travelmate"
+msgid "Enable Travelmate"
 msgstr "啟用 travelmate"
 
-msgid "Enable verbose debug logging"
+msgid "Enable Verbose Debug Logging"
 msgstr "啟用詳細除錯日誌"
 
 msgid "Encryption"
 msgstr "加密"
 
-msgid "Extra options"
+msgid "Extra Options"
 msgstr "額外選項"
 
+msgid "Faulty Stations"
+msgstr ""
+
 msgid "Find and join network on"
 msgstr "查詢並加入網路"
 
+msgid "For QR-Code support please install package 'qrencode'!"
+msgstr ""
+
 msgid ""
 "For further information <a href=\"%s\" target=\"_blank\">see online "
 "documentation</a>"
@@ -132,14 +140,6 @@ msgstr "強制 TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "強制 TKIP 和 CCMP(AES)"
 
-msgid ""
-"Here you'll find the QR codes from all of your configured Access Points. It "
-"allows you to connect your Android or iOS devices to your router's WiFi "
-"using the QR code shown below."
-msgstr ""
-"在這裡,您可以找到所有已配置的接入點的 QR 碼。您可以使用下面顯示的 QR 碼,使 "
-"Android 或 iOS 裝置連線到路由器 WiFi。"
-
 msgid ""
 "How long should travelmate wait for a successful wlan uplink connection."
 msgstr "travelmate 等待 wlan 上行連線成功最長時間。"
@@ -159,8 +159,11 @@ msgstr "介面超時"
 msgid "Interface Wizard"
 msgstr "介面嚮導"
 
-msgid "Last rundate"
-msgstr "最後執行時間"
+msgid "Last Run"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
 
 msgid ""
 "Minimum signal quality threshold as percent for conditional uplink (dis-) "
@@ -213,22 +216,25 @@ msgstr "私鑰路徑"
 msgid ""
 "Provides an overview of all configured uplinks for the travelmate interface "
 "(%s). You can edit, delete or re-order existing uplinks or scan for a new "
-"one. The currently used uplink is emphasized in blue."
+"one. The currently used uplink is emphasized in blue, faulty stations in red."
 msgstr ""
-"此處顯示 travelmate 介面(%s)所有已配置上行連線的概述。您可以編輯、刪除或重"
-"新排序現有連線,或掃描新上行連線。當前使用的上行連線以藍色突出顯示。"
-
-msgid "QR-Codes"
-msgstr "QR 碼"
 
-msgid "Radio selection"
-msgstr "無線選擇"
+msgid "Radio Selection / Order"
+msgstr ""
 
 msgid "Repeat scan"
 msgstr "重新掃描"
 
-msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
-msgstr "將 travelmate 限制在專用無線電中,如“radio0”。"
+msgid "Restart"
+msgstr ""
+
+msgid "Restart Travelmate"
+msgstr ""
+
+msgid ""
+"Restrict travelmate to a single radio (e.g. 'radio1') or change the overall "
+"scanning order (e.g. 'radio1 radio2 radio0')."
+msgstr ""
 
 msgid "Retry limit to connect to an uplink."
 msgstr "連線到上行連線的重試限制。"
@@ -248,25 +254,28 @@ msgstr "儲存"
 msgid "Scan"
 msgstr "掃描"
 
+msgid "Show/Hide QR-Codes"
+msgstr ""
+
 msgid "Signal Quality Threshold"
 msgstr "訊號質量閾值"
 
 msgid "Signal strength"
 msgstr "訊號強度"
 
-msgid "Station ID (SSID/BSSID)"
-msgstr "站點 ID(SSID/BSSID)"
+msgid "Station ID (RADIO/SSID/BSSID)"
+msgstr ""
 
 msgid "Station Interface"
 msgstr "站點介面"
 
-msgid "Station Radio"
-msgstr "站點無線"
-
 msgid ""
 "The BSSID information '%s' is optional and only required for hidden networks"
 msgstr "BSSID 資訊“%s”是可選的,僅對隱藏網路必需"
 
+msgid "The syslog output, pre-filtered for travelmate related messages only."
+msgstr ""
+
 msgid ""
 "This form allows you to modify the content of the main firewall "
 "configuration file (/etc/config/firewall)."
@@ -287,20 +296,12 @@ msgid ""
 "configuration file (/etc/config/wireless)."
 msgstr "此表單允許您修改主無線配置檔案(/etc/config/wireless)的內容。"
 
-msgid ""
-"This form shows the syslog output, pre-filtered for travelmate related "
-"messages only."
-msgstr "此表單顯示 syslog 輸出,僅針對 travelmate 相關訊息進行預過濾。"
-
 msgid "This step has only to be done once."
 msgstr "此步驟只需執行一次。"
 
 msgid "Travelmate"
 msgstr "Travelmate"
 
-msgid "Travelmate Logfile"
-msgstr "Travelmate 日誌檔案"
-
 msgid "Travelmate Status (Quality)"
 msgstr "Travelmate 狀態(質量)"
 
@@ -355,11 +356,64 @@ msgstr "無線掃描"
 msgid "Wireless Stations"
 msgstr "無線站點"
 
-msgid "add it to the wan zone of the firewall.<br />"
-msgstr "將其新增到防火牆的 wan 區域。<br />"
+msgid "add it to the wan zone of the firewall."
+msgstr ""
 
 msgid "hidden"
 msgstr "隱藏"
 
-msgid "n/a"
-msgstr "n/a"
+msgid "with SSID"
+msgstr ""
+
+#~ msgid ""
+#~ "Connect your Android or iOS devices to your router's WiFi using the shown "
+#~ "QR code."
+#~ msgstr "使用顯示的 QR 碼,將您的 Android 或 iOS 裝置連線到路由器 WiFi。"
+
+#~ msgid ""
+#~ "Here you'll find the QR codes from all of your configured Access Points. "
+#~ "It allows you to connect your Android or iOS devices to your router's "
+#~ "WiFi using the QR code shown below."
+#~ msgstr ""
+#~ "在這裡,您可以找到所有已配置的接入點的 QR 碼。您可以使用下面顯示的 QR 碼,"
+#~ "使 Android 或 iOS 裝置連線到路由器 WiFi。"
+
+#~ msgid "Last rundate"
+#~ msgstr "最後執行時間"
+
+#~ msgid ""
+#~ "Provides an overview of all configured uplinks for the travelmate "
+#~ "interface (%s). You can edit, delete or re-order existing uplinks or scan "
+#~ "for a new one. The currently used uplink is emphasized in blue."
+#~ msgstr ""
+#~ "此處顯示 travelmate 介面(%s)所有已配置上行連線的概述。您可以編輯、刪除或"
+#~ "重新排序現有連線,或掃描新上行連線。當前使用的上行連線以藍色突出顯示。"
+
+#~ msgid "QR-Codes"
+#~ msgstr "QR 碼"
+
+#~ msgid "Radio selection"
+#~ msgstr "無線選擇"
+
+#~ msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
+#~ msgstr "將 travelmate 限制在專用無線電中,如“radio0”。"
+
+#~ msgid "Station ID (SSID/BSSID)"
+#~ msgstr "站點 ID(SSID/BSSID)"
+
+#~ msgid "Station Radio"
+#~ msgstr "站點無線"
+
+#~ msgid ""
+#~ "This form shows the syslog output, pre-filtered for travelmate related "
+#~ "messages only."
+#~ msgstr "此表單顯示 syslog 輸出,僅針對 travelmate 相關訊息進行預過濾。"
+
+#~ msgid "Travelmate Logfile"
+#~ msgstr "Travelmate 日誌檔案"
+
+#~ msgid "add it to the wan zone of the firewall.<br />"
+#~ msgstr "將其新增到防火牆的 wan 區域。<br />"
+
+#~ msgid "n/a"
+#~ msgstr "n/a"
index 734476acaeaa5cea13e85fbd18df462800714b08..5e19621842369a2890d11cf5677517c78d0fe5bb 100644 (file)
@@ -158,7 +158,7 @@ function QueryCacheDump()
         "unbound-control -c /var/lib/unbound/unbound.conf dump_cache")
 
     local lcldesc = luci.i18n.translate(
-        "This shows Unbound 'cache_dump'. Usefull to check if unbound is actually caching dns entities.")
+        "This shows Unbound 'cache_dump'. Useful to check if unbound is actually caching dns entities.")
 
     luci.template.render("unbound/show-textbox",
         {heading = "", description = lcldesc, content = lcldata})
index 798ca6a45cae9f1f5d9803cff343a7d9286ae935..3a13c23df9b733f2fc73441504a252f12daac563 100644 (file)
@@ -58,7 +58,7 @@ end
 
 
 function ztype.cfgvalue(self, s)
-    -- Format a meaninful tile for the Zone Type column
+    -- Format a meaningful tile for the Zone Type column
     local itxt = self.map:get(s, "zone_type")
     local itls = self.map:get(s, "tls_upstream")
 
@@ -84,7 +84,7 @@ end
 
 
 function zones.cfgvalue(self, s)
-    -- Format a meaninful sentence for the Zones viewed column
+    -- Format a meaningful sentence for the Zones viewed column
     local xtxt, otxt
     local itxt = self.map:get(s, "zone_name")
     local itype = self.map:get(s, "zone_type")
@@ -131,7 +131,7 @@ end
 
 
 function servers.cfgvalue(self, s)
-    -- Format a meaninful sentence for the Servers (and URL) column
+    -- Format a meaningful sentence for the Servers (and URL) column
     local xtxt, otxt, rtxt, found
     local itxt = self.map:get(s, "server")
     local iurl = self.map:get(s, "url_dir")
diff --git a/applications/luci-app-unbound/po/templates/unbound.pot b/applications/luci-app-unbound/po/templates/unbound.pot
new file mode 100644 (file)
index 0000000..0870962
--- /dev/null
@@ -0,0 +1,539 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "(root)"
+msgstr ""
+
+msgid ", and <var>%s</var> entries"
+msgstr ""
+
+msgid ", and try <var>%s</var>"
+msgstr ""
+
+msgid "AXFR"
+msgstr ""
+
+msgid "Accept queries only from local subnets"
+msgstr ""
+
+msgid "Adblock domain list '"
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Aggressive"
+msgstr ""
+
+msgid "Allow open recursion when record not in zone"
+msgstr ""
+
+msgid "Authoritative (zone file)"
+msgstr ""
+
+msgid "Basic"
+msgstr ""
+
+msgid "Break down query components for limited added privacy"
+msgstr ""
+
+msgid "Break the loop where DNSSEC needs NTP and NTP needs DNS"
+msgstr ""
+
+msgid "Cache Dump"
+msgstr ""
+
+msgid "Choose Unbounds listening port"
+msgstr ""
+
+msgid "Chose the IP versions used upstream and downstream"
+msgstr ""
+
+msgid "Connect to servers using TLS"
+msgstr ""
+
+msgid "DHCP"
+msgstr ""
+
+msgid "DHCP Link"
+msgstr ""
+
+msgid "DHCPv4 to SLAAC"
+msgstr ""
+
+msgid "DNS over TLS"
+msgstr ""
+
+msgid "DNS64 Prefix"
+msgstr ""
+
+msgid "DNSSEC NTP Fix"
+msgstr ""
+
+msgid "Default"
+msgstr ""
+
+msgid "Denied (nxdomain)"
+msgstr ""
+
+msgid "Directed Zone"
+msgstr ""
+
+msgid "Directory only part of URL"
+msgstr ""
+
+msgid "Domain Insecure"
+msgstr ""
+
+msgid "Domain name to verify TLS certificate"
+msgstr ""
+
+msgid "Domain suffix for this router and DHCP clients"
+msgstr ""
+
+msgid "EDNS Size"
+msgstr ""
+
+msgid "Edit '"
+msgstr ""
+
+msgid "Edit 'server:' clause options for 'include:"
+msgstr ""
+
+msgid ""
+"Edit a forward, stub, or zone-file-cache zone for Unbound to use instead of "
+"recursion."
+msgstr ""
+
+msgid "Edit clauses such as 'forward-zone:' for 'include:"
+msgstr ""
+
+msgid "Edit: Extended"
+msgstr ""
+
+msgid "Edit: Server"
+msgstr ""
+
+msgid "Edit: UCI"
+msgstr ""
+
+msgid "Edit: Unbound"
+msgstr ""
+
+msgid "Enable"
+msgstr ""
+
+msgid "Enable DNS64"
+msgstr ""
+
+msgid "Enable DNSSEC"
+msgstr ""
+
+msgid "Enable Unbound"
+msgstr ""
+
+msgid "Enable access for unbound-control"
+msgstr ""
+
+msgid "Enable the DNS64 module"
+msgstr ""
+
+msgid "Enable the DNSSEC validator module"
+msgstr ""
+
+msgid "Enable the initialization scripts for Unbound"
+msgstr ""
+
+msgid "Enable this directed zone"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
+msgid "Extended Statistics"
+msgstr ""
+
+msgid "Extended statistics are printed from unbound-control"
+msgstr ""
+
+msgid "Extra DNS"
+msgstr ""
+
+msgid "Fall Back"
+msgstr ""
+
+msgid "Fallback"
+msgstr ""
+
+msgid "Files"
+msgstr ""
+
+msgid "Filter Entire Subnet"
+msgstr ""
+
+msgid "Filter Localhost Rebind"
+msgstr ""
+
+msgid "Filter Private Address"
+msgstr ""
+
+msgid "Filter Private Rebind"
+msgstr ""
+
+msgid "Forward"
+msgstr ""
+
+msgid "Forward (simple handoff)"
+msgstr ""
+
+msgid "Forward TLS"
+msgstr ""
+
+msgid "Forward to upstream nameservers (ISP)"
+msgstr ""
+
+msgid "Host FQDN, All Addresses"
+msgstr ""
+
+msgid "Host Records"
+msgstr ""
+
+msgid "Host/MX/SRV RR"
+msgstr ""
+
+msgid "Host/MX/SRV/CNAME RR"
+msgstr ""
+
+msgid "Hostname, All Addresses"
+msgstr ""
+
+msgid "Hostname, Primary Address"
+msgstr ""
+
+msgid "How to enter the LAN or local network router in DNS"
+msgstr ""
+
+msgid "How to treat queries of this local domain"
+msgstr ""
+
+msgid "IP4 All and IP6 Local"
+msgstr ""
+
+msgid "IP4 Only"
+msgstr ""
+
+msgid "IP4 and IP6"
+msgstr ""
+
+msgid "IP6 Only*"
+msgstr ""
+
+msgid "IP6 Preferred"
+msgstr ""
+
+msgid "Ignore"
+msgstr ""
+
+msgid "Interface FQDN, All Addresses"
+msgstr ""
+
+msgid "LAN DNS"
+msgstr ""
+
+msgid "Large"
+msgstr ""
+
+msgid "Limit days between RFC5011 copies to reduce flash writes"
+msgstr ""
+
+msgid "Limit extended DNS packet size"
+msgstr ""
+
+msgid "Link to supported programs to load DHCP into DNS"
+msgstr ""
+
+msgid "List domains to bypass checks of DNSSEC"
+msgstr ""
+
+msgid "Listening Port"
+msgstr ""
+
+msgid "Local Data"
+msgstr ""
+
+msgid "Local Domain"
+msgstr ""
+
+msgid "Local Domain Type"
+msgstr ""
+
+msgid "Local Host, Encrypted"
+msgstr ""
+
+msgid "Local Host, No Encryption"
+msgstr ""
+
+msgid "Local Service"
+msgstr ""
+
+msgid "Local Subnet, Encrypted"
+msgstr ""
+
+msgid "Local Subnet, Static Encryption"
+msgstr ""
+
+msgid "Local Zones"
+msgstr ""
+
+msgid "Log"
+msgstr ""
+
+msgid "Manual Conf"
+msgstr ""
+
+msgid "Medium"
+msgstr ""
+
+msgid "Memory Resource"
+msgstr ""
+
+msgid "Networks that may trigger Unbound to reload (avoid wan6)"
+msgstr ""
+
+msgid "No Entry"
+msgstr ""
+
+msgid "No Filter"
+msgstr ""
+
+msgid "No Link"
+msgstr ""
+
+msgid "No Remote Control"
+msgstr ""
+
+msgid ""
+"Note: SSL/TLS library is missing an API. Please review syslog. >> logread ..."
+msgstr ""
+
+msgid ""
+"Organize directed forward, stub, and authoritative zones <a href=\"%s\" "
+"target=\"_blank\">(help)</a>."
+msgstr ""
+
+msgid "Override the WAN side router entry in DNS"
+msgstr ""
+
+msgid "Passive"
+msgstr ""
+
+msgid "Port servers will receive queries on"
+msgstr ""
+
+msgid "Prefix for generated DNS64 addresses"
+msgstr ""
+
+msgid "Prevent excessively short cache periods"
+msgstr ""
+
+msgid "Protect against upstream response of 127.0.0.0/8"
+msgstr ""
+
+msgid "Protect against upstream responses within local subnets"
+msgstr ""
+
+msgid "Query Minimize"
+msgstr ""
+
+msgid "Recurse"
+msgstr ""
+
+msgid "Recursion Protocol"
+msgstr ""
+
+msgid "Recursion Strength"
+msgstr ""
+
+msgid "Recursion activity affects memory growth and CPU load"
+msgstr ""
+
+msgid "Recursive DNS"
+msgstr ""
+
+msgid "Refused"
+msgstr ""
+
+msgid "Resource"
+msgstr ""
+
+msgid "Root DSKEY Age"
+msgstr ""
+
+msgid "Save"
+msgstr ""
+
+msgid "Server Port"
+msgstr ""
+
+msgid "Server TLS Port"
+msgstr ""
+
+msgid "Servers"
+msgstr ""
+
+msgid "Servers for this zone; see README.md for optional form"
+msgstr ""
+
+msgid "Show: Adblock"
+msgstr ""
+
+msgid "Show: DHCP"
+msgstr ""
+
+msgid "Show: Unbound"
+msgstr ""
+
+msgid "Skip UCI and use /etc/unbound/unbound.conf"
+msgstr ""
+
+msgid "Small"
+msgstr ""
+
+msgid "Static (local only)"
+msgstr ""
+
+msgid "Statistics"
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Strict Minimize"
+msgstr ""
+
+msgid "Strict version of 'query minimize' but it can break DNS"
+msgstr ""
+
+msgid "Stub (forced recursion)"
+msgstr ""
+
+msgid "TLS Name Index"
+msgstr ""
+
+msgid "TTL Minimum"
+msgstr ""
+
+msgid "This could display more statistics with the unbound-control package."
+msgstr ""
+
+msgid "This shows '"
+msgstr ""
+
+msgid ""
+"This shows Unbound 'cache_dump'. Useful to check if unbound is actually "
+"caching dns entities."
+msgstr ""
+
+msgid ""
+"This shows Unbound 'local-data:' entries from default, .conf, or control."
+msgstr ""
+
+msgid ""
+"This shows Unbound 'local-zone:' entries from default, .conf, or control."
+msgstr ""
+
+msgid "This shows Unbound self reported performance statistics."
+msgstr ""
+
+msgid "This shows syslog filtered for events involving Unbound."
+msgstr ""
+
+msgid "Tiny"
+msgstr ""
+
+msgid "Transparent (local/global)"
+msgstr ""
+
+msgid "Trigger Networks"
+msgstr ""
+
+msgid "Type"
+msgstr ""
+
+msgid "Unbound"
+msgstr ""
+
+msgid ""
+"Unbound <a href=\"%s\" target=\"_blank\">(NLnet Labs)</a> is a validating, "
+"recursive, and caching DNS resolver <a href=\"%s\" target=\"_blank\">(help)</"
+"a>."
+msgstr ""
+
+msgid "Unbound Control App"
+msgstr ""
+
+msgid "Undefined"
+msgstr ""
+
+msgid "Use 'resolv.conf.auto'"
+msgstr ""
+
+msgid "Use DHCPv4 MAC to discover IP6 hosts SLAAC (EUI64)"
+msgstr ""
+
+msgid "Use Upstream"
+msgstr ""
+
+msgid "Use extra DNS entries found in /etc/config/dhcp"
+msgstr ""
+
+msgid "Use menu System/Processes to observe any memory growth"
+msgstr ""
+
+msgid "WAN DNS"
+msgstr ""
+
+msgid "Zone (Domain) names included in this zone combination"
+msgstr ""
+
+msgid "Zone Download URL"
+msgstr ""
+
+msgid "Zone Names"
+msgstr ""
+
+msgid "Zone Type"
+msgstr ""
+
+msgid "Zones"
+msgstr ""
+
+msgid "accept upstream results for"
+msgstr ""
+
+msgid "default"
+msgstr ""
+
+msgid "download from <var>%s</var>"
+msgstr ""
+
+msgid "never"
+msgstr ""
+
+msgid "prefetch zone files for"
+msgstr ""
+
+msgid "select recursion for"
+msgstr ""
+
+msgid "unknown action for"
+msgstr ""
+
+msgid "use <var>%s</var> nameservers"
+msgstr ""
+
+msgid "use nameservers"
+msgstr ""
+
+msgid "with default certificate for <var>%s</var>"
+msgstr ""
index 049b1a9244738898955dc8ce09e8df3c65a1c4b6..b6248e4bcc68177f48d60fd694e93bed689c0eed 100644 (file)
@@ -25,8 +25,7 @@ msgid ""
 "Local IP addresses or subnets with direct internet access (outside of the "
 "VPN tunnel)"
 msgstr ""
-"Endereço IP Local ou subrede com acesso direto à internet (fora do túnel "
-"VPN)"
+"Endereço IP Local ou subrede com acesso direto à internet (fora do túnel VPN)"
 
 msgid "Local Ports to Bypass"
 msgstr "Portas locais para evitar a VPN"
@@ -44,8 +43,8 @@ msgid ""
 "Remote IP addresses or subnets which will be accessed directly (outside of "
 "the VPN tunnel)"
 msgstr ""
-"Endereço IP Remoto ou subrede que serão acessados diretamente (fora do "
-"túnel VPN)"
+"Endereço IP Remoto ou subrede que serão acessados diretamente (fora do túnel "
+"VPN)"
 
 msgid "Remote Ports to Bypass"
 msgstr "Portas remotas para evitar a VPN"
index 591abb104939e0ff337908c1002702a11e7a5448..4a57b3f7b470b5bbfe079a1e060ca427d9dfce5f 100644 (file)
@@ -7,7 +7,7 @@ Turns WiFi on and off according to a schedule on an openwrt router
 
 
 ## Use cases
-You can create user-defined events when to enable or disable WiFi. 
+You can create user-defined events when to enable or disable WiFi.
 There are various use cases why you would like to do so:
 
 1. Reduce power consumption and therefore reduce CO2 emissions.
@@ -17,13 +17,13 @@ There are various use cases why you would like to do so:
 Regarding 1: Please note, that you need to unload the wireless driver modules in order to get the most effect of saving power.
 In my test scenario only disabling WiFi saves about ~0.4 Watt, unloading the modules removes another ~0.4 Watt.
 
-Regarding 2: Think of a wireless accesspoint e.g. in your bedrom, kids room where you want to remove the ammount of radiation emitted.
+Regarding 2: Think of a wireless accesspoint e.g. in your bedrom, kids room where you want to remove the amount of radiation emitted.
 
-Regarding 3: E.g. in a company, why would wireless need to be enabled weekends if no one is there working? 
+Regarding 3: E.g. in a company, why would wireless need to be enabled weekends if no one is there working?
 Or think of an accesspoint in your kids room when you want the youngsters to sleep after 10 pm instead of facebooking...
 
 ## Configuration
-You can create an arbitrary number of schedule events. Please note that there is on sanity check done wheather the start / stop times overlap or make sense.
+You can create an arbitrary number of schedule events. Please note that there is on sanity check done whether the start / stop times overlap or make sense.
 If start and stop time are equal, this leads to disabling the WiFi at the given time.
 
 Logging if enabled is done to the file `/var/log/wifi_schedule.log` and can be reviewed through the "View Logfile" tab.
@@ -71,7 +71,7 @@ Then call the script as follows in order to get the necessary cron jobs created:
 `wifi_schedule.sh cron`
 
 All commands:
+
 ```
 wifi_schedule.sh cron|start|stop|forcestop|recheck|getmodules|savemodules|help
 
index 07730225b03805d895e66e516aab58444f5fba3c..61a94ca5dc3244ed765aa870290dcfca31b0837f 100644 (file)
@@ -239,7 +239,7 @@ function force_wifi.validate(self, value, d)
         if fs.access("/usr/bin/iwinfo") then
             return value
         else
-            return nil, translate("Could not find required programm /usr/bin/iwinfo")
+            return nil, translate("Could not find required program /usr/bin/iwinfo")
         end
     else
         return "1"
index 18a9dce23aa33f4b7d21c22ffe641d89beec2e39..e7126ced84ed46fdaec59a5faa566deb43bb4854 100644 (file)
@@ -7,7 +7,7 @@ msgstr "Attiva wifi"
 msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi"
 msgstr "Impossibile trovare /usr/bin/wifi_schedule.sh o /sbin/wifi"
 
-msgid "Could not find required programm /usr/bin/iwinfo"
+msgid "Could not find required program /usr/bin/iwinfo"
 msgstr "Impossibile trovare il programma /usr/bin/iwinfo"
 
 msgid "Cron Jobs"
index 3bc7864ad79fbb15954514a86e47e54e2aadcc96..8842d6d3c3d253093dc1cea660548f1f1fff14ec 100644 (file)
@@ -18,7 +18,7 @@ msgstr "WiFiのアクティブ化"
 msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi"
 msgstr "必須の /usr/bin/wifi_schedule.sh または /sbin/wifi が見つかりませんでした。"
 
-msgid "Could not find required programm /usr/bin/iwinfo"
+msgid "Could not find required program /usr/bin/iwinfo"
 msgstr "必須のプログラム /usr/bin/iwinfo が見つかりませんでした。"
 
 msgid "Cron Jobs"
index 19e31b54ca6b57a99eb80909f75726af5185b6f8..b4eb8f60e5a03b1bb28e3bd1dd08cdaefe8f63c6 100644 (file)
@@ -20,7 +20,7 @@ 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"
+msgid "Could not find required program /usr/bin/iwinfo"
 msgstr "Não foi possível localizar o programa necessário '/usr/bin/iwinfo'"
 
 msgid "Cron Jobs"
index 8eb39662974872b23179ff4bd5a618354396930d..b983552d14dc60044604f903ef2bbb0b42aa03da 100644 (file)
@@ -21,7 +21,7 @@ msgstr "Включить Wi-Fi"
 msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi"
 msgstr "Не удалось найти файл /usr/bin/wifi_schedule.sh или /sbin/wifi"
 
-msgid "Could not find required programm /usr/bin/iwinfo"
+msgid "Could not find required program /usr/bin/iwinfo"
 msgstr "Не удалось найти требуемую программу /usr/bin/iwinfo"
 
 msgid "Cron Jobs"
index 50953aa285159aa051eda8eb389d1fb15c72c98a..9ec1ec94c86595d42c60175cfd4f84c3f477b360 100644 (file)
@@ -7,7 +7,7 @@ msgstr "Aktivera wifi"
 msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi"
 msgstr ""
 
-msgid "Could not find required programm /usr/bin/iwinfo"
+msgid "Could not find required program /usr/bin/iwinfo"
 msgstr ""
 
 msgid "Cron Jobs"
index 639c432e5e91ff961c4125045d2ff51d985a1b9b..9386ee115f732ce00a7af1e05340069a22c47588 100644 (file)
@@ -7,7 +7,7 @@ msgstr ""
 msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi"
 msgstr ""
 
-msgid "Could not find required programm /usr/bin/iwinfo"
+msgid "Could not find required program /usr/bin/iwinfo"
 msgstr ""
 
 msgid "Cron Jobs"
index ab3a8d0bf34872808620985245e612249433e68f..f8a3c3efa45757d04db514d719301a20c54dc2bc 100644 (file)
@@ -7,7 +7,7 @@ msgstr "激活 WiFi"
 msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi"
 msgstr "无法找到必需的 /usr/bin/wifi_schedule.sh 或 /sbin/wifi"
 
-msgid "Could not find required programm /usr/bin/iwinfo"
+msgid "Could not find required program /usr/bin/iwinfo"
 msgstr "无法找到必需程序:/usr/bin/iwinfo"
 
 msgid "Cron Jobs"
index ad605e1d06bf5d7a8e15f3d4a37cf1706269cb2a..51de1afb4ef0d35030771c0754008e2da7559996 100644 (file)
@@ -7,7 +7,7 @@ msgstr "啟用 WiFi"
 msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi"
 msgstr "無法找到必需的 /usr/bin/wifi_schedule.sh 或 /sbin/wifi"
 
-msgid "Could not find required programm /usr/bin/iwinfo"
+msgid "Could not find required program /usr/bin/iwinfo"
 msgstr "無法找到必需程式:/usr/bin/iwinfo"
 
 msgid "Cron Jobs"
index 68a82fe5cc223cf7d53d17400ff546a2d0e258d3..5a919609745d28152093c40e25d6b5864bf9594c 100644 (file)
@@ -4,5 +4,5 @@
 module("luci.controller.wireguard", package.seeall)
 
 function index()
-  entry({"admin", "status", "wireguard"}, template("wireguard"), _("WireGuard Status"), 92)
+       entry({"admin", "status", "wireguard"}, template("wireguard"), _("WireGuard Status"), 92)
 end
index c25ef85caacc4f1c5dcc23de9f30139c1ac778d5..6ec9ddb3684f295fa5db8b16d3c7f9d66d537982 100644 (file)
 <%#
- Copyright 2016-2017 Dan Luedtke <mail@danrl.com>
- Licensed to the public under the Apache License 2.0.
      Copyright 2016-2017 Dan Luedtke <mail@danrl.com>
      Licensed to the public under the Apache License 2.0.
 -%>
 
 <%
-  local data = { }
-  local last_device = ""
+       local uci = uci.cursor()
+       local data = { }
+       local last_device = ""
+       local enc = { }
 
-  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[4],
-          fwmark               = line[5],
-          peers                = { }
-        }
-      else
-        local peer = {
-          public_key           = line[2],
-          endpoint             = line[4],
-          allowed_ips          = { },
-          latest_handshake     = line[6],
-          transfer_rx          = line[7],
-          transfer_tx          = line[8],
-          persistent_keepalive = line[9]
-        }
-        if not (line[4] == '(none)') then
-          for ipkey, ipvalue in pairs(string.split(line[5], ",")) do
-            if #ipvalue > 0 then
-              table.insert(peer['allowed_ips'], ipvalue)
-            end
-          end
-        end
-        table.insert(data[line[1]].peers, peer)
-      end
-    end
-  end
+       local function wg_clean(value)
+               if value and value == "(none)" then
+                       value = ""
+               end
+               return value
+       end
 
-  if luci.http.formvalue("status") == "1" then
-    luci.http.prepare_content("application/json")
-    luci.http.write_json(data)
-    return
-  end
+       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[4],
+                                       fwmark          = line[5],
+                                       peers           = { }
+                               }
+                               local s = uci:get_list("network", line[1], "addresses")
+                               local address = ""
+                               local key, value
+                               for key, value in pairs(s) do
+                                       if address ~= "" then
+                                               address = address.. ", " ..value
+                                       else
+                                               address = value
+                                       end
+                               end
+                               enc[line[1]] = "[Interface]\nPrivateKey = " ..wg_clean(line[2]).. "\nAddress = " ..address
+                       else
+                               local peer = {
+                                       public_key              = line[2],
+                                       endpoint                = line[4],
+                                       allowed_ips             = { },
+                                       latest_handshake        = line[6],
+                                       transfer_rx             = line[7],
+                                       transfer_tx             = line[8],
+                                       persistent_keepalive    = line[9]
+                               }
+                               if not (line[4] == '(none)') then
+                                       local ipkey, ipvalue
+                                       for ipkey, ipvalue in pairs(string.split(line[5], ",")) do
+                                               if #ipvalue > 0 then
+                                                       table.insert(peer['allowed_ips'], ipvalue)
+                                               end
+                                       end
+                               end
+                               table.insert(data[line[1]].peers, peer)
+                               enc[line[1]] = enc[line[1]].. "\n\n[Peer]\nEndpoint = " ..wg_clean(line[4]).. "\nPublicKey = " ..wg_clean(line[2]).. "\nAllowedIPs = " ..wg_clean(line[5])
+                       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">//<![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 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 + ')';
+       }
 
-  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 + ')';
-  }
+       function toggle_qrcode(iface) {
+               var view = document.getElementById(iface.name);
+               if (view.style.display === "none") {
+                       view.style.display = "block";
+               } else {
+                       view.style.display = "none";
+               }
+       }
 
-  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;
-      }
-    }
-  });
+       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 />&#160;&#160;&#8226;&#160;' + 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">
+<div class="cbi-section">
 <%-
+local ikey, iface
 for ikey, iface in pairs(data) do
-  -%>
-  <legend><%:Interface%> <%=ikey%></legend>
-  <div class="table" width="100%" cellspacing="10">
-    <div class="tr">
-      <div class="td" width="33%" style="vertical-align:top"><%:Configuration%></div>
-      <div class="td">
-        <div class="table">
-          <div class="tr">
-            <div class="td" id="<%=ikey%>_icon" style="width:16px; text-align:center; padding:3px">
-              &nbsp;
-            </div>
-            <div class="td" id="<%=ikey%>_info" style="vertical-align:middle; padding: 3px">
-              <em><%:Collecting data...%></em>
-            </div>
-        </div></div>
-      </div>
-    </div>
-  <%-
-  local cur = uci.cursor()
-  for pkey, peer in pairs(iface.peers) do
-    local desc, tmp_desc, pub_key = "", "", ""
-    cur:foreach("network", "wireguard_" .. ikey, function(s)
-      local tmp_desc, pub_key = "", ""
-      for key, value in pairs(s) do
-        if key == "description" then
-          tmp_desc = value
-        end
-        if value == peer.public_key then
-          pub_key = value
-        end
-        if pub_key == peer.public_key and tmp_desc ~= "" then
-          desc = ': ' .. tmp_desc
-        end
-      end
-    end)
-    -%>
-    <div class="tr">
-      <div class="td" width="33%" style="vertical-align:top"><%:Peer%><%=desc%></div>
-      <div class="td">
-        <div class="table">
-          <div class="tr">
-            <div class="td" id="<%=ikey%>_<%=peer.public_key%>_icon" style="width:16px; text-align:center; padding:3px">
-              <img src="<%=resource%>/icons/tunnel_disabled.png" /><br />
-              <small>?</small>
-            </div>
-            <div class="td" id="<%=ikey%>_<%=peer.public_key%>_info" style="vertical-align:middle; padding: 3px">
-              <em><%:Collecting data...%></em>
-            </div>
-        </div></div>
-      </div>
-    </div>
-    <%-
-  end
-  -%>
-  </div>
-  <%-
+-%>
+       <h3><%:Interface%> <%=ikey%></h3>
+       <div class="cbi-value" id="button" style="padding: 5px">
+               <input class="cbi-button cbi-button-apply" type="button" name="qrcode_<%=ikey%>" value="<%:Show/Hide QR-Code%>" onclick="toggle_qrcode(this)" />
+       </div>
+<%-
+       local qrcode
+       if fs.access("/usr/bin/qrencode") then
+               if enc[ikey]:sub(26, 26) ~= "\n" then
+                       qrcode = luci.sys.exec("/usr/bin/qrencode --inline --8bit --type=SVG --output=- '" ..enc[ikey].. "'")
+               end
+       else
+               qrcode = "<em>For QR-Code support please install package 'qrencode'!</em>"
+       end
+-%>
+       <div class="cbi-value-title">
+               <span class="cbi-value" style="display: none" id="qrcode_<%=ikey%>"><%=qrcode%></span>
+       </div>
+       <div class="cbi-section-node">
+               <div class="table cbi-section-table">
+                       <div class="tr cbi-section-table-row" style="text-align: left;">
+                               <div class="td" style="text-align: left; vertical-align:top"><%:Configuration%></div>
+                               <div class="td" style="flex: 0 1 90%; text-align: left;">
+                                       <div class="table cbi-section-table" style="border: 0px;">
+                                               <div class="tr cbi-section-table-row" style="text-align: left; border: 0px;">
+                                                       <div class="td" id="<%=ikey%>_icon" style="width: 22px; text-align: left; border-top: 0px; padding: 3px;">&#160;</div>
+                                                       <div class="td" id="<%=ikey%>_info" style="flex: 0 1 90%; text-align: left; vertical-align:middle; padding: 3px; border-top: 0px;"><em><%:Collecting data...%></em></div>
+                                               </div>
+                                       </div>
+                               </div>
+                       </div>
+       <%-
+       local cur = uci.cursor()
+       local pkey, peer
+       for pkey, peer in pairs(iface.peers) do
+               local desc
+               cur:foreach("network", "wireguard_" .. ikey, function(s)
+                       local key, value, tmp_desc, pub_key
+                       for key, value in pairs(s) do
+                               if key == "description" then
+                                       tmp_desc = value
+                               end
+                               if value == peer.public_key then
+                                       pub_key = value
+                               end
+                               if pub_key and tmp_desc then
+                                       desc = ': ' ..tmp_desc
+                               end
+                       end
+               end)
+       -%>
+                       <div class="tr cbi-section-table-row" style="text-align: left;">
+                               <div class="td" style="text-align: left; vertical-align:top"><%:Peer%><%=desc%></div>
+                               <div class="td" style="flex: 0 1 90%; text-align: left;">
+                                       <div class="table cbi-section-table" style="border: 0px">
+                                               <div class="tr cbi-section-table-row" style="border: 0px;">
+                                                       <div class="td" id="<%=ikey%>_<%=peer.public_key%>_icon" style="width:16px; text-align: left; padding: 3px;border-top: 0px;">
+                                                               <img src="<%=resource%>/icons/tunnel_disabled.png" />
+                                                               <small>?</small>
+                                                       </div>
+                                                       <div class="td" id="<%=ikey%>_<%=peer.public_key%>_info" style="flex: 0 1 90%; text-align: left; vertical-align:middle; padding: 3px;border-top: 0px;"><em><%:Collecting data...%></em></div>
+                                               </div>
+                                       </div>
+                               </div>
+                       </div>
+               <%-
+       end
+       -%>
+               </div>
+       </div>
+       <%-
 end
 -%>
-</fieldset>
+</div>
 
 <%+footer%>
index 5cd7a900377def286f8b1026658e9ca4c7dcd3ba..921ede12440848d42ee3912262c68683ad4004e0 100644 (file)
@@ -58,6 +58,9 @@ msgstr "永続的なキープアライブ"
 msgid "Public Key"
 msgstr "公開鍵"
 
+msgid "Show/Hide QR-Code"
+msgstr ""
+
 msgid "WireGuard Status"
 msgstr "WireGuard ステータス"
 
index d3b5059d5fdeb54d94291f3ceea9a601644315ef..2874639b67dbcbcc4c885a8f9c7a3a0f0fbeccb7 100644 (file)
@@ -57,6 +57,9 @@ msgstr "Manter Conexões Abertas (Keepalive)"
 msgid "Public Key"
 msgstr "Chave Pública"
 
+msgid "Show/Hide QR-Code"
+msgstr ""
+
 msgid "WireGuard Status"
 msgstr "Estado do WireGuard"
 
index 202a49eff4f85ace7fc24b90c0deb7f374c21bea..3781d89522d786da5bce319c324858f840ebb61e 100644 (file)
@@ -58,6 +58,9 @@ msgstr "Постоянные Проверки Активности"
 msgid "Public Key"
 msgstr "Публичный Ключ"
 
+msgid "Show/Hide QR-Code"
+msgstr ""
+
 msgid "WireGuard Status"
 msgstr "Состояние WireGuard"
 
index 3422ae91e96a8ea19b65c260036a615a9c61d013..c0f7040c67bae4bd155ed8e5ff81ac9dc39fa631 100644 (file)
@@ -46,6 +46,9 @@ msgstr "Hålla vid liv ständigt"
 msgid "Public Key"
 msgstr "Publik nyckel"
 
+msgid "Show/Hide QR-Code"
+msgstr ""
+
 msgid "WireGuard Status"
 msgstr "Status för WireGuard"
 
index 9ec5c60048d24f4825ca0d1bea57462798dd7b29..3cec473ecf56593279a659de312f582676c96706 100644 (file)
@@ -46,6 +46,9 @@ msgstr ""
 msgid "Public Key"
 msgstr ""
 
+msgid "Show/Hide QR-Code"
+msgstr ""
+
 msgid "WireGuard Status"
 msgstr ""
 
index 38fd784b1247c7daa3159e2365f11495e3140397..1864048d5b8b05581b0b359926203298aa1993f4 100644 (file)
@@ -60,6 +60,9 @@ msgstr "Keepalive 间隔(秒)"
 msgid "Public Key"
 msgstr "公钥"
 
+msgid "Show/Hide QR-Code"
+msgstr ""
+
 msgid "WireGuard Status"
 msgstr "WireGuard 状态"
 
index 66fd9649e6a623e49e5f46d96f26e674e773e70a..83da0c351a66a2138ec5143c6e16a7d9f6d91dc0 100644 (file)
@@ -60,6 +60,9 @@ msgstr "Keepalive 間隔(秒)"
 msgid "Public Key"
 msgstr "公鑰"
 
+msgid "Show/Hide QR-Code"
+msgstr ""
+
 msgid "WireGuard Status"
 msgstr "WireGuard 狀態"
 
index 573e6f8642342cd23a9a0532e1f7f24181b55f3a..47f66eac949a78ceff7289a11ace499909575ad0 100755 (executable)
@@ -14,7 +14,7 @@ find . -type f -name '*.lua' -path '*/controller/*' | while read controller; do
                package="${controller##*/controller/}"; package="${package%.lua}"; package="luci.controller.${package//\//.}"
 
                if ! grep -sqE '\bmodule[[:space:]]*\(?[[:space:]]*("|\047|\[=*\[)'"$package" "$controller"; then
-                       echo "'$controller' does not containt the expected\n\t'module(\"$package\", ...)' line.\n"
+                       echo "'$controller' does not contain the expected\n\t'module(\"$package\", ...)' line.\n"
                fi
 
                grep -sqE '\b(Form|SimpleForm)[[:space:]]*\(' "$model" && ! grep -sqE '\bMap[[:space:]]*\(' "$model" && is_form=1 || is_form=0
index 899d90d22c282ada2e203cc249a75a52aa51aa83..3f9ee896308c04e89e63dd8ff457725772e1826d 100755 (executable)
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 use Text::Balanced qw(extract_bracketed extract_delimited extract_tagged);
 
-@ARGV >= 1 || die "Usage: $0 <source direcory>\n";
+@ARGV >= 1 || die "Usage: $0 <source directory>\n";
 
 
 my %stringtable;
index 9e4b9de3c56532cc45cc5a0e447716033fa38cab..319e1cb03ea43c608f5900be440b54e307c4f4f7 100644 (file)
@@ -1,6 +1,6 @@
 -------------------------------------------------------------------------------
 -- LuaDoc configuration file. This file contains the default options for 
--- luadoc operation. These options can be overriden by the command line tool
+-- luadoc operation. These options can be overridden by the command line tool
 -- @see luadoc.print_help
 -- @release $Id: config.lua,v 1.6 2007/04/18 14:28:39 tomas Exp $
 -------------------------------------------------------------------------------
index 2307f1f3baa9f91c72a57387e745c91851f675db..e4388c76e3f954f4156f28b76f1a2e67376b4928 100644 (file)
@@ -33,7 +33,7 @@ config 'defaults' 'ssidscheme'
 
 config 'defaults' 'interface'
        option 'netmask' '255.255.255.255'
-       option 'dns' '85.214.20.141 194.150.168.168 2001:4ce8::53 2001:910:800::12'
+       option 'dns' '85.214.20.141 80.67.169.40 194.150.168.168 2001:4ce8::53 2001:910:800::12'
 
 config 'dhcp' 'dhcp'
        option leasetime '5m'
index 9b08acc25662d1b6691724f50b6b9f2657ab83ea..6c7f4b6966ba4f76afe2f6242b6b47aa062fbbaa 100644 (file)
@@ -31,7 +31,7 @@ config 'defaults' 'ssidscheme'
 
 config 'defaults' 'interface'
        option 'netmask' '255.255.255.255'
-       option 'dns' '85.214.20.141 194.150.168.168 2001:4ce8::53 2001:910:800::12'
+       option 'dns' '85.214.20.141 80.67.169.40 194.150.168.168 2001:4ce8::53 2001:910:800::12'
 
 config 'dhcp' 'dhcp'
        option 'leasetime' '5m'
diff --git a/contrib/package/community-profiles/files/etc/config/profile_fuerstenwalde b/contrib/package/community-profiles/files/etc/config/profile_fuerstenwalde
new file mode 100644 (file)
index 0000000..f7df7ba
--- /dev/null
@@ -0,0 +1,38 @@
+config 'community' 'profile'
+       option 'name' 'Freifunk Fürstenwalde'
+       option 'homepage' 'http://fuerstenwalde.freifunk.net'
+       option 'ssid' 'fuerstenwalde.freifunk.net'
+       option 'ssid_scheme' 'addchannelbefore'
+       option 'mesh_network' '10.0.0.0/8'
+       option 'splash_network' '10.104.0.0/16'
+       option 'splash_prefix' '27'
+       option 'latitude' '52.35844'
+       option 'longitude' '14.063696'
+       option 'owm_api' 'http://util.berlin.freifunk.net'
+
+config 'defaults' 'wifi_device'
+       option 'channel' '13'
+
+config 'defaults' 'wifi_device_5'
+       option 'channel' '36'
+
+config 'defaults' 'wifi_iface'
+       option 'mcast_rate' '6000'
+
+config 'defaults' 'wifi_iface_5'
+       option 'mcast_rate' '12000'
+
+config 'defaults' 'bssidscheme'
+       option '13'     'D2:CA:FF:EE:BA:BE'
+       option '36'     '02:36:CA:FF:EE:EE'
+
+config 'defaults' 'ssidscheme'
+       option '13'     'intern-ch13.freifunk.net'
+       option '36'     'intern-ch36.freifunk.net'
+
+config 'defaults' 'interface'
+       option 'netmask' '255.255.255.255'
+       option 'dns' '85.214.20.141 80.67.169.40 194.150.168.168 2001:4ce8::53 2001:910:800::12'
+
+config 'dhcp' 'dhcp'
+option leasetime '5m'
index 84bbdfe528691459ab7b02502036d67f19e045f5..78db579a933f1605fb4a361ac6467b7e9e9302c7 100644 (file)
@@ -11,7 +11,7 @@ config 'community' 'profile'
 
 config 'defaults' 'interface'
        option 'netmask' '255.255.0.0'
-       option 'dns' '85.214.20.141 194.150.168.168'
+       option 'dns' '85.214.20.141 80.67.169.40 194.150.168.168'
        option 'delegate' '0'
 
 config 'defaults' 'wifi_device'
index c028a666144e949952f4afdf3bc31484241825d4..ceaff2a743187a27470721d63e01ca25bae10d11 100644 (file)
@@ -7,4 +7,4 @@ config 'community' 'profile'
        option 'splash_prefix' '28'
 
 config 'defaults' 'interface'
-       option 'dns' '216.87.84.211'
+       option 'dns' '80.67.169.40 216.87.84.211'
index 468ed7a3e07b532725b78ead574336f525ceeb33..82589ecfdf1727ef942e86dd7ba2f55ce95c0f7a 100755 (executable)
@@ -10,7 +10,7 @@ hostsfile_getname()
 
        while value="$( uci -q get $config.@LoadPlugin[$i].library )"; do {
                case "$value" in
-                       'olsrd_nameservice.so.'*)
+                       'olsrd_nameservice'*)
                                file="$( uci -q get $config.@LoadPlugin[$i].hosts_file )"
                                break
                        ;;
index 8ac803d309c09d9e2d438c77b83757bc18e4d834..af1d7ca68d1f5119432f6b736799a6c186a201a1 100755 (executable)
@@ -11,7 +11,7 @@ if fs.access("/var/run/olsrd.pid") or fs.access("/var/run/olsrd4.pid") then
 
        x:foreach("olsrd", "LoadPlugin",
                function(s)
-                       if s.library == "olsrd_watchdog.so.0.1" then
+                       if s.library == "olsrd_watchdog" then
                                intv  = tonumber(s.interval)
                                stamp = s.file
                        end
index 40a077f154cb2fcadcaedbc43a67fa120e36ba2c..b06e145d65ea06802b600fec7d067d503a5cd065 100755 (executable)
@@ -8,7 +8,7 @@ MAPSERVER="$(uci -q get freifunk-mapupdate.mapupdate.mapserver)"
 [ -z "$MAPSERVER" ] && logger -t "freifunk-mapupdate:" "No mapserver configured" && exit 1
 
 #check if nameservice plugin is installed and enabled, else exit
-nslib=`uci show olsrd |grep olsrd_nameservice.so |awk {' FS="."; print $1"."$2 '}`
+nslib=`uci show olsrd |grep olsrd_nameservice |awk {' FS="."; print $1"."$2 '}`
 if [ -n "$nslib" ]; then
                LATLONFILE="$(uci -q get $nslib.latlon_file)"
                if [ -z "$LATLONFILE" ]; then
index f546985c9c7e067cef14dfd951f04e66ca89c9d1..4bc3ab0b67959be199077c4f85eedc61c1308428 100644 (file)
@@ -21,7 +21,7 @@
 /* Global watchdog fd, required by signal handler */
 int wdfd = -1;
 
-/* Handle finished childs */
+/* Handle finished children */
 static void sigchld_handler(int sig)
 {
        pid_t pid;
@@ -406,7 +406,7 @@ static int do_daemon(void)
                ioctl(wdfd, WDIOC_SETTIMEOUT, &wdtimeout);
        }
 
-       /* Install signal handler to reap childs */
+       /* Install signal handler to reap children */
        sa.sa_handler = sigchld_handler;
        sa.sa_flags = 0;
        sigaction(SIGCHLD, &sa, NULL);
index 6f2382de38b54717b8d90e86af40594188b958a6..c622856dae83d3ea1f734920e1c84b4ff21709c3 100644 (file)
@@ -64,7 +64,7 @@
 #define WATCH_SHUTDOWN 'V'
 #define WATCH_KEEPALIVE        '\0'
 
-/* System load error action and treshold */
+/* System load error action and threshold */
 #define LOAD_TRESHOLD  15.00
 #define LOAD_ACTION            "/sbin/reboot", "/sbin/reboot"
 
index b0f6cb291ea6b844f52f8bc0dfe5085ae787e5f5..0b99530a57561af92efa0fe65aa8294bd5e78a9a 100644 (file)
@@ -46,7 +46,7 @@ set_defaults() {
                b="${b//_/ }"
                string_contains "$a" "_LENGTH" && continue
                string_contains "$a" "_ITEM" && {
-                   # special threatment for lists. use add_list and remove the
+                   # special treatment for lists. use add_list and remove the
                    # item index (_ITEMx).
                    uci add_list $2.${a//_ITEM[0-9]*/}="$b"
                } || {
index 9ebcb46b134ca9330a0b98e61e574fb679c53858..a435e4b1b8a582f3f30af593b6afa49992d891b4 100755 (executable)
@@ -73,7 +73,7 @@ setup_nameservice() {
 
        uci batch <<- EOF
                set $cfg.olsrd_nameservice=LoadPlugin
-               set $cfg.olsrd_nameservice.library="olsrd_nameservice.so.0.4"
+               set $cfg.olsrd_nameservice.library="olsrd_nameservice"
                set $cfg.olsrd_nameservice.latlon_file="$llfile"
                set $cfg.olsrd_nameservice.hosts_file="$hosts"
                set $cfg.olsrd_nameservice.sighup_pid_file="/var/run/dnsmasq.pid"
@@ -91,7 +91,7 @@ setup_dyngw_plain() {
     if [ "$general_sharenet" == 1 ]; then
        uci set $cfg.dyngw_plain=LoadPlugin
        uci set $cfg.dyngw_plain.ignore=0
-       uci set $cfg.dyngw_plain.library="olsrd_dyn_gw_plain.so.0.4"
+       uci set $cfg.dyngw_plain.library="olsrd_dyn_gw_plain"
        uci_commitverbose "Setup olsrd_dyngw_plain plugin" $cfg
     fi
 
@@ -106,7 +106,7 @@ setup_watchdog() {
 
        uci batch <<- EOF
                set $cfg.olsrd_watchdog=LoadPlugin
-               set $cfg.olsrd_watchdog.library="olsrd_watchdog.so.0.1"
+               set $cfg.olsrd_watchdog.library="olsrd_watchdog"
                set $cfg.olsrd_watchdog.file="$watchdogfile"
                set $cfg.olsrd_watchdog.interval=30
        EOF
@@ -118,7 +118,7 @@ setup_jsoninfo() {
        proto="$1"
        uci batch <<- EOF
                set $cfg.olsrd_jsoninfo=LoadPlugin
-               set $cfg.olsrd_jsoninfo.library="olsrd_jsoninfo.so.1.1"
+               set $cfg.olsrd_jsoninfo.library="olsrd_jsoninfo"
        EOF
        if [ "$proto" = "6" ]; then
                uci set $cfg.olsrd_jsoninfo.ipv6only='1'
@@ -130,7 +130,7 @@ setup_txtinfo() {
        proto="$1"
        uci batch <<- EOF
            set $cfg.olsrd_txtinfo=LoadPlugin
-           set $cfg.olsrd_txtinfo.library="olsrd_txtinfo.so.1.1"
+           set $cfg.olsrd_txtinfo.library="olsrd_txtinfo"
        EOF
        if [ "$proto" = "6" ]; then
                uci set $cfg.olsrd_txtinfo.ipv6only='1'
index e937fe6048a84cb7a75442e0e1203f9302e0bebd..d4bc4c34e53e8d51f29d32ae56d01d7402315706 100644 (file)
@@ -131,7 +131,7 @@ If you call this function several times the dependencies will be linked with **"
 Adds an entry to the selection list
 
 #### property .widget = "select"
-**"select"** shows a selction list, **"radio"** shows a list of radio buttons inside form
+**"select"** shows a selection list, **"radio"** shows a list of radio buttons inside form
 
 #### property .default = nil
 The default value
@@ -194,7 +194,7 @@ If you call this function several times the dependencies will be linked with **"
 Adds an entry to the list
 
 #### property .widget = "checkbox"
-**"select"** shows a selction list, **"checkbox"** shows a list of checkboxes inside form
+**"select"** shows a selection list, **"checkbox"** shows a list of checkboxes inside form
 
 #### property .delimiter = " "
 The string which will be used to delimit the values inside stored option
index dc42c28ab76daeb06787071b71f9a76bb77120c1..adf019c01a792c1a7ac099086ef22ad13453416a 100644 (file)
@@ -1,7 +1,7 @@
 LuCI has a simple regex based template processor which parses HTML-files to Lua functions and allows to store precompiled template files.
 The simplest form of a template is just an ordinary HTML-file. It will be printed out to the user as is.
 
-In LuCI every template is an object with an own scope. It can therefore be instanciated and each instance can has a different scope. As every template processor. LuCI supports several special markups. Those are enclosed in `<% %>`-Tags.
+In LuCI every template is an object with an own scope. It can therefore be instantiated and each instance can has a different scope. As every template processor. LuCI supports several special markups. Those are enclosed in `<% %>`-Tags.
 
 By adding `-` (dash) right after the opening `<%` every whitespace before the markup will be stripped. Adding a `-` right before the closing `%>` will equivalently strip every whitespace behind the markup.
 
index 7751e2baf444cbdc429d31056fecfe18992b1f92..9c7f01aedf00732783c755ea510eabe0d193b4f9 100644 (file)
@@ -7,7 +7,7 @@ vice versa.
 module "luci.http.mime"
 
 ---[[
-MIME mapping table containg extension - mimetype relations.
+MIME mapping table containing extension - mimetype relations.
 
 @class table
 ]]
index b1ecae1453957408b117b5ea37beee9b1b9f1c47..a2df96cdb5c6c1fbbe161b40bcd683c4d7594cae 100644 (file)
@@ -283,7 +283,7 @@ Fetch all routes, optionally matching the given criteria.
 @sort 9
 @name routes
 @param filter  <p>Table containing one or more of the possible filter
-critera described below (optional)</p><table>
+criteria described below (optional)</p><table>
 <tr><th>Field</th><th>Description</th></tr>
 <tr><td>`family`</td><td>
  Number describing the address family to return - `4` selects
@@ -363,7 +363,7 @@ Fetches entries from the IPv4 ARP and IPv6 neighbour kernel table
 @sort 10
 @name neighbors
 @param filter  <p>Table containing one or more of the possible filter
-critera described below (optional)</p><table>
+criteria described below (optional)</p><table>
 <tr><th>Field</th><th>Description</th></tr>
 <tr><td>`family`</td><td>
  Number describing the address family to return - `4` selects
@@ -652,7 +652,7 @@ are considered lower than MAC addresses</li>
 @class function
 @sort 10
 @name cidr.lower
-@param addr A `luci.ip.cidr` instance or a string convertable by
+@param addr A `luci.ip.cidr` instance or a string convertible by
        `luci.ip.new()` to compare against.
 @return `true` if this CIDR is lower than the given address,
        else `false`.
@@ -676,7 +676,7 @@ are considered lower than MAC addresses</li>
 @class function
 @sort 11
 @name cidr.higher
-@param addr A `luci.ip.cidr` instance or a string convertable by
+@param addr A `luci.ip.cidr` instance or a string convertible by
        `luci.ip.new()` to compare against.
 @return `true` if this CIDR is higher than the given address,
        else `false`.
@@ -696,7 +696,7 @@ Checks whether this CIDR instance is equal to the given argument.
 @class function
 @sort 12
 @name cidr.equal
-@param addr A `luci.ip.cidr` instance or a string convertable by
+@param addr A `luci.ip.cidr` instance or a string convertible by
        `luci.ip.new()` to compare against.
 @return `true` if this CIDR is equal to the given address,
        else `false`.
@@ -877,7 +877,7 @@ Test whether CIDR contains given range.
 @class function
 @sort 21
 @name cidr.contains
-@param addr A `luci.ip.cidr` instance or a string convertable by
+@param addr A `luci.ip.cidr` instance or a string convertible by
        `luci.ip.new()` to test.
 @return `true` if this instance fully contains the given address else
        `false`.
@@ -903,12 +903,12 @@ address space, the result is set to the highest possible address.
 @sort 22
 @name cidr.add
 @param amount A numeric value between 0 and 0xFFFFFFFF, a
-       `luci.ip.cidr` instance or a string convertable by
+       `luci.ip.cidr` instance or a string convertible by
        `luci.ip.new()`.
 @param inplace If `true`, modify this instance instead of returning
        a new derived CIDR instance.
 @return <ul>
-       <li>When adding inplace: Return `true` if the addition succeded
+       <li>When adding inplace: Return `true` if the addition succeeded
            or `false` when the addition overflowed.</li>
        <li>When deriving new CIDR: Return new instance representing the value of
         this instance plus the added amount or the highest possible address if
@@ -952,7 +952,7 @@ possible address is returned.
 @sort 23
 @name cidr.sub
 @param amount A numeric value between 0 and 0xFFFFFFFF, a
-       `luci.ip.cidr` instance or a string convertable by
+       `luci.ip.cidr` instance or a string convertible by
        `luci.ip.new()`.
 @param inplace If `true`, modify this instance instead of returning
        a new derived CIDR instance.
diff --git a/libs/luci-lib-iptparser/Makefile b/libs/luci-lib-iptparser/Makefile
new file mode 100644 (file)
index 0000000..06748ad
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2018 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:=Iptables listing parser class
+LUCI_DEPENDS:=+luci-base
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/libs/luci-lib-iptparser/luasrc/sys/iptparser.lua b/libs/luci-lib-iptparser/luasrc/sys/iptparser.lua
new file mode 100644 (file)
index 0000000..7ff665e
--- /dev/null
@@ -0,0 +1,374 @@
+--[[
+
+Iptables parser and query library
+(c) 2008-2009 Jo-Philipp Wich <jow@openwrt.org>
+(c) 2008-2009 Steven Barth <steven@midlink.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
+
+$Id$
+
+]]--
+
+local luci  = {}
+luci.util   = require "luci.util"
+luci.sys    = require "luci.sys"
+luci.ip     = require "luci.ip"
+
+local pcall = pcall
+local io = require "io"
+local tonumber, ipairs, table = tonumber, ipairs, table
+
+module("luci.sys.iptparser")
+
+IptParser = luci.util.class()
+
+function IptParser.__init__( self, family )
+       self._family = (tonumber(family) == 6) and 6 or 4
+       self._rules  = { }
+       self._chains = { }
+       self._tables = { }
+
+       local t = self._tables
+       local s = self:_supported_tables(self._family)
+
+       if s.filter then t[#t+1] = "filter" end
+       if s.nat    then t[#t+1] = "nat"    end
+       if s.mangle then t[#t+1] = "mangle" end
+       if s.raw    then t[#t+1] = "raw"    end
+
+       if self._family == 4 then
+               self._nulladdr = "0.0.0.0/0"
+               self._command  = "iptables -t %s --line-numbers -nxvL"
+       else
+               self._nulladdr = "::/0"
+               self._command  = "ip6tables -t %s --line-numbers -nxvL"
+       end
+
+       self:_parse_rules()
+end
+
+function IptParser._supported_tables( self, family )
+       local tables = { }
+       local ok, lines = pcall(io.lines,
+               (family == 6) and "/proc/net/ip6_tables_names"
+                              or "/proc/net/ip_tables_names")
+
+       if ok and lines then
+               local line
+               for line in lines do
+                       tables[line] = true
+               end
+       end
+
+       return tables
+end
+
+-- search criteria as only argument. If args is nil or an empty table then all
+-- rules will be returned.
+--
+-- The following keys in the args table are recognized:
+-- <ul>
+--  <li> table          - Match rules that are located within the given table
+--  <li> chain          - Match rules that are located within the given chain
+--  <li> target                 - Match rules with the given target
+--  <li> protocol       - Match rules that match the given protocol, rules with
+--                                             protocol "all" are always matched
+--  <li> source                 - Match rules with the given source, rules with source
+--                                             "0.0.0.0/0" (::/0) are always matched
+--  <li> destination - Match rules with the given destination, rules with
+--                                             destination "0.0.0.0/0" (::/0) are always matched
+--  <li> inputif        - Match rules with the given input interface, rules
+--                                             with input      interface "*" (=all) are always matched
+--  <li> outputif       - Match rules with the given output interface, rules
+--                                             with output     interface "*" (=all) are always matched
+--  <li> flags          - Match rules that match the given flags, current
+--                                             supported values are "-f" (--fragment)
+--                                             and "!f" (! --fragment)
+--  <li> options        - Match rules containing all given options
+-- </ul>
+-- The return value is a list of tables representing the matched rules.
+-- Each rule table contains the following fields:
+-- <ul>
+--  <li> index          - The index number of the rule
+--  <li> table          - The table where the rule is located, can be one
+--                                             of "filter", "nat" or "mangle"
+--  <li> chain          - The chain where the rule is located, e.g. "INPUT"
+--                                             or "postrouting_wan"
+--  <li> target                 - The rule target, e.g. "REJECT" or "DROP"
+--  <li> protocol              The matching protocols, e.g. "all" or "tcp"
+--  <li> flags          - Special rule options ("--", "-f" or "!f")
+--  <li> inputif        - Input interface of the rule, e.g. "eth0.0"
+--                                             or "*" for all interfaces
+--  <li> outputif       - Output interface of the rule,e.g. "eth0.0"
+--                                             or "*" for all interfaces
+--  <li> source                 - The source ip range, e.g. "0.0.0.0/0" (::/0)
+--  <li> destination - The destination ip range, e.g. "0.0.0.0/0" (::/0)
+--  <li> options        - A list of specific options of the rule,
+--                                             e.g. { "reject-with", "tcp-reset" }
+--  <li> packets        - The number of packets matched by the rule
+--  <li> bytes          - The number of total bytes matched by the rule
+-- </ul>
+-- Example:
+-- <pre>
+-- ip = luci.sys.iptparser.IptParser()
+-- result = ip.find( {
+--     target="REJECT",
+--     protocol="tcp",
+--     options={ "reject-with", "tcp-reset" }
+-- } )
+-- </pre>
+-- This will match all rules with target "-j REJECT",
+-- protocol "-p tcp" (or "-p all")
+-- and the option "--reject-with tcp-reset".
+function IptParser.find( self, args )
+
+       local args = args or { }
+       local rv   = { }
+
+       args.source      = args.source      and self:_parse_addr(args.source)
+       args.destination = args.destination and self:_parse_addr(args.destination)
+
+       for i, rule in ipairs(self._rules) do
+               local match = true
+
+               -- match table
+               if not ( not args.table or args.table:lower() == rule.table ) then
+                       match = false
+               end
+
+               -- match chain
+               if not ( match == true and (
+                       not args.chain or args.chain == rule.chain
+               ) ) then
+                       match = false
+               end
+
+               -- match target
+               if not ( match == true and (
+                       not args.target or args.target == rule.target
+               ) ) then
+                       match = false
+               end
+
+               -- match protocol
+               if not ( match == true and (
+                       not args.protocol or rule.protocol == "all" or
+                       args.protocol:lower() == rule.protocol
+               ) ) then
+                       match = false
+               end
+
+               -- match source
+               if not ( match == true and (
+                       not args.source or rule.source == self._nulladdr or
+                       self:_parse_addr(rule.source):contains(args.source)
+               ) ) then
+                       match = false
+               end
+
+               -- match destination
+               if not ( match == true and (
+                       not args.destination or rule.destination == self._nulladdr or
+                       self:_parse_addr(rule.destination):contains(args.destination)
+               ) ) then
+                       match = false
+               end
+
+               -- match input interface
+               if not ( match == true and (
+                       not args.inputif or rule.inputif == "*" or
+                       args.inputif == rule.inputif
+               ) ) then
+                       match = false
+               end
+
+               -- match output interface
+               if not ( match == true and (
+                       not args.outputif or rule.outputif == "*" or
+                       args.outputif == rule.outputif
+               ) ) then
+                       match = false
+               end
+
+               -- match flags (the "opt" column)
+               if not ( match == true and (
+                       not args.flags or rule.flags == args.flags
+               ) ) then
+                       match = false
+               end
+
+               -- match specific options
+               if not ( match == true and (
+                       not args.options or
+                       self:_match_options( rule.options, args.options )
+               ) ) then
+                       match = false
+               end
+
+               -- insert match
+               if match == true then
+                       rv[#rv+1] = rule
+               end
+       end
+
+       return rv
+end
+
+
+-- through external commands.
+function IptParser.resync( self )
+       self._rules = { }
+       self._chain = nil
+       self:_parse_rules()
+end
+
+
+function IptParser.tables( self )
+       return self._tables
+end
+
+
+function IptParser.chains( self, table )
+       local lookup = { }
+       local chains = { }
+       for _, r in ipairs(self:find({table=table})) do
+               if not lookup[r.chain] then
+                       lookup[r.chain]   = true
+                       chains[#chains+1] = r.chain
+               end
+       end
+       return chains
+end
+
+
+--                             and "rules". The "rules" field is a table of rule tables.
+function IptParser.chain( self, table, chain )
+       return self._chains[table:lower()] and self._chains[table:lower()][chain]
+end
+
+
+function IptParser.is_custom_target( self, target )
+       for _, r in ipairs(self._rules) do
+               if r.chain == target then
+                       return true
+               end
+       end
+       return false
+end
+
+
+-- [internal] Parse address according to family.
+function IptParser._parse_addr( self, addr )
+       if self._family == 4 then
+               return luci.ip.IPv4(addr)
+       else
+               return luci.ip.IPv6(addr)
+       end
+end
+
+-- [internal] Parse iptables output from all tables.
+function IptParser._parse_rules( self )
+
+       for i, tbl in ipairs(self._tables) do
+
+               self._chains[tbl] = { }
+
+               for i, rule in ipairs(luci.util.execl(self._command % tbl)) do
+
+                       if rule:find( "^Chain " ) == 1 then
+
+                               local crefs
+                               local cname, cpol, cpkt, cbytes = rule:match(
+                                       "^Chain ([^%s]*) %(policy (%w+) " ..
+                                       "(%d+) packets, (%d+) bytes%)"
+                               )
+
+                               if not cname then
+                                       cname, crefs = rule:match(
+                                               "^Chain ([^%s]*) %((%d+) references%)"
+                                       )
+                               end
+
+                               self._chain = cname
+                               self._chains[tbl][cname] = {
+                                       policy     = cpol,
+                                       packets    = tonumber(cpkt or 0),
+                                       bytes      = tonumber(cbytes or 0),
+                                       references = tonumber(crefs or 0),
+                                       rules      = { }
+                               }
+
+                       else
+                               if rule:find("%d") == 1 then
+
+                                       local rule_parts   = luci.util.split( rule, "%s+", nil, true )
+                                       local rule_details = { }
+
+                                       -- cope with rules that have no target assigned
+                                       if rule:match("^%d+%s+%d+%s+%d+%s%s") then
+                                               table.insert(rule_parts, 4, nil)
+                                       end
+
+                                       -- ip6tables opt column is usually zero-width
+                                       if self._family == 6 then
+                                               table.insert(rule_parts, 6, "--")
+                                       end
+
+                                       rule_details["table"]       = tbl
+                                       rule_details["chain"]       = self._chain
+                                       rule_details["index"]       = tonumber(rule_parts[1])
+                                       rule_details["packets"]     = tonumber(rule_parts[2])
+                                       rule_details["bytes"]       = tonumber(rule_parts[3])
+                                       rule_details["target"]      = rule_parts[4]
+                                       rule_details["protocol"]    = rule_parts[5]
+                                       rule_details["flags"]       = rule_parts[6]
+                                       rule_details["inputif"]     = rule_parts[7]
+                                       rule_details["outputif"]    = rule_parts[8]
+                                       rule_details["source"]      = rule_parts[9]
+                                       rule_details["destination"] = rule_parts[10]
+                                       rule_details["options"]     = { }
+
+                                       for i = 11, #rule_parts  do
+                                               if #rule_parts[i] > 0 then
+                                                       rule_details["options"][i-10] = rule_parts[i]
+                                               end
+                                       end
+
+                                       self._rules[#self._rules+1] = rule_details
+
+                                       self._chains[tbl][self._chain].rules[
+                                               #self._chains[tbl][self._chain].rules + 1
+                                       ] = rule_details
+                               end
+                       end
+               end
+       end
+
+       self._chain = nil
+end
+
+
+-- [internal] Return true if optlist1 contains all elements of optlist 2.
+--            Return false in all other cases.
+function IptParser._match_options( self, o1, o2 )
+
+       -- construct a hashtable of first options list to speed up lookups
+       local oh = { }
+       for i, opt in ipairs( o1 ) do oh[opt] = true end
+
+       -- iterate over second options list
+       -- each string in o2 must be also present in o1
+       -- if o2 contains a string which is not found in o1 then return false
+       for i, opt in ipairs( o2 ) do
+               if not oh[opt] then
+                       return false
+               end
+       end
+
+       return true
+end
diff --git a/libs/luci-lib-iptparser/luasrc/sys/iptparser.luadoc b/libs/luci-lib-iptparser/luasrc/sys/iptparser.luadoc
new file mode 100644 (file)
index 0000000..071e7d5
--- /dev/null
@@ -0,0 +1,69 @@
+---[[
+LuCI iptables parser and query library
+
+@cstyle        instance
+]]
+module "luci.sys.iptparser"
+
+---[[
+Create a new iptables parser object.
+
+@class function
+@name  IptParser
+@param family  Number specifying the address family. 4 for IPv4, 6 for IPv6
+@return        IptParser instance
+]]
+
+---[[
+Find all firewall rules that match the given criteria. Expects a table with
+
+search criteria as only argument. If args is nil or an empty table then all
+rules will be returned.
+]]
+
+---[[
+Rebuild the internal lookup table, for example when rules have changed
+
+through external commands.
+@class function
+@name IptParser.resync
+@return        nothing
+]]
+
+---[[
+Find the names of all tables.
+
+@class function
+@name IptParser.tables
+@return                Table of table names.
+]]
+
+---[[
+Find the names of all chains within the given table name.
+
+@class function
+@name IptParser.chains
+@param table   String containing the table name
+@return                Table of chain names in the order they occur.
+]]
+
+---[[
+Return the given firewall chain within the given table name.
+
+@class function
+@name IptParser.chain
+@param table   String containing the table name
+@param chain   String containing the chain name
+@return                Table containing the fields "policy", "packets", "bytes"
+--                             and "rules". The "rules" field is a table of rule tables.
+]]
+
+---[[
+Test whether the given target points to a custom chain.
+
+@class function
+@name IptParser.is_custom_target
+@param target  String containing the target action
+@return                        Boolean indicating whether target is a custom chain.
+]]
+
index aa318414029fba691d90a98339ed8dde370aa1dd..8c9260317ba8ee32a9e40754d0e73aced7c7d067 100644 (file)
@@ -10,7 +10,7 @@ module "nixio.CHANGELOG"
 -- <li>Added support for x509 certificates in DER format.</li>
 -- <li>Added support for splice() in UnifiedIO.copyz().</li>
 -- <li>Added interface to inject chunks into UnifiedIO.linesource() buffer.</li>
--- <li>Changed TLS behaviour to explicitely separate servers and clients.</li>
+-- <li>Changed TLS behaviour to explicitly separate servers and clients.</li>
 -- <li>Fixed usage of signed datatype breaking Base64 decoding.</li>
 -- <li>Fixed namespace clashes for nixio.fs.</li>
 -- <li>Fixed splice() support for some exotic C libraries.</li>
index 9860cf0919595f365d346d38c90b9cecd8f330d6..d663b629ee061e31e0f1d30bc46a878e85bd975f 100644 (file)
@@ -18,7 +18,7 @@ module "nixio.README"
 -- table <strong>nixio.const_sock</strong> for socket error codes. This might
 -- be important if you are dealing with Windows applications, on POSIX however
 -- const_sock is just an alias for const.</li>
--- <li>With some exceptions - which are explicitely stated in the function
+-- <li>With some exceptions - which are explicitly stated in the function
 -- documentation - all blocking functions are signal-protected and will not fail
 -- with EINTR.</li>
 -- <li>On POSIX the SIGPIPE signal will be set to ignore upon initialization.
index 1a0d69a054510bad87e793fc180572cf4454fee2..56a4afbb88c2e2c7d7610ba43dce2efb2ea18f85 100644 (file)
@@ -59,7 +59,7 @@ module "nixio"
 -- <li>aliases = Table of alias names</li>
 -- </ul>
 
---- Get all or a specifc proto entry.
+--- Get all or a specific proto entry.
 -- @class function
 -- @name nixio.getproto
 -- @param proto                protocol number or name to lookup (optional)
index 8b7c12ff00d430402f33368c2b7bcd5636e79f22..d2a8ff42e1452b87f22179ac6d01aabc3121e1da 100644 (file)
@@ -720,7 +720,7 @@ cleanup:
 }
 
 /*
- * Helper for mpi substraction
+ * Helper for mpi subtraction
  */
 static void mpi_sub_hlp( int n, t_int *s, t_int *d )
 {
@@ -741,7 +741,7 @@ static void mpi_sub_hlp( int n, t_int *s, t_int *d )
 }
 
 /*
- * Unsigned substraction: X = |A| - |B|  (HAC 14.9)
+ * Unsigned subtraction: X = |A| - |B|  (HAC 14.9)
  */
 int mpi_sub_abs( mpi *X, mpi *A, mpi *B )
 {
@@ -809,7 +809,7 @@ cleanup:
 }
 
 /*
- * Signed substraction: X = A - B
+ * Signed subtraction: X = A - B
  */
 int mpi_sub_mpi( mpi *X, mpi *A, mpi *B )
 {
@@ -856,7 +856,7 @@ int mpi_add_int( mpi *X, mpi *A, int b )
 }
 
 /*
- * Signed substraction: X = A - b
+ * Signed subtraction: X = A - b
  */
 int mpi_sub_int( mpi *X, mpi *A, int b )
 {
index 173610c1a03b03b7756efec2b64707cd864705af..b9ebf35bae560767d2f13929f7c9c246deabb3a5 100644 (file)
@@ -19,7 +19,7 @@
  *  MA  02110-1301  USA
  */
 /*
- *  The ITU-T X.509 standard defines a certificat format for PKI.
+ *  The ITU-T X.509 standard defines a certificate format for PKI.
  *
  *  http://www.ietf.org/rfc/rfc2459.txt
  *  http://www.ietf.org/rfc/rfc3279.txt
@@ -68,7 +68,7 @@ static int asn1_eval_octet(unsigned int digit)
 }
 
 /*
- * write the asn.1 lenght form into p
+ * write the asn.1 length form into p
  */
 static int asn1_add_len(unsigned int size, x509_node *node)
 {
@@ -788,7 +788,7 @@ static int x509write_parse_names(x509_node *node, unsigned char *names)
                     R_len = len;
                 }
 
-                /* set tag poiner to begin */
+                /* set tag pointer to begin */
                 tag_sp = tag;
 
                 /* is at end? */
@@ -866,7 +866,7 @@ static int x509write_parse_names(x509_node *node, unsigned char *names)
 }
 
 /*
- * Copy raw data from orginal ca to node
+ * Copy raw data from original ca to node
  */
 static int x509write_copy_from_raw(x509_node *node, x509_buf *raw)
 {
index c6673033299a7b892b2b34d57f947dce44ffd520..cf443ea922870bf3ccfc45e61a771887d3572782 100644 (file)
@@ -272,7 +272,7 @@ int mpi_cmp_int( mpi *X, int z );
 int mpi_add_abs( mpi *X, mpi *A, mpi *B );
 
 /**
- * \brief          Unsigned substraction: X = |A| - |B|
+ * \brief          Unsigned subtraction: X = |A| - |B|
  *
  * \return         0 if successful,
  *                 POLARSSL_ERR_MPI_NEGATIVE_VALUE if B is greater than A
@@ -288,7 +288,7 @@ int mpi_sub_abs( mpi *X, mpi *A, mpi *B );
 int mpi_add_mpi( mpi *X, mpi *A, mpi *B );
 
 /**
- * \brief          Signed substraction: X = A - B
+ * \brief          Signed subtraction: X = A - B
  *
  * \return         0 if successful,
  *                 1 if memory allocation failed
@@ -304,7 +304,7 @@ int mpi_sub_mpi( mpi *X, mpi *A, mpi *B );
 int mpi_add_int( mpi *X, mpi *A, int b );
 
 /**
- * \brief          Signed substraction: X = A - b
+ * \brief          Signed subtraction: X = A - b
  *
  * \return         0 if successful,
  *                 1 if memory allocation failed
index 908a1dbf51f71158f06a0647bae517e9712e94b5..6c9ef99a8ac3657582c5ca9fc16776cfdd004891 100644 (file)
@@ -375,7 +375,7 @@ int x509write_add_pubkey( x509_raw *chain, rsa_context *pubkey );
  *                 the string parse.
  *
  * \param chain    points to the raw certificate data
- * \param names    a string that can hold (separete with ";"):
+ * \param names    a string that can hold (separate with ";"):
  *                     CN=CommonName
  *                 --   O=Organization
  *                 --  OU=OrgUnit
@@ -402,7 +402,7 @@ int x509write_add_customize ( x509_raw *crt,
 * \brief          Add x509 issuer field
 *
 * \param chain    points to the raw certificate data
-* \param issuer   a string holding (separete with ";"):
+* \param issuer   a string holding (separate with ";"):
 *                     CN=CommonName
 *                 --   O=Organization
 *                 --  OU=OrgUnit
@@ -419,7 +419,7 @@ int x509write_add_issuer( x509_raw *crt, unsigned char *issuer);
  * \brief          Add x509 subject field
  *
  * \param chain    points to the raw certificate data
- * \param subject  a string holding (separete with ";"):
+ * \param subject  a string holding (separate with ";"):
  *                     CN=CommonName
  *                 --   O=Organization
  *                 --  OU=OrgUnit
index fcfc5069426685da91362906040a31533765f8e7..c27cc8264ee66d6c9244913ccc248d20c7b992ff 100644 (file)
@@ -511,20 +511,19 @@ function cbi_d_update() {
                if (node && node.parentNode && !cbi_d_check(entry.deps)) {
                        node.parentNode.removeChild(node);
                        state = true;
-               } else if (parent && (!node || !node.parentNode) && cbi_d_check(entry.deps)) {
+               }
+               else if (parent && (!node || !node.parentNode) && cbi_d_check(entry.deps)) {
                        var next = undefined;
 
                        for (next = parent.firstChild; next; next = next.nextSibling) {
-                               if (next.getAttribute && parseInt(next.getAttribute('data-index'), 10) > entry.index) {
+                               if (next.getAttribute && parseInt(next.getAttribute('data-index'), 10) > entry.index)
                                        break;
-                               }
                        }
 
-                       if (!next) {
+                       if (!next)
                                parent.appendChild(entry.node);
-                       } else {
+                       else
                                parent.insertBefore(entry.node, next);
-                       }
 
                        state = true;
                }
@@ -539,9 +538,8 @@ function cbi_d_update() {
                        cbi_tag_last(parent);
        }
 
-       if (state) {
+       if (state)
                cbi_d_update();
-       }
 }
 
 function cbi_init() {
@@ -565,9 +563,8 @@ function cbi_init() {
                var index = parseInt(node.getAttribute('data-index'), 10);
                var depends = JSON.parse(node.getAttribute('data-depends'));
                if (!isNaN(index) && depends.length > 0) {
-                       for (var alt = 0; alt < depends.length; alt++) {
+                       for (var alt = 0; alt < depends.length; alt++)
                                cbi_d_add(node, depends[alt], index);
-                       }
                }
        }
 
@@ -575,9 +572,8 @@ function cbi_init() {
 
        for (var i = 0, node; (node = nodes[i]) !== undefined; i++) {
                var events = node.getAttribute('data-update').split(' ');
-               for (var j = 0, event; (event = events[j]) !== undefined; j++) {
+               for (var j = 0, event; (event = events[j]) !== undefined; j++)
                        cbi_bind(node, event, cbi_d_update);
-               }
        }
 
        nodes = document.querySelectorAll('[data-choices]');
@@ -670,13 +666,13 @@ function cbi_combobox(id, values, def, man, focus) {
        var sel = document.createElement("select");
                sel.id = selid;
                sel.index = obj.index;
-               sel.className = obj.className.replace(/cbi-input-text/, 'cbi-input-select');
+               sel.classList.remove('cbi-input-text');
+               sel.classList.add('cbi-input-select');
 
-       if (obj.nextSibling) {
+       if (obj.nextSibling)
                obj.parentNode.insertBefore(sel, obj.nextSibling);
-       } else {
+       else
                obj.parentNode.appendChild(sel);
-       }
 
        var dt = obj.getAttribute('cbi_datatype');
        var op = obj.getAttribute('cbi_optional');
@@ -687,7 +683,8 @@ function cbi_combobox(id, values, def, man, focus) {
                        optdef.value = "";
                        optdef.appendChild(document.createTextNode(typeof(def) === 'string' ? def : cbi_strings.label.choose));
                        sel.appendChild(optdef);
-               } else {
+               }
+               else {
                        var opt = document.createElement("option");
                        opt.value = obj.value;
                        opt.selected = "selected";
@@ -700,9 +697,8 @@ function cbi_combobox(id, values, def, man, focus) {
                var opt = document.createElement("option");
                opt.value = i;
 
-               if (obj.value == i) {
+               if (obj.value == i)
                        opt.selected = "selected";
-               }
 
                opt.appendChild(document.createTextNode(values[i]));
                sel.appendChild(opt);
@@ -724,7 +720,8 @@ function cbi_combobox(id, values, def, man, focus) {
                        sel.blur();
                        sel.parentNode.removeChild(sel);
                        obj.focus();
-               } else {
+               }
+               else {
                        obj.value = sel.options[sel.selectedIndex].value;
                }
 
@@ -788,35 +785,30 @@ function cbi_dynlist_init(parent, datatype, optional, choices)
        {
                values = [ ];
 
-               while (parent.firstChild)
-               {
+               while (parent.firstChild) {
                        var n = parent.firstChild;
                        var i = +n.index;
 
-                       if (i != del)
-                       {
-                               if (n.nodeName.toLowerCase() == 'input')
+                       if (i != del) {
+                               if (matchesElem(n, 'input'))
                                        values.push(n.value || '');
-                               else if (n.nodeName.toLowerCase() == 'select')
+                               else if (matchesElem(n, 'select'))
                                        values[values.length-1] = n.options[n.selectedIndex].value;
                        }
 
                        parent.removeChild(n);
                }
 
-               if (add >= 0)
-               {
+               if (add >= 0) {
                        focus = add+1;
                        values.splice(focus, 0, '');
                }
-               else if (values.length == 0)
-               {
+               else if (values.length == 0) {
                        focus = 0;
                        values.push('');
                }
 
-               for (var i = 0; i < values.length; i++)
-               {
+               for (var i = 0; i < values.length; i++) {
                        var t = document.createElement('input');
                                t.id = prefix + '.' + (i+1);
                                t.name = prefix;
@@ -826,9 +818,7 @@ function cbi_dynlist_init(parent, datatype, optional, choices)
                                t.className = 'cbi-input-text';
 
                        if (i == 0 && holder)
-                       {
                                t.placeholder = holder;
-                       }
 
                        var b = E('div', {
                                class: 'cbi-button cbi-button-' + ((i+1) < values.length ? 'remove' : 'add')
@@ -836,20 +826,16 @@ function cbi_dynlist_init(parent, datatype, optional, choices)
 
                        parent.appendChild(t);
                        parent.appendChild(b);
+
                        if (datatype == 'file')
-                       {
                                cbi_browser_init(t.id, null, parent.getAttribute('data-browser-path'));
-                       }
 
                        parent.appendChild(document.createElement('br'));
 
                        if (datatype)
-                       {
                                cbi_validate_field(t.id, ((i+1) == values.length) || optional, datatype);
-                       }
 
-                       if (choices)
-                       {
+                       if (choices) {
                                cbi_combobox_init(t.id, choices, '', cbi_strings.label.custom);
                                b.index = i;
 
@@ -859,17 +845,14 @@ function cbi_dynlist_init(parent, datatype, optional, choices)
                                if (i == focus || -i == focus)
                                        b.focus();
                        }
-                       else
-                       {
+                       else {
                                cbi_bind(t, 'keydown',  cbi_dynlist_keydown);
                                cbi_bind(t, 'keypress', cbi_dynlist_keypress);
 
-                               if (i == focus)
-                               {
+                               if (i == focus) {
                                        t.focus();
                                }
-                               else if (-i == focus)
-                               {
+                               else if (-i == focus) {
                                        t.focus();
 
                                        /* force cursor to end */
@@ -892,13 +875,11 @@ function cbi_dynlist_init(parent, datatype, optional, choices)
                if (se.nodeType == 3)
                        se = se.parentNode;
 
-               switch (ev.keyCode)
-               {
+               switch (ev.keyCode) {
                        /* backspace, delete */
                        case 8:
                        case 46:
-                               if (se.value.length == 0)
-                               {
+                               if (se.value.length == 0) {
                                        if (ev.preventDefault)
                                                ev.preventDefault();
 
@@ -941,16 +922,14 @@ function cbi_dynlist_init(parent, datatype, optional, choices)
                if (next && next.nextSibling.name == prefix)
                        next = next.nextSibling;
 
-               switch (ev.keyCode)
-               {
+               switch (ev.keyCode) {
                        /* backspace, delete */
                        case 8:
                        case 46:
-                               var del = (se.nodeName.toLowerCase() == 'select')
+                               var del = (matchesElem(se, 'select'))
                                        ? true : (se.value.length == 0);
 
-                               if (del)
-                               {
+                               if (del) {
                                        if (ev.preventDefault)
                                                ev.preventDefault();
 
@@ -994,9 +973,8 @@ function cbi_dynlist_init(parent, datatype, optional, choices)
 
                var se = ev.target ? ev.target : ev.srcElement;
                var input = se.previousSibling;
-               while (input && input.name != prefix) {
+               while (input && input.name != prefix)
                        input = input.previousSibling;
-               }
 
                if (se.classList.contains('cbi-button-remove')) {
                        input.value = '';
@@ -1024,39 +1002,45 @@ function cbi_t_add(section, tab) {
        var t = document.getElementById('tab.' + section + '.' + tab);
        var c = document.getElementById('container.' + section + '.' + tab);
 
-       if( t && c ) {
+       if (t && c) {
                cbi_t[section] = (cbi_t[section] || [ ]);
                cbi_t[section][tab] = { 'tab': t, 'container': c, 'cid': c.id };
        }
 }
 
 function cbi_t_switch(section, tab) {
-       if( cbi_t[section] && cbi_t[section][tab] ) {
+       if (cbi_t[section] && cbi_t[section][tab]) {
                var o = cbi_t[section][tab];
                var h = document.getElementById('tab.' + section);
-               for( var tid in cbi_t[section] ) {
+
+               for (var tid in cbi_t[section]) {
                        var o2 = cbi_t[section][tid];
-                       if( o.tab.id != o2.tab.id ) {
-                               o2.tab.className = o2.tab.className.replace(/(^| )cbi-tab( |$)/, " cbi-tab-disabled ");
+
+                       if (o.tab.id != o2.tab.id) {
+                               o2.tab.classList.remove('cbi-tab');
+                               o2.tab.classList.add('cbi-tab-disabled');
                                o2.container.style.display = 'none';
                        }
                        else {
-                               if(h) h.value = tab;
-                               o2.tab.className = o2.tab.className.replace(/(^| )cbi-tab-disabled( |$)/, " cbi-tab ");
+                               if(h)
+                                       h.value = tab;
+
+                               o2.tab.classList.remove('cbi-tab-disabled');
+                               o2.tab.classList.add('cbi-tab');
                                o2.container.style.display = 'block';
                        }
                }
        }
-       return false
+
+       return false;
 }
 
 function cbi_t_update() {
        var hl_tabs = [ ];
        var updated = false;
 
-       for( var sid in cbi_t )
-               for( var tid in cbi_t[sid] )
-               {
+       for (var sid in cbi_t)
+               for (var tid in cbi_t[sid]) {
                        var t = cbi_t[sid][tid].tab;
                        var c = cbi_t[sid][tid].container;
 
@@ -1065,7 +1049,7 @@ function cbi_t_update() {
                        }
                        else if (t.style.display == 'none') {
                                t.style.display = '';
-                               t.className += ' cbi-tab-highlighted';
+                               t.classList.add('cbi-tab-highlighted');
                                hl_tabs.push(t);
                        }
 
@@ -1075,8 +1059,8 @@ function cbi_t_update() {
 
        if (hl_tabs.length > 0)
                window.setTimeout(function() {
-                       for( var i = 0; i < hl_tabs.length; i++ )
-                               hl_tabs[i].className = hl_tabs[i].className.replace(/ cbi-tab-highlighted/g, '');
+                       for (var i = 0; i < hl_tabs.length; i++)
+                               hl_tabs[i].classList.remove('cbi-tab-highlighted');
                }, 750);
 
        return updated;
@@ -1086,16 +1070,14 @@ function cbi_t_update() {
 function cbi_validate_form(form, errmsg)
 {
        /* if triggered by a section removal or addition, don't validate */
-       if( form.cbi_state == 'add-section' || form.cbi_state == 'del-section' )
+       if (form.cbi_state == 'add-section' || form.cbi_state == 'del-section')
                return true;
 
-       if( form.cbi_validators )
-       {
-               for( var i = 0; i < form.cbi_validators.length; i++ )
-               {
+       if (form.cbi_validators) {
+               for (var i = 0; i < form.cbi_validators.length; i++) {
                        var validator = form.cbi_validators[i];
-                       if( !validator() && errmsg )
-                       {
+
+                       if (!validator() && errmsg) {
                                alert(errmsg);
                                return false;
                        }
@@ -1123,10 +1105,8 @@ function cbi_validate_compile(code)
 
        code += ',';
 
-       for (var i = 0; i < code.length; i++)
-       {
-               if (esc)
-               {
+       for (var i = 0; i < code.length; i++) {
+               if (esc) {
                        esc = false;
                        continue;
                }
@@ -1139,41 +1119,36 @@ function cbi_validate_compile(code)
 
                case 40:
                case 44:
-                       if (depth <= 0)
-                       {
-                               if (pos < i)
-                               {
+                       if (depth <= 0) {
+                               if (pos < i) {
                                        var label = code.substring(pos, i);
                                                label = label.replace(/\\(.)/g, '$1');
                                                label = label.replace(/^[ \t]+/g, '');
                                                label = label.replace(/[ \t]+$/g, '');
 
-                                       if (label && !isNaN(label))
-                                       {
+                                       if (label && !isNaN(label)) {
                                                stack.push(parseFloat(label));
                                        }
-                                       else if (label.match(/^(['"]).*\1$/))
-                                       {
+                                       else if (label.match(/^(['"]).*\1$/)) {
                                                stack.push(label.replace(/^(['"])(.*)\1$/, '$2'));
                                        }
-                                       else if (typeof cbi_validators[label] == 'function')
-                                       {
+                                       else if (typeof cbi_validators[label] == 'function') {
                                                stack.push(cbi_validators[label]);
                                                stack.push(null);
                                        }
-                                       else
-                                       {
+                                       else {
                                                throw "Syntax error, unhandled token '"+label+"'";
                                        }
                                }
+
                                pos = i+1;
                        }
+
                        depth += (code.charCodeAt(i) == 40);
                        break;
 
                case 41:
-                       if (--depth <= 0)
-                       {
+                       if (--depth <= 0) {
                                if (typeof stack[stack.length-2] != 'function')
                                        throw "Syntax error, argument list follows non-function";
 
@@ -1182,6 +1157,7 @@ function cbi_validate_compile(code)
 
                                pos = i+1;
                        }
+
                        break;
                }
        }
@@ -1194,23 +1170,20 @@ function cbi_validate_field(cbid, optional, type)
        var field = (typeof cbid == "string") ? document.getElementById(cbid) : cbid;
        var vstack; try { vstack = cbi_validate_compile(type); } catch(e) { };
 
-       if (field && vstack && typeof vstack[0] == "function")
-       {
+       if (field && vstack && typeof vstack[0] == "function") {
                var validator = function()
                {
                        // is not detached
-                       if( field.form )
-                       {
-                               field.className = field.className.replace(/ cbi-input-invalid/g, '');
+                       if (field.form) {
+                               field.classList.remove('cbi-input-invalid');
 
                                // validate value
                                var value = (field.options && field.options.selectedIndex > -1)
                                        ? field.options[field.options.selectedIndex].value : field.value;
 
-                               if (!(((value.length == 0) && optional) || vstack[0].apply(value, vstack[1])))
-                               {
+                               if (!(((value.length == 0) && optional) || vstack[0].apply(value, vstack[1]))) {
                                        // invalid
-                                       field.className += ' cbi-input-invalid';
+                                       field.classList.add('cbi-input-invalid');
                                        return false;
                                }
                        }
@@ -1218,7 +1191,7 @@ function cbi_validate_field(cbid, optional, type)
                        return true;
                };
 
-               if( ! field.form.cbi_validators )
+               if (!field.form.cbi_validators)
                        field.form.cbi_validators = [ ];
 
                field.form.cbi_validators.push(validator);
@@ -1226,8 +1199,7 @@ function cbi_validate_field(cbid, optional, type)
                cbi_bind(field, "blur",  validator);
                cbi_bind(field, "keyup", validator);
 
-               if (field.nodeName == 'SELECT')
-               {
+               if (matchesElem(field, 'select')) {
                        cbi_bind(field, "change", validator);
                        cbi_bind(field, "click",  validator);
                }
@@ -1291,7 +1263,8 @@ function cbi_row_swap(elem, up, store)
                input.value = ids.join(' ');
 
        window.scrollTo(0, tr.offsetTop);
-       window.setTimeout(function() { tr.classList.add('flash'); }, 1);
+       void tr.offsetWidth;
+       tr.classList.add('flash');
 
        return false;
 }
@@ -1300,20 +1273,16 @@ function cbi_tag_last(container)
 {
        var last;
 
-       for (var i = 0; i < container.childNodes.length; i++)
-       {
+       for (var i = 0; i < container.childNodes.length; i++) {
                var c = container.childNodes[i];
-               if (c.nodeType == 1 && c.nodeName.toLowerCase() == 'div')
-               {
-                       c.className = c.className.replace(/ cbi-value-last$/, '');
+               if (matchesElem(c, 'div')) {
+                       c.classList.remove('cbi-value-last');
                        last = c;
                }
        }
 
        if (last)
-       {
-               last.className += ' cbi-value-last';
-       }
+               last.classList.add('cbi-value-last');
 }
 
 function cbi_submit(elem, name, value, action)
@@ -1350,8 +1319,9 @@ String.prototype.format = function()
                if (typeof(s) !== 'string' && !(s instanceof String))
                        return '';
 
-               for( var i = 0; i < r.length; i += 2 )
+               for (var i = 0; i < r.length; i += 2)
                        s = s.replace(r[i], r[i+1]);
+
                return s;
        }
 
@@ -1360,22 +1330,18 @@ String.prototype.format = function()
        var re = /^(([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X|q|h|j|t|m))/;
        var a = b = [], numSubstitutions = 0, numMatches = 0;
 
-       while (a = re.exec(str))
-       {
+       while (a = re.exec(str)) {
                var m = a[1];
                var leftpart = a[2], pPad = a[3], pJustify = a[4], pMinLength = a[5];
                var pPrecision = a[6], pType = a[7];
 
                numMatches++;
 
-               if (pType == '%')
-               {
+               if (pType == '%') {
                        subst = '%';
                }
-               else
-               {
-                       if (numSubstitutions < arguments.length)
-                       {
+               else {
+                       if (numSubstitutions < arguments.length) {
                                var param = arguments[numSubstitutions++];
 
                                var pad = '';
@@ -1400,8 +1366,7 @@ String.prototype.format = function()
 
                                var subst = param;
 
-                               switch(pType)
-                               {
+                               switch(pType) {
                                        case 'b':
                                                subst = (+param || 0).toString(2);
                                                break;
@@ -1517,16 +1482,20 @@ String.prototype.nobr = function()
 String.format = function()
 {
        var a = [ ];
+
        for (var i = 1; i < arguments.length; i++)
                a.push(arguments[i]);
+
        return ''.format.apply(arguments[0], a);
 }
 
 String.nobr = function()
 {
        var a = [ ];
+
        for (var i = 1; i < arguments.length; i++)
                a.push(arguments[i]);
+
        return ''.nobr.apply(arguments[0], a);
 }
 
@@ -1569,12 +1538,16 @@ function toElem(s)
        return elem || null;
 }
 
+function matchesElem(node, selector)
+{
+       return ((node.matches && node.matches(selector)) ||
+               (node.msMatchesSelector && node.msMatchesSelector(selector)));
+}
+
 function findParent(node, selector)
 {
        while (node)
-               if (node.msMatchesSelector && node.msMatchesSelector(selector))
-                       return node;
-               else if (node.matches && node.matches(selector))
+               if (matchesElem(node, selector))
                        return node;
                else
                        node = node.parentNode;
@@ -1801,7 +1774,7 @@ CBIDropdown = {
                        div.appendChild(E('input', {
                                type: 'hidden',
                                name: s.hasAttribute('name') ? s.getAttribute('name') : (sb.getAttribute('name') || ''),
-                               value: s.hasAttribute('value') ? s.getAttribute('value') : s.innerText
+                               value: s.hasAttribute('data-value') ? s.getAttribute('data-value') : s.innerText
                        }));
                });
 
@@ -1813,7 +1786,7 @@ CBIDropdown = {
                        return;
 
                document.querySelectorAll('.focus').forEach(function(e) {
-                       if (e.nodeName.toLowerCase() !== 'input') {
+                       if (!matchesElem(e, 'input')) {
                                e.classList.remove('focus');
                                e.blur();
                        }
@@ -1840,7 +1813,7 @@ CBIDropdown = {
                        var new_item = null;
 
                        ul.childNodes.forEach(function(li) {
-                               if (li.getAttribute && li.getAttribute('value') === item)
+                               if (li.getAttribute && li.getAttribute('data-value') === item)
                                        new_item = li;
                        });
 
@@ -1851,7 +1824,7 @@ CBIDropdown = {
                                if (tpl)
                                        markup = (tpl.textContent || tpl.innerHTML || tpl.firstChild.data).replace(/^<!--|-->$/, '').trim();
                                else
-                                       markup = '<li value="{{value}}">{{value}}</li>';
+                                       markup = '<li data-value="{{value}}">{{value}}</li>';
 
                                new_item = E(markup.replace(/{{value}}/g, item));
 
@@ -1926,7 +1899,7 @@ function cbi_dropdown_init(sb) {
 
                ndisplay--;
 
-               if (this.optional && !ul.querySelector('li[value=""]')) {
+               if (this.optional && !ul.querySelector('li[data-value=""]')) {
                        var placeholder = E('li', { placeholder: '' }, this.placeholder);
                        ul.firstChild ? ul.insertBefore(placeholder, ul.firstChild) : ul.appendChild(placeholder);
                }
@@ -1952,7 +1925,7 @@ function cbi_dropdown_init(sb) {
 
        sb.addEventListener('click', function(ev) {
                if (!this.hasAttribute('open')) {
-                       if (ev.target.nodeName.toLowerCase() !== 'input')
+                       if (!matchesElem(ev.target, 'input'))
                                sbox.openDropdown(this);
                }
                else {
@@ -1966,7 +1939,7 @@ function cbi_dropdown_init(sb) {
        });
 
        sb.addEventListener('keydown', function(ev) {
-               if (ev.target.nodeName.toLowerCase() === 'input')
+               if (matchesElem(ev.target, 'input'))
                        return;
 
                if (!this.hasAttribute('open')) {
@@ -2062,8 +2035,12 @@ function cbi_dropdown_init(sb) {
                create.addEventListener('keydown', function(ev) {
                        switch (ev.keyCode) {
                        case 13:
-                               sbox.createItems(sb, this.value);
                                ev.preventDefault();
+
+                               if (this.classList.contains('cbi-input-invalid'))
+                                       return;
+
+                               sbox.createItems(sb, this.value);
                                this.value = '';
                                this.blur();
                                break;
@@ -2094,7 +2071,7 @@ function cbi_dropdown_init(sb) {
 cbi_dropdown_init.prototype = CBIDropdown;
 
 function cbi_update_table(table, data, placeholder) {
-       target = isElem(table) ? table : document.querySelector(table);
+       var target = isElem(table) ? table : document.querySelector(table);
 
        if (!isElem(target))
                return;
index ddf534b3e1e8f140b7a0f37f1eadbb29d93a586f..f26256953a4a1433916b5149ebb33d4d829a0b19 100644 (file)
@@ -22,7 +22,7 @@ Check whether a dispatch node shall be visible
 ]]
 
 ---[[
-Return a sorted table of visible childs within a given node
+Return a sorted table of visible children within a given node
 
 @class function
 @name node_childs
index f4ede4b8a5771ea3b7eacb301993f09d1ddee912..20b55f2854ff3304de29748131472a1419c66f4c 100644 (file)
@@ -335,13 +335,13 @@ end
 -- Content-Type. Stores all extracted data associated with its parameter name
 -- in the params table within the given message object. Multiple parameter
 -- values are stored as tables, ordinary ones as strings.
--- If an optional file callback function is given then it is feeded with the
+-- If an optional file callback function is given then it is fed with the
 -- file contents chunk by chunk and only the extracted file name is stored
 -- within the params table. The callback function will be called subsequently
 -- with three arguments:
 --  o Table containing decoded (name, file) and raw (headers) mime header data
 --  o String value containing a chunk of the file data
---  o Boolean which indicates wheather the current chunk is the last one (eof)
+--  o Boolean which indicates whether the current chunk is the last one (eof)
 function mimedecode_message_body(src, msg, file_cb)
        local parser, header, field
        local len, maxlen = 0, tonumber(msg.env.CONTENT_LENGTH or nil)
index f8121230b60642c7eae9148f964d378f59acb927..8f6f380d8bda091324f242b9c137cd6ff4f6ce9d 100644 (file)
@@ -204,13 +204,13 @@ Stores all extracted data associated with its parameter name
 in the params table within the given message object. Multiple parameter
 values are stored as tables, ordinary ones as strings.
 
-If an optional file callback function is given then it is feeded with the
+If an optional file callback function is given then it is fed with the
 file contents chunk by chunk and only the extracted file name is stored
 within the params table. The callback function will be called subsequently
 with three arguments:
  o Table containing decoded (name, file) and raw (headers) mime header data
  o String value containing a chunk of the file data
- o Boolean which indicates wheather the current chunk is the last one (eof)
+ o Boolean which indicates whether the current chunk is the last one (eof)
 
 @class                 function
 @name                  mimedecode_message_body
index 2119a210bb9884cf4e312a1ec181732c17dac5c0..a50e28a871c1351aecb5c7407571954a7305eb94 100644 (file)
@@ -15,7 +15,7 @@ local type, tostring, tonumber, unpack = type, tostring, tonumber, unpack
 -- cursor factory, modify data (via Cursor.add, Cursor.delete, etc.),
 -- save the changes to the staging area via Cursor.save and finally
 -- Cursor.commit the data to the actual config files.
--- LuCI then needs to Cursor.apply the changes so deamons etc. are
+-- LuCI then needs to Cursor.apply the changes so daemons etc. are
 -- reloaded.
 module "luci.model.uci"
 
index d798b00338a5585f6afd36dee81f67d54c084773..0189d49aa1f5f2839533cfd018d459ae11b90ab2 100644 (file)
@@ -5,7 +5,7 @@ The typical workflow for UCI is:  Get a cursor instance from the
 cursor factory, modify data (via Cursor.add, Cursor.delete, etc.),
 save the changes to the staging area via Cursor.save and finally
 Cursor.commit the data to the actual config files.
-LuCI then needs to Cursor.apply the changes so deamons etc. are
+LuCI then needs to Cursor.apply the changes so daemons etc. are
 reloaded.
 @cstyle        instance
 ]]
@@ -172,7 +172,7 @@ has the same effect as deleting the option.
 ---[[
 Create a sub-state of this cursor.
 
-The sub-state is tied to the parent curser, means it the parent unloads or
+The sub-state is tied to the parent cursor, means it the parent unloads or
 loads configs, the sub state will do so as well.
 
 @class                         function
@@ -339,7 +339,7 @@ Set the configuration directory.
 ]]
 
 ---[[
-Set the directory for uncommited changes.
+Set the directory for uncommitted changes.
 
 @class                         function
 @name                          Cursor.set_savedir
index 1c1fa92602f38d5e62f1bc181dceaea0b6f7e7f6..3c7f69c6e9ecf40af11ddef78e6c8b59faed025a 100644 (file)
@@ -18,7 +18,7 @@ Execute a given shell command and capture its standard output
 @class         function
 @name          exec
 @param command Command to call
-@return                        String containg the return the output of the command
+@return                        String containing the return the output of the command
 ]]
 
 ---[[
@@ -38,7 +38,7 @@ exists.
 @class         function
 @name          getenv
 @param var     Name of the environment variable to retrieve (optional)
-@return                String containg the value of the specified variable
+@return                String containing the value of the specified variable
 @return                Table containing all variables if no variable name is given
 ]]
 
@@ -279,7 +279,7 @@ LuCI system utilities / user related functions.
 ]]
 
 ---[[
-Retrieve user informations for given uid.
+Retrieve user information for given uid.
 
 @class         function
 @name          getuser
@@ -305,7 +305,7 @@ Test whether given string matches the password of a given system user.
 @name user.checkpasswd
 @param username        String containing the Unix user name
 @param pass            String containing the password to compare
-@return                        Boolean indicating wheather the passwords are equal
+@return                        Boolean indicating whether the passwords are equal
 ]]
 
 ---[[
diff --git a/modules/luci-base/luasrc/sys/iptparser.lua b/modules/luci-base/luasrc/sys/iptparser.lua
deleted file mode 100644 (file)
index 7ff665e..0000000
+++ /dev/null
@@ -1,374 +0,0 @@
---[[
-
-Iptables parser and query library
-(c) 2008-2009 Jo-Philipp Wich <jow@openwrt.org>
-(c) 2008-2009 Steven Barth <steven@midlink.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
-
-$Id$
-
-]]--
-
-local luci  = {}
-luci.util   = require "luci.util"
-luci.sys    = require "luci.sys"
-luci.ip     = require "luci.ip"
-
-local pcall = pcall
-local io = require "io"
-local tonumber, ipairs, table = tonumber, ipairs, table
-
-module("luci.sys.iptparser")
-
-IptParser = luci.util.class()
-
-function IptParser.__init__( self, family )
-       self._family = (tonumber(family) == 6) and 6 or 4
-       self._rules  = { }
-       self._chains = { }
-       self._tables = { }
-
-       local t = self._tables
-       local s = self:_supported_tables(self._family)
-
-       if s.filter then t[#t+1] = "filter" end
-       if s.nat    then t[#t+1] = "nat"    end
-       if s.mangle then t[#t+1] = "mangle" end
-       if s.raw    then t[#t+1] = "raw"    end
-
-       if self._family == 4 then
-               self._nulladdr = "0.0.0.0/0"
-               self._command  = "iptables -t %s --line-numbers -nxvL"
-       else
-               self._nulladdr = "::/0"
-               self._command  = "ip6tables -t %s --line-numbers -nxvL"
-       end
-
-       self:_parse_rules()
-end
-
-function IptParser._supported_tables( self, family )
-       local tables = { }
-       local ok, lines = pcall(io.lines,
-               (family == 6) and "/proc/net/ip6_tables_names"
-                              or "/proc/net/ip_tables_names")
-
-       if ok and lines then
-               local line
-               for line in lines do
-                       tables[line] = true
-               end
-       end
-
-       return tables
-end
-
--- search criteria as only argument. If args is nil or an empty table then all
--- rules will be returned.
---
--- The following keys in the args table are recognized:
--- <ul>
---  <li> table          - Match rules that are located within the given table
---  <li> chain          - Match rules that are located within the given chain
---  <li> target                 - Match rules with the given target
---  <li> protocol       - Match rules that match the given protocol, rules with
---                                             protocol "all" are always matched
---  <li> source                 - Match rules with the given source, rules with source
---                                             "0.0.0.0/0" (::/0) are always matched
---  <li> destination - Match rules with the given destination, rules with
---                                             destination "0.0.0.0/0" (::/0) are always matched
---  <li> inputif        - Match rules with the given input interface, rules
---                                             with input      interface "*" (=all) are always matched
---  <li> outputif       - Match rules with the given output interface, rules
---                                             with output     interface "*" (=all) are always matched
---  <li> flags          - Match rules that match the given flags, current
---                                             supported values are "-f" (--fragment)
---                                             and "!f" (! --fragment)
---  <li> options        - Match rules containing all given options
--- </ul>
--- The return value is a list of tables representing the matched rules.
--- Each rule table contains the following fields:
--- <ul>
---  <li> index          - The index number of the rule
---  <li> table          - The table where the rule is located, can be one
---                                             of "filter", "nat" or "mangle"
---  <li> chain          - The chain where the rule is located, e.g. "INPUT"
---                                             or "postrouting_wan"
---  <li> target                 - The rule target, e.g. "REJECT" or "DROP"
---  <li> protocol              The matching protocols, e.g. "all" or "tcp"
---  <li> flags          - Special rule options ("--", "-f" or "!f")
---  <li> inputif        - Input interface of the rule, e.g. "eth0.0"
---                                             or "*" for all interfaces
---  <li> outputif       - Output interface of the rule,e.g. "eth0.0"
---                                             or "*" for all interfaces
---  <li> source                 - The source ip range, e.g. "0.0.0.0/0" (::/0)
---  <li> destination - The destination ip range, e.g. "0.0.0.0/0" (::/0)
---  <li> options        - A list of specific options of the rule,
---                                             e.g. { "reject-with", "tcp-reset" }
---  <li> packets        - The number of packets matched by the rule
---  <li> bytes          - The number of total bytes matched by the rule
--- </ul>
--- Example:
--- <pre>
--- ip = luci.sys.iptparser.IptParser()
--- result = ip.find( {
---     target="REJECT",
---     protocol="tcp",
---     options={ "reject-with", "tcp-reset" }
--- } )
--- </pre>
--- This will match all rules with target "-j REJECT",
--- protocol "-p tcp" (or "-p all")
--- and the option "--reject-with tcp-reset".
-function IptParser.find( self, args )
-
-       local args = args or { }
-       local rv   = { }
-
-       args.source      = args.source      and self:_parse_addr(args.source)
-       args.destination = args.destination and self:_parse_addr(args.destination)
-
-       for i, rule in ipairs(self._rules) do
-               local match = true
-
-               -- match table
-               if not ( not args.table or args.table:lower() == rule.table ) then
-                       match = false
-               end
-
-               -- match chain
-               if not ( match == true and (
-                       not args.chain or args.chain == rule.chain
-               ) ) then
-                       match = false
-               end
-
-               -- match target
-               if not ( match == true and (
-                       not args.target or args.target == rule.target
-               ) ) then
-                       match = false
-               end
-
-               -- match protocol
-               if not ( match == true and (
-                       not args.protocol or rule.protocol == "all" or
-                       args.protocol:lower() == rule.protocol
-               ) ) then
-                       match = false
-               end
-
-               -- match source
-               if not ( match == true and (
-                       not args.source or rule.source == self._nulladdr or
-                       self:_parse_addr(rule.source):contains(args.source)
-               ) ) then
-                       match = false
-               end
-
-               -- match destination
-               if not ( match == true and (
-                       not args.destination or rule.destination == self._nulladdr or
-                       self:_parse_addr(rule.destination):contains(args.destination)
-               ) ) then
-                       match = false
-               end
-
-               -- match input interface
-               if not ( match == true and (
-                       not args.inputif or rule.inputif == "*" or
-                       args.inputif == rule.inputif
-               ) ) then
-                       match = false
-               end
-
-               -- match output interface
-               if not ( match == true and (
-                       not args.outputif or rule.outputif == "*" or
-                       args.outputif == rule.outputif
-               ) ) then
-                       match = false
-               end
-
-               -- match flags (the "opt" column)
-               if not ( match == true and (
-                       not args.flags or rule.flags == args.flags
-               ) ) then
-                       match = false
-               end
-
-               -- match specific options
-               if not ( match == true and (
-                       not args.options or
-                       self:_match_options( rule.options, args.options )
-               ) ) then
-                       match = false
-               end
-
-               -- insert match
-               if match == true then
-                       rv[#rv+1] = rule
-               end
-       end
-
-       return rv
-end
-
-
--- through external commands.
-function IptParser.resync( self )
-       self._rules = { }
-       self._chain = nil
-       self:_parse_rules()
-end
-
-
-function IptParser.tables( self )
-       return self._tables
-end
-
-
-function IptParser.chains( self, table )
-       local lookup = { }
-       local chains = { }
-       for _, r in ipairs(self:find({table=table})) do
-               if not lookup[r.chain] then
-                       lookup[r.chain]   = true
-                       chains[#chains+1] = r.chain
-               end
-       end
-       return chains
-end
-
-
---                             and "rules". The "rules" field is a table of rule tables.
-function IptParser.chain( self, table, chain )
-       return self._chains[table:lower()] and self._chains[table:lower()][chain]
-end
-
-
-function IptParser.is_custom_target( self, target )
-       for _, r in ipairs(self._rules) do
-               if r.chain == target then
-                       return true
-               end
-       end
-       return false
-end
-
-
--- [internal] Parse address according to family.
-function IptParser._parse_addr( self, addr )
-       if self._family == 4 then
-               return luci.ip.IPv4(addr)
-       else
-               return luci.ip.IPv6(addr)
-       end
-end
-
--- [internal] Parse iptables output from all tables.
-function IptParser._parse_rules( self )
-
-       for i, tbl in ipairs(self._tables) do
-
-               self._chains[tbl] = { }
-
-               for i, rule in ipairs(luci.util.execl(self._command % tbl)) do
-
-                       if rule:find( "^Chain " ) == 1 then
-
-                               local crefs
-                               local cname, cpol, cpkt, cbytes = rule:match(
-                                       "^Chain ([^%s]*) %(policy (%w+) " ..
-                                       "(%d+) packets, (%d+) bytes%)"
-                               )
-
-                               if not cname then
-                                       cname, crefs = rule:match(
-                                               "^Chain ([^%s]*) %((%d+) references%)"
-                                       )
-                               end
-
-                               self._chain = cname
-                               self._chains[tbl][cname] = {
-                                       policy     = cpol,
-                                       packets    = tonumber(cpkt or 0),
-                                       bytes      = tonumber(cbytes or 0),
-                                       references = tonumber(crefs or 0),
-                                       rules      = { }
-                               }
-
-                       else
-                               if rule:find("%d") == 1 then
-
-                                       local rule_parts   = luci.util.split( rule, "%s+", nil, true )
-                                       local rule_details = { }
-
-                                       -- cope with rules that have no target assigned
-                                       if rule:match("^%d+%s+%d+%s+%d+%s%s") then
-                                               table.insert(rule_parts, 4, nil)
-                                       end
-
-                                       -- ip6tables opt column is usually zero-width
-                                       if self._family == 6 then
-                                               table.insert(rule_parts, 6, "--")
-                                       end
-
-                                       rule_details["table"]       = tbl
-                                       rule_details["chain"]       = self._chain
-                                       rule_details["index"]       = tonumber(rule_parts[1])
-                                       rule_details["packets"]     = tonumber(rule_parts[2])
-                                       rule_details["bytes"]       = tonumber(rule_parts[3])
-                                       rule_details["target"]      = rule_parts[4]
-                                       rule_details["protocol"]    = rule_parts[5]
-                                       rule_details["flags"]       = rule_parts[6]
-                                       rule_details["inputif"]     = rule_parts[7]
-                                       rule_details["outputif"]    = rule_parts[8]
-                                       rule_details["source"]      = rule_parts[9]
-                                       rule_details["destination"] = rule_parts[10]
-                                       rule_details["options"]     = { }
-
-                                       for i = 11, #rule_parts  do
-                                               if #rule_parts[i] > 0 then
-                                                       rule_details["options"][i-10] = rule_parts[i]
-                                               end
-                                       end
-
-                                       self._rules[#self._rules+1] = rule_details
-
-                                       self._chains[tbl][self._chain].rules[
-                                               #self._chains[tbl][self._chain].rules + 1
-                                       ] = rule_details
-                               end
-                       end
-               end
-       end
-
-       self._chain = nil
-end
-
-
--- [internal] Return true if optlist1 contains all elements of optlist 2.
---            Return false in all other cases.
-function IptParser._match_options( self, o1, o2 )
-
-       -- construct a hashtable of first options list to speed up lookups
-       local oh = { }
-       for i, opt in ipairs( o1 ) do oh[opt] = true end
-
-       -- iterate over second options list
-       -- each string in o2 must be also present in o1
-       -- if o2 contains a string which is not found in o1 then return false
-       for i, opt in ipairs( o2 ) do
-               if not oh[opt] then
-                       return false
-               end
-       end
-
-       return true
-end
diff --git a/modules/luci-base/luasrc/sys/iptparser.luadoc b/modules/luci-base/luasrc/sys/iptparser.luadoc
deleted file mode 100644 (file)
index 071e7d5..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
----[[
-LuCI iptables parser and query library
-
-@cstyle        instance
-]]
-module "luci.sys.iptparser"
-
----[[
-Create a new iptables parser object.
-
-@class function
-@name  IptParser
-@param family  Number specifying the address family. 4 for IPv4, 6 for IPv6
-@return        IptParser instance
-]]
-
----[[
-Find all firewall rules that match the given criteria. Expects a table with
-
-search criteria as only argument. If args is nil or an empty table then all
-rules will be returned.
-]]
-
----[[
-Rebuild the internal lookup table, for example when rules have changed
-
-through external commands.
-@class function
-@name IptParser.resync
-@return        nothing
-]]
-
----[[
-Find the names of all tables.
-
-@class function
-@name IptParser.tables
-@return                Table of table names.
-]]
-
----[[
-Find the names of all chains within the given table name.
-
-@class function
-@name IptParser.chains
-@param table   String containing the table name
-@return                Table of chain names in the order they occur.
-]]
-
----[[
-Return the given firewall chain within the given table name.
-
-@class function
-@name IptParser.chain
-@param table   String containing the table name
-@param chain   String containing the chain name
-@return                Table containing the fields "policy", "packets", "bytes"
---                             and "rules". The "rules" field is a table of rule tables.
-]]
-
----[[
-Test whether the given target points to a custom chain.
-
-@class function
-@name IptParser.is_custom_target
-@param target  String containing the target action
-@return                        Boolean indicating whether target is a custom chain.
-]]
-
index 47cb901a5b46f7b0149233c5876e932a89184e06..c6f4477dff3bc0cf60178900ae65b33d2f71f10a 100644 (file)
@@ -16,14 +16,14 @@ TZ = {
        { 'Africa/Brazzaville', 'WAT-1' },
        { 'Africa/Bujumbura', 'CAT-2' },
        { 'Africa/Cairo', 'EET-2' },
-       { 'Africa/Casablanca', 'WET0WEST,M3.5.0,M10.5.0/3' },
+       { 'Africa/Casablanca', '<+01>-1' },
        { 'Africa/Ceuta', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Africa/Conakry', 'GMT0' },
        { 'Africa/Dakar', 'GMT0' },
        { 'Africa/Dar es Salaam', 'EAT-3' },
        { 'Africa/Djibouti', 'EAT-3' },
        { 'Africa/Douala', 'WAT-1' },
-       { 'Africa/El Aaiun', 'WET0WEST,M3.5.0,M10.5.0/3' },
+       { 'Africa/El Aaiun', '<+01>-1' },
        { 'Africa/Freetown', 'GMT0' },
        { 'Africa/Gaborone', 'CAT-2' },
        { 'Africa/Harare', 'CAT-2' },
@@ -179,7 +179,7 @@ TZ = {
        { 'America/Resolute', 'CST6CDT,M3.2.0,M11.1.0' },
        { 'America/Rio Branco', '<-05>5' },
        { 'America/Santarem', '<-03>3' },
-       { 'America/Santiago', '<-04>4<-03>,M8.2.6/24,M5.2.6/24' },
+       { 'America/Santiago', '<-04>4<-03>,M9.1.6/24,M4.1.6/24' },
        { 'America/Santo Domingo', 'AST4' },
        { 'America/Sao Paulo', '<-03>3<-02>,M11.1.0/0,M2.3.0/0' },
        { 'America/Scoresbysund', '<-01>1<+00>,M3.5.0/0,M10.5.0/1' },
@@ -261,7 +261,7 @@ TZ = {
        { 'Asia/Macau', 'CST-8' },
        { 'Asia/Magadan', '<+11>-11' },
        { 'Asia/Makassar', 'WITA-8' },
-       { 'Asia/Manila', '<+08>-8' },
+       { 'Asia/Manila', 'PST-8' },
        { 'Asia/Muscat', '<+04>-4' },
        { 'Asia/Nicosia', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
        { 'Asia/Novokuznetsk', '<+07>-7' },
@@ -270,7 +270,7 @@ TZ = {
        { 'Asia/Oral', '<+05>-5' },
        { 'Asia/Phnom Penh', '<+07>-7' },
        { 'Asia/Pontianak', 'WIB-7' },
-       { 'Asia/Pyongyang', 'KST-8:30' },
+       { 'Asia/Pyongyang', 'KST-9' },
        { 'Asia/Qatar', '<+03>-3' },
        { 'Asia/Qyzylorda', '<+06>-6' },
        { 'Asia/Riyadh', '<+03>-3' },
@@ -358,7 +358,7 @@ TZ = {
        { 'Europe/Busingen', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Chisinau', 'EET-2EEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Copenhagen', 'CET-1CEST,M3.5.0,M10.5.0/3' },
-       { 'Europe/Dublin', 'GMT0IST,M3.5.0/1,M10.5.0' },
+       { 'Europe/Dublin', 'IST-1GMT0,M10.5.0,M3.5.0/1' },
        { 'Europe/Gibraltar', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Guernsey', 'GMT0BST,M3.5.0/1,M10.5.0' },
        { 'Europe/Helsinki', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
@@ -400,7 +400,7 @@ TZ = {
        { 'Europe/Vatican', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Vienna', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Vilnius', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
-       { 'Europe/Volgograd', '<+03>-3' },
+       { 'Europe/Volgograd', '<+04>-4' },
        { 'Europe/Warsaw', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Zagreb', 'CET-1CEST,M3.5.0,M10.5.0/3' },
        { 'Europe/Zaporozhye', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
@@ -421,11 +421,11 @@ TZ = {
        { '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/Easter', '<-06>6<-05>,M9.1.6/22,M4.1.6/22' },
        { 'Pacific/Efate', '<+11>-11' },
        { 'Pacific/Enderbury', '<+13>-13' },
        { 'Pacific/Fakaofo', '<+13>-13' },
-       { 'Pacific/Fiji', '<+12>-12<+13>,M11.1.0,M1.2.1/147' },
+       { 'Pacific/Fiji', '<+12>-12<+13>,M11.1.0,M1.2.2/123' },
        { 'Pacific/Funafuti', '<+12>-12' },
        { 'Pacific/Galapagos', '<-06>6' },
        { 'Pacific/Gambier', '<-09>9' },
index cf5afeb9d8ee59686e5d81c6dc00369d62aca1dc..e63e2a6958c0bcf05cac2409648d79aec3168829 100644 (file)
@@ -9,7 +9,6 @@ OFFSET = {
        wat   =   3600, -- WAT
        cat   =   7200, -- CAT
        eet   =   7200, -- EET
-       wet   =      0, -- WET
        sast  =   7200, -- SAST
        hst   = -36000, -- HST
        hdt   = -32400, -- HDT
@@ -34,8 +33,9 @@ OFFSET = {
        idt   =  10800, -- IDT
        pkt   =  18000, -- PKT
        wita  =  28800, -- WITA
-       kst   =  30600, -- KST
+       kst   =  32400, -- KST
        jst   =  32400, -- JST
+       wet   =      0, -- WET
        acst  =  34200, -- ACST
        acdt  =  37800, -- ACDT
        aest  =  36000, -- AEST
index 588028c2ee3c9f1af4981b90046212b8381b2d36..ed46f50753ba34f03cea7ab9263d90113d0aa2d5 100644 (file)
@@ -95,6 +95,6 @@ function Template.render(self, scope)
        local stat, err = util.copcall(self.template)
        if not stat then
                error("Failed to execute template '" .. self.name .. "'.\n" ..
-                     "A runtime error occured: " .. tostring(err or "(nil)"))
+                     "A runtime error occurred: " .. tostring(err or "(nil)"))
        end
 end
index f16b3afb2e236ef3489cb58b14ab9e1cf893c2d7..1a329f3f20eaec2dda2e097dd11af5a4cef0aebc 100644 (file)
@@ -262,7 +262,7 @@ end
 
 -- one token per invocation, the tokens are separated by whitespace. If the
 -- input value is a table, it is transformed into a string first. A nil value
--- will result in a valid interator which aborts with the first invocation.
+-- will result in a valid iterator which aborts with the first invocation.
 function imatch(v)
        if type(v) == "table" then
                local k = nil
index c4f28d039a635297e1b58704a025deeca76e3d72..4ec68dd1efc0ed356876d584e8dee1e5e0a67b77 100644 (file)
@@ -158,7 +158,7 @@ Return a matching iterator for the given value.
 
 The iterator will return one token per invocation, the tokens are separated by
 whitespace. If the input value is a table, it is transformed into a string first.
-A nil value will result in a valid interator which aborts with the first invocation.
+A nil value will result in a valid iterator which aborts with the first invocation.
 
 @class                         function
 @name                          imatch
@@ -289,7 +289,7 @@ will be stripped before it is returned.
 ]]
 
 ---[[
-Strips unnescessary lua bytecode from given string.
+Strips unnecessary lua bytecode from given string.
 
 Information like line numbers and debugging numbers will be discarded.
 Original version by Peter Cawley (http://lua-users.org/lists/lua-l/2008-02/msg01158.html)
index ce279edd40487b26899b2bc81754ede64c56e304..0df16e88c85e50869b7a91e6d61c130cd052e110 100644 (file)
                                if (r.status === 204) {
                                        uci_status_message('warning',
                                                '<h4><%:Configuration has been rolled back!%></h4>' +
-                                               '<p><%:The device could not be reached within %d seconds after applying the pending changes, which caused the configuration to be rolled back for safety reasons. If you believe that the configuration changes are correct nonetheless, perform an unchecked configuration apply. Alternatively, you can dismiss this warning and edit changes before attempting to apply again, or revert all pending changes to keep the currently working configuration state.%></p>'.format(uci_apply_rollback) +
+                                               '<p><%:The device could not be reached within %d seconds after applying the pending changes, which caused the configuration to be rolled back for safety reasons. If you believe that the configuration changes are correct nonetheless, proceed by applying anyway. Alternatively, you can dismiss this warning and edit changes before attempting to apply again, or revert all pending changes to keep the currently working configuration state.%></p>'.format(uci_apply_rollback) +
                                                '<div class="right">' +
                                                        '<input type="button" class="btn" onclick="uci_status_message(false)" value="<%:Dismiss%>" /> ' +
                                                        '<input type="button" class="btn cbi-button-action important" onclick="uci_revert()" value="<%:Revert changes%>" /> ' +
-                                                       '<input type="button" class="btn cbi-button-negative important" onclick="uci_apply(false)" value="<%:Apply unchecked%>" />' +
+                                                       '<input type="button" class="btn cbi-button-negative important" onclick="uci_apply(false)" value="<%:Apply anyway%>" />' +
                                                '</div>');
 
                                        return;
index cf8c03d22cacdc27aa583b345e975464765d1421..6f4b89905ba69c4f5876340ff863eee7bc4516e3 100644 (file)
@@ -30,7 +30,7 @@
                        <li<%=
                                attr("data-index", i) ..
                                attr("data-depends", self:deplist2json(section, self.deplist[i])) ..
-                               attr("value", key) ..
+                               attr("data-value", key) ..
                                ifattr(selected[key], "selected", "selected")
                        %>>
                                <%=pcdata(self.vallist[i])%>
index b38e4b13dbd229a5267e44904260b3860fe87efe..dc251dbd94d11eda56bf290ba07b3baf831b319a 100644 (file)
@@ -63,7 +63,7 @@
                if empty then
        %>
                <label class="zonebadge zonebadge-empty">
-                       <strong><%=zone:forward():upper()%></strong>
+                       <strong><%=def:forward():upper()%></strong>
                </label>
        <% end %>
        </div>
index 3a108020b6062907cbcaddc2f10ae21ef80e5bde..7ecec10a8ff11a15691a6b398f29c05459090a47 100644 (file)
@@ -30,7 +30,7 @@
        ifattr(self.rmempty or self.optional, "optional", "optional")
 %>>
        <script type="item-template"><!--
-               <li value="{{value}}">
+               <li data-value="{{value}}">
                        <span class="zonebadge" style="background:repeating-linear-gradient(45deg,rgba(204,204,204,0.5),rgba(204,204,204,0.5) 5px,rgba(255,255,255,0.5) 5px,rgba(255,255,255,0.5) 10px)">
                                <strong>{{value}}:</strong><em>(<%:create%>)</em>
                        </span>
@@ -38,7 +38,7 @@
        --></script>
        <ul>
                <% if self.allowlocal then %>
-               <li value=""<%=ifattr(checked[""], "selected", "selected")%>>
+               <li data-value=""<%=ifattr(checked[""], "selected", "selected")%>>
                        <span style="background-color:<%=fwm.zone.get_color()%>" class="zonebadge">
                                <strong><%:Device%></strong>
                                <% if self.allowany and self.allowlocal then -%>
                        </span>
                </li>
                <% elseif self.widget ~= "checkbox" and (self.rmempty or self.optional) then %>
-               <li value=""<%=ifattr(checked[""], "selected", "selected")%>>
+               <li data-value=""<%=ifattr(checked[""], "selected", "selected")%>>
                        <span class="zonebadge">
                                <em><%:unspecified%></em>
                        </span>
                </li>
                <% end %>
                <% if self.allowany then %>
-               <li value="*"<%=ifattr(checked["*"], "selected", "selected")%>>
+               <li data-value="*"<%=ifattr(checked["*"], "selected", "selected")%>>
                        <span style="background-color:<%=fwm.zone.get_color()%>" class="zonebadge">
                                <strong><%:Any zone%></strong>
                                <% if self.allowany and self.allowlocal then %>(<%:forward%>)<% end %>
@@ -67,7 +67,7 @@
                                if zone:name() ~= self.exclude then
                                        selected = selected or (value == zone:name())
                %>
-               <li<%=attr("value", zone:name()) .. ifattr(checked[zone:name()], "selected", "selected")%>>
+               <li<%=attr("data-value", zone:name()) .. ifattr(checked[zone:name()], "selected", "selected")%>>
                        <span style="background-color:<%=zone:get_color()%>" class="zonebadge">
                                <strong><%=zone:name()%>:</strong>
                                <%-
                <% end end %>
 
                <% if self.widget ~= "checkbox" and not self.nocreate then %>
-               <li value="-">
+               <li data-value="-">
                        <span class="zonebadge">
                                <em><%:create%>:</em>
                                <input type="password" style="display:none" />
-                               <input class="create-item-input" type="text" />
+                               <input class="create-item-input" type="text" data-type="and(uciname,maxlength(11))" data-optional="true" />
                        </span>
                </li>
                <% end %>
index a97e9ef6d0ba2cad82a00ff8afb938bcacd7706e..55a7e3168742da205a21ba43158204fb6fda018a 100644 (file)
@@ -47,7 +47,7 @@
        ifattr(self.widget == "checkbox", "optional", "optional")
 %>>
        <script type="item-template"><!--
-               <li value="{{value}}">
+               <li data-value="{{value}}">
                        <img title="<%:Custom Interface%>: &quot;{{value}}&quot;" src="<%=resource%>/icons/ethernet_disabled.png" />
                        <span class="hide-open">{{value}}</span>
                        <span class="hide-close"><%:Custom Interface%>: "{{value}}"</span>
@@ -61,7 +61,7 @@
                           iface:name() ~= self.exclude
                        then %>
                <li<%=
-                       attr("value", iface:name()) ..
+                       attr("data-value", iface:name()) ..
                        ifattr(checked[iface:name()], "selected", "selected")
                %>>
                        <img<%=attr("title", iface:get_i18n())%> src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" />
@@ -78,7 +78,7 @@
                </li>
                <% end end %>
                <% if not self.nocreate then %>
-               <li value="">
+               <li data-value="">
                        <img title="<%:Custom Interface%>" src="<%=resource%>/icons/ethernet_disabled.png" />
                        <span><%:Custom Interface%>:</span>
                        <input type="password" style="display:none" />
index ba6ebb843456f5e40dffad2139f806cca09feb8f..d3efcc062f12e92f8b05b0570f12f90a920c0381 100644 (file)
@@ -26,7 +26,7 @@
        ifattr(self.widget == "checkbox", "optional", "optional")
 %>>
        <script type="item-template"><!--
-               <li value="{{value}}">
+               <li data-value="{{value}}">
                        <span class="ifacebadge" style="background:repeating-linear-gradient(45deg,rgba(204,204,204,0.5),rgba(204,204,204,0.5) 5px,rgba(255,255,255,0.5) 5px,rgba(255,255,255,0.5) 10px)">
                                {{value}}: <em>(<%:create%>)</em>
                        </span>
@@ -34,7 +34,7 @@
        --></script>
        <ul>
                <% if self.widget ~= "checkbox" then %>
-               <li value=""<%= ifattr(not value, "selected", "selected") %>>
+               <li data-value=""<%= ifattr(not value, "selected", "selected") %>>
                        <em><%:unspecified%></em>
                </li>
                <% end %>
@@ -44,7 +44,7 @@
                              (net:name() ~= self.exclude) and
                              (not self.novirtual or not net:is_virtual())
                           then %>
-               <li<%= attr("value", net:name()) .. ifattr(checked[net:name()], "selected", "selected") %>>
+               <li<%= attr("data-value", net:name()) .. ifattr(checked[net:name()], "selected", "selected") %>>
                        <span class="ifacebadge"><%=net:name()%>:
                                <%
                                        local empty = true
@@ -63,7 +63,7 @@
                <% end end %>
 
                <% if not self.nocreate then %>
-               <li value="-"<%= ifattr(not value and self.widget ~= "checkbox", "selected", "selected") %>>
+               <li data-value="-"<%= ifattr(not value and self.widget ~= "checkbox", "selected", "selected") %>>
                        <em>
                                <%- if self.widget == "checkbox" then -%>
                                        <%:create:%>
index a7c06d5e363e68274f00f3bbed8eb4e7cc2db8d3..146d9fe05f2af05ec44a56d359609540a929c511 100644 (file)
@@ -409,10 +409,10 @@ msgstr "Configuració d'antena"
 msgid "Any zone"
 msgstr "Qualsevol zona"
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -696,6 +696,9 @@ msgstr "Aplegant dades..."
 msgid "Command"
 msgstr "Ordre"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "Configuració comuna"
 
@@ -940,6 +943,9 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1458,6 +1464,9 @@ msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr ""
 "No mostris l'<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr "Nom de màquina"
 
@@ -2021,6 +2030,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -2195,9 +2207,6 @@ msgstr "Cap servidor DHCP configurat en aquesta interfície"
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr "No hi ha cadenes en aquesta taula"
-
 msgid "No files found"
 msgstr "Cap fitxer trobat"
 
@@ -2222,7 +2231,7 @@ msgstr "No hi ha llistes de paquets disponibles"
 msgid "No password set!"
 msgstr "No hi ha cap contrasenya establerta!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "No hi ha regles en aquesta cadena"
 
 msgid "No scan results available yet..."
@@ -2273,6 +2282,9 @@ msgstr "Nslookup"
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "D'acord"
 
@@ -2563,6 +2575,9 @@ msgstr "Paquets"
 msgid "Please enter your username and password."
 msgstr "Si us plau entra el teu nom d'usuari i contrasenya."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr "Política"
 
@@ -2901,6 +2916,9 @@ msgstr ""
 "Les rutes especifiquen per quina interfície i passarel·la es pot arribar a "
 "un cert ordinador o xarxa."
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr ""
 
@@ -3017,6 +3035,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr ""
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr "Atura aquesta interfície"
 
@@ -3038,6 +3059,9 @@ msgstr "Mida (.ipk)"
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "Salta"
 
@@ -3142,6 +3166,9 @@ msgid ""
 "configurations where only hosts with a corresponding lease are served."
 msgstr ""
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Estat"
 
@@ -3278,10 +3305,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3482,6 +3508,9 @@ msgstr "Sincronització de l'hora"
 msgid "Time Synchronization is not configured yet."
 msgstr "La sincronització de hora encara no s'ha configurat."
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Zona horària"
 
@@ -3863,6 +3892,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "qualsevol"
 
@@ -3981,6 +4022,9 @@ msgstr ""
 msgid "routed"
 msgstr "encaminat"
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
@@ -4020,6 +4064,9 @@ msgstr "sí"
 msgid "« Back"
 msgstr "« Enrere"
 
+#~ msgid "No chains in this table"
+#~ msgstr "No hi ha cadenes en aquesta taula"
+
 #~ msgid "Configuration files will be kept."
 #~ msgstr "Es mantindran els fitxers de configuració."
 
index a9852f6c51f2e80e776d7e66d4e511e19a16fb32..37cc6464714aaf6fc4b0cabf61b5536659a2164f 100644 (file)
@@ -405,10 +405,10 @@ msgstr "Konfigurace antén"
 msgid "Any zone"
 msgstr "Libovolná zóna"
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -690,6 +690,9 @@ msgstr "Probíhá sběr dat..."
 msgid "Command"
 msgstr "Příkaz"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "Společná nastavení"
 
@@ -936,6 +939,9 @@ msgstr "Zakázat nastavení DNS"
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1456,6 +1462,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "Skrývat <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -2029,6 +2038,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Nejvyšší povolené množství aktivních DHCP zápůjček"
 
@@ -2203,9 +2215,6 @@ msgstr "Pro toto rozhraní není nastaven žádný DHCP server"
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr "Žádné řetězce v této tabulce"
-
 msgid "No files found"
 msgstr "Nebyly nalezeny žádné soubory"
 
@@ -2230,7 +2239,7 @@ msgstr "Seznam balíčků není k dispozici"
 msgid "No password set!"
 msgstr "Žádné heslo!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "Žádná pravidla v tomto řetězci"
 
 msgid "No scan results available yet..."
@@ -2281,6 +2290,9 @@ msgstr "Nslookup"
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2572,6 +2584,9 @@ msgstr "Paketů"
 msgid "Please enter your username and password."
 msgstr "Prosím vložte vaše uživatelské jméno a heslo."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr "Politika"
 
@@ -2915,6 +2930,9 @@ msgid ""
 msgstr ""
 "Trasy určují, přes jaké rozhraní a bránu může být konkrétního hosta dosaženo."
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr "Spustit kontrolu souborového systému před připojením zařízení"
 
@@ -3033,6 +3051,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr "Ukázat aktuální seznam záložních souborů"
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr "Shodit toho rozhraní"
 
@@ -3054,6 +3075,9 @@ msgstr ""
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "Přeskočit"
 
@@ -3166,6 +3190,9 @@ msgstr ""
 "jmen DHCP klientům. Jsou také vyžadovány pro nedynamické konfigurace "
 "rozhraní, kde jsou povoleni pouze hosté s odpovídajícím nastavením."
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Stav"
 
@@ -3308,10 +3335,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3512,6 +3538,9 @@ msgstr "Synchronizace času"
 msgid "Time Synchronization is not configured yet."
 msgstr "Synchronizace času dosud není nakonfigurována."
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Časové pásmo"
 
@@ -3893,6 +3922,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "libovolný"
 
@@ -4011,6 +4052,9 @@ msgstr ""
 msgid "routed"
 msgstr "směrované"
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
@@ -4050,6 +4094,9 @@ msgstr "ano"
 msgid "« Back"
 msgstr "« Zpět"
 
+#~ msgid "No chains in this table"
+#~ msgstr "Žádné řetězce v této tabulce"
+
 #~ msgid "Configuration files will be kept."
 #~ msgstr "Konfigurační soubory budou zachovány."
 
index 2154a4f0848aed31beaad4821276df1c7a43b9d5..917cf97ab622d850d97f0b24c9fe54c7a0e76020 100644 (file)
@@ -412,14 +412,14 @@ msgstr "Antennenkonfiguration"
 msgid "Any zone"
 msgstr "Beliebige Zone"
 
+msgid "Apply anyway"
+msgstr "Ungeprüft anwenden"
+
 msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 "Anforderung zur Anwendung der Änderungen mit Status <code>%h</code> "
 "fehlgeschlagen"
 
-msgid "Apply unchecked"
-msgstr "Ungeprüft anwenden"
-
 msgid "Architecture"
 msgstr "Architektur"
 
@@ -714,6 +714,9 @@ msgstr "Sammle Daten..."
 msgid "Command"
 msgstr "Befehl"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "Allgemeine Konfiguration"
 
@@ -971,6 +974,9 @@ msgstr "DNS-Verarbeitung deaktivieren"
 msgid "Disable Encryption"
 msgstr "Verschlüsselung deaktivieren"
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr "Dieses Netzwerk deaktivieren"
 
@@ -1510,6 +1516,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "ESSID verstecken"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -2106,6 +2115,9 @@ msgstr "Manuell"
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr "Maximal erreichbare Datenrate (ATTNDR)"
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Maximal zulässige Anzahl von aktiven DHCP-Leases"
 
@@ -2283,9 +2295,6 @@ msgstr "Kein DHCP Server auf dieser Schnittstelle eingerichtet"
 msgid "No NAT-T"
 msgstr "Kein NAT-T"
 
-msgid "No chains in this table"
-msgstr "Keine Ketten in dieser Tabelle"
-
 msgid "No files found"
 msgstr "Keine Dateien gefunden"
 
@@ -2311,7 +2320,7 @@ msgstr "Es sind keine Paketlisten vorhanden"
 msgid "No password set!"
 msgstr "Kein Passwort gesetzt!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "Keine Regeln in dieser Kette"
 
 msgid "No scan results available yet..."
@@ -2364,6 +2373,9 @@ msgstr ""
 "Anzahl der zwischengespeicherten DNS-Einträge. Maximum sind 10000 Einträge, "
 "\"0\" deaktiviert die Zwischenspeicherung."
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2670,6 +2682,9 @@ msgstr "Pkte."
 msgid "Please enter your username and password."
 msgstr "Bitte Benutzernamen und Passwort eingeben."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr "Standardregel"
 
@@ -3029,6 +3044,9 @@ msgstr ""
 "Netzwerkrouten geben an, über welche Schnittstellen bestimmte Rechner oder "
 "Netzwerke erreicht werden können"
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr "Vor dem Einhängen Dateisystemprüfung starten "
 
@@ -3150,6 +3168,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr "Zeige aktuelle Liste der gesicherten Dateien"
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr "Diese Schnittstelle herunterfahren"
 
@@ -3171,6 +3192,9 @@ msgstr "Größe (.ipk)"
 msgid "Size of DNS query cache"
 msgstr "Größe des DNS-Caches"
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "Überspringen"
 
@@ -3291,6 +3315,9 @@ msgstr ""
 "Konfigurationen benötigt auf denen lediglich Hosts mit zugehörigem "
 "statischem Lease-Eintrag bedient werden."
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Status"
 
@@ -3444,10 +3471,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 "Das Gerät konnte nach dem Anwenden der ausstehenden Änderungen innerhalb von "
 "%d Sekunden nicht mehr erreicht werden, daher wurde die Änderungen aus "
@@ -3671,6 +3697,9 @@ msgstr "Zeitsynchronisation"
 msgid "Time Synchronization is not configured yet."
 msgstr "Die Zeitsynchronisation wurde noch nicht konfiguriert."
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Zeitzone"
 
@@ -4063,6 +4092,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "beliebig"
 
@@ -4179,6 +4220,9 @@ msgstr "Relay-Modus"
 msgid "routed"
 msgstr "routed"
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr "Server-Modus"
 
@@ -4218,6 +4262,9 @@ msgstr "ja"
 msgid "« Back"
 msgstr "« Zurück"
 
+#~ msgid "No chains in this table"
+#~ msgstr "Keine Ketten in dieser Tabelle"
+
 #~ msgid "Configuration files will be kept."
 #~ msgstr "Konfigurationsdateien sichern"
 
index 3028cf227e52067c9494060f5c1175d97b733d2a..a8aa561187a1b18c067ad10e69bb5727420c07ef 100644 (file)
@@ -412,10 +412,10 @@ msgstr ""
 msgid "Any zone"
 msgstr "Οιαδήποτε ζώνη"
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -699,6 +699,9 @@ msgstr "Συλλογή δεδομένων..."
 msgid "Command"
 msgstr "Εντολή"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "Κοινή Παραμετροποίηση"
 
@@ -945,6 +948,9 @@ msgstr "Απενεργοποίηση ρυθμίσεων DNS"
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1469,6 +1475,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "Κρυφό <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -2035,6 +2044,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Μέγιστος επιτρεπόμενος αριθμός ενεργών DHCP leases"
 
@@ -2211,9 +2223,6 @@ msgstr "Δεν υπάρχει ρυθμισμένος DHCP εξυπηρετητή
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr "Δεν υπάρχουν αλυσίδες σε αυτόν τον πίνακα"
-
 msgid "No files found"
 msgstr "Δε βρέθηκαν αρχεία"
 
@@ -2238,7 +2247,7 @@ msgstr "Δεν υπάρχουν διαθέσιμες λίστες πακέτων
 msgid "No password set!"
 msgstr "Δεν έχει οριστεί κωδικός πρόσβασης!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "Δεν υπάρχει κανόνας σε αυτή την αλυσίδα"
 
 msgid "No scan results available yet..."
@@ -2289,6 +2298,9 @@ msgstr ""
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "Εντάξει"
 
@@ -2579,6 +2591,9 @@ msgstr "Πκτ."
 msgid "Please enter your username and password."
 msgstr "Παρακαλώ εισάγετε όνομα χρήστη και κωδικό πρόσβασης."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr "Πολιτική"
 
@@ -2919,6 +2934,9 @@ msgstr ""
 "Οι διαδρομές ορίζουν τη διεπαφή και πύλη από την οποία κάποιος υπολογιστής ή "
 "δίκτυο μπορεί να είναι προσβάσιμο/ς."
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr "Εκτέλεση ελέγχου του συστήματος αρχείων πριν προσαρτηθεί η συσκευή"
 
@@ -3035,6 +3053,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr ""
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr "Απενεργοποίηση αυτής της διεπαφής"
 
@@ -3056,6 +3077,9 @@ msgstr ""
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "Παράκαμψη"
 
@@ -3162,6 +3186,9 @@ msgid ""
 "configurations where only hosts with a corresponding lease are served."
 msgstr ""
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Κατάσταση"
 
@@ -3296,10 +3323,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3483,6 +3509,9 @@ msgstr ""
 msgid "Time Synchronization is not configured yet."
 msgstr ""
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Ζώνη ώρας"
 
@@ -3857,6 +3886,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr ""
 
@@ -3976,6 +4017,9 @@ msgstr ""
 msgid "routed"
 msgstr ""
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
@@ -4015,6 +4059,9 @@ msgstr "ναι"
 msgid "« Back"
 msgstr "« Πίσω"
 
+#~ msgid "No chains in this table"
+#~ msgstr "Δεν υπάρχουν αλυσίδες σε αυτόν τον πίνακα"
+
 #~ msgid "Configuration files will be kept."
 #~ msgstr "Τα αρχεία παραμετροποίησης θα διατηρηθούν."
 
index ffbfe6f5655d42ee5a303752887d1d7317ee043e..bc7bc1965d0cd8ca631d848e46634d76b8aa379d 100644 (file)
@@ -403,10 +403,10 @@ msgstr ""
 msgid "Any zone"
 msgstr "Any zone"
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -687,6 +687,9 @@ msgstr "Collecting data..."
 msgid "Command"
 msgstr "Command"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "Common Configuration"
 
@@ -932,6 +935,9 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1445,6 +1451,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -2005,6 +2014,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -2179,9 +2191,6 @@ msgstr ""
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr "No chains in this table"
-
 msgid "No files found"
 msgstr ""
 
@@ -2206,8 +2215,8 @@ msgstr ""
 msgid "No password set!"
 msgstr ""
 
-msgid "No rules in this chain"
-msgstr "No rules in this chain"
+msgid "No rules in this chain."
+msgstr "No rules in this chain."
 
 msgid "No scan results available yet..."
 msgstr ""
@@ -2257,6 +2266,9 @@ msgstr ""
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2547,6 +2559,9 @@ msgstr "Pkts."
 msgid "Please enter your username and password."
 msgstr "Please enter your username and password."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr "Policy"
 
@@ -2885,6 +2900,9 @@ msgstr ""
 "Routes specify over which interface and gateway a certain host or network "
 "can be reached."
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr ""
 
@@ -3000,6 +3018,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr ""
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr ""
 
@@ -3021,6 +3042,9 @@ msgstr ""
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "Skip"
 
@@ -3125,6 +3149,9 @@ msgid ""
 "configurations where only hosts with a corresponding lease are served."
 msgstr ""
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Status"
 
@@ -3257,10 +3284,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3441,6 +3467,9 @@ msgstr ""
 msgid "Time Synchronization is not configured yet."
 msgstr ""
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Timezone"
 
@@ -3815,6 +3844,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr ""
 
@@ -3933,6 +3974,9 @@ msgstr ""
 msgid "routed"
 msgstr ""
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
@@ -3972,6 +4016,9 @@ msgstr ""
 msgid "« Back"
 msgstr "« Back"
 
+#~ msgid "No chains in this table"
+#~ msgstr "No chains in this table"
+
 #~ msgid "Configuration files will be kept."
 #~ msgstr "Configuration files will be kept."
 
index 0c21b8347e8e0fb5b26918486066a9624f0221ab..23632fd57a2786631f90e1fbcdca050c167f1717 100644 (file)
@@ -409,10 +409,10 @@ msgstr "Configuración de la antena"
 msgid "Any zone"
 msgstr "Cualquier zona"
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -696,6 +696,9 @@ msgstr "Un momento..."
 msgid "Command"
 msgstr "Comando"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "Configuración común"
 
@@ -943,6 +946,9 @@ msgstr "Desactivar configuración de DNS"
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1465,6 +1471,9 @@ msgstr "Claves públicas SSH. Ponga una por línea."
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "Ocultar <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -2044,6 +2053,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Número máximo de cesiones DHCP activas"
 
@@ -2218,9 +2230,6 @@ msgstr "No se ha configurado un servidor DHCP para esta interfaz"
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr "No hay cadenas en esta tabla"
-
 msgid "No files found"
 msgstr "No se han encontrado ficheros"
 
@@ -2245,7 +2254,7 @@ msgstr "No hay listas de paquetes disponibles"
 msgid "No password set!"
 msgstr "¡Sin contraseña!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "No hay reglas en esta cadena"
 
 msgid "No scan results available yet..."
@@ -2296,6 +2305,9 @@ msgstr "NSLookup"
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "Aceptar"
 
@@ -2587,6 +2599,9 @@ msgstr "Paq."
 msgid "Please enter your username and password."
 msgstr "Por favor, introduzca su nombre de usuario y contraseña."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr "Política"
 
@@ -2930,6 +2945,9 @@ msgstr ""
 "Las rutas especifican sobre qué interfaz y pasarela se puede llegar a una "
 "cierta máquina o red."
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr "Comprobar el sistema de ficheros antes de montar el dispositivo"
 
@@ -3048,6 +3066,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr "Mostrar lista de ficheros a salvar"
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr "Apagar esta interfaz"
 
@@ -3069,6 +3090,9 @@ msgstr ""
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "Saltar"
 
@@ -3185,6 +3209,9 @@ msgstr ""
 "configuraciones de interfaz no dinámica en las que a cada máquina siempre se "
 "le quiere servir la misma dirección IP."
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Estado"
 
@@ -3330,10 +3357,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3539,6 +3565,9 @@ msgstr "Sincronización horaria"
 msgid "Time Synchronization is not configured yet."
 msgstr "Sincronización horaria no configurada."
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Zona horaria"
 
@@ -3922,6 +3951,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "cualquiera"
 
@@ -4040,6 +4081,9 @@ msgstr ""
 msgid "routed"
 msgstr "enrutado"
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
@@ -4079,6 +4123,9 @@ msgstr "sí"
 msgid "« Back"
 msgstr "« Volver"
 
+#~ msgid "No chains in this table"
+#~ msgstr "No hay cadenas en esta tabla"
+
 #~ msgid "Configuration files will be kept."
 #~ msgstr "Se mantendrán los ficheros de configuración."
 
index 33eb7edf54f4897a8d13d0064b4147b9dd7b071f..f96ecd389371ca2c382334c8bae8999f26048f78 100644 (file)
@@ -415,10 +415,10 @@ msgstr "Configuration de l'antenne"
 msgid "Any zone"
 msgstr "N'importe quelle zone"
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -702,6 +702,9 @@ msgstr "Récupération de données..."
 msgid "Command"
 msgstr "Commande"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "Configuration commune"
 
@@ -949,6 +952,9 @@ msgstr "Désactiver la configuration DNS"
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1478,6 +1484,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "Cacher le ESSID"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -2057,6 +2066,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Nombre maximum de baux DHCP actifs"
 
@@ -2231,9 +2243,6 @@ msgstr "Aucun serveur DHCP configuré sur cette interface"
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr "Aucune chaîne dans cette table"
-
 msgid "No files found"
 msgstr "Aucun fichier trouvé"
 
@@ -2258,7 +2267,7 @@ msgstr "Aucune liste de paquets disponible"
 msgid "No password set!"
 msgstr "Pas de mot de passe positionné !"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "Aucune règle dans cette chaîne"
 
 msgid "No scan results available yet..."
@@ -2309,6 +2318,9 @@ msgstr "Nslookup"
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2599,6 +2611,9 @@ msgstr "Pqts."
 msgid "Please enter your username and password."
 msgstr "Saisissez votre nom d'utilisateur et mot de passe."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr "Politique"
 
@@ -2941,6 +2956,9 @@ msgstr ""
 "Avec les routes statiques vous pouvez spécifier à travers quelle interface "
 "ou passerelle un réseau peut être contacté."
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr ""
 "Faire un vérification du système de fichiers avant de monter le périphérique"
@@ -3060,6 +3078,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr "Afficher la liste des fichiers de la sauvegarde actuelle"
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr "Arrêter cet interface"
 
@@ -3081,6 +3102,9 @@ msgstr ""
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "Passer au suivant"
 
@@ -3195,6 +3219,9 @@ msgstr ""
 "interfaces sans configuration dynamique où l'on fournit un bail aux seuls "
 "hôtes configurés."
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Status"
 
@@ -3340,10 +3367,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3555,6 +3581,9 @@ msgstr "Synchronisation de l'heure"
 msgid "Time Synchronization is not configured yet."
 msgstr "La synchronisation de l'heure n'est pas encore configurée."
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Fuseau horaire"
 
@@ -3941,6 +3970,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "n'importe lequel"
 
@@ -4057,6 +4098,9 @@ msgstr ""
 msgid "routed"
 msgstr "routé"
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
@@ -4096,6 +4140,9 @@ msgstr "oui"
 msgid "« Back"
 msgstr "« Retour"
 
+#~ msgid "No chains in this table"
+#~ msgstr "Aucune chaîne dans cette table"
+
 #~ msgid "Configuration files will be kept."
 #~ msgstr "Les fichiers de configuration seront préservés."
 
index 97047328c6c63d7612e2852f83a7003429a331ce..0b3acb89cc9da983301cb9ef1dfce7ed5bef5d63 100644 (file)
@@ -404,10 +404,10 @@ msgstr "הגדרות אנטנה"
 msgid "Any zone"
 msgstr "כל תחום"
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -681,6 +681,9 @@ msgstr "אוסף מידע..."
 msgid "Command"
 msgstr "פקודה"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "הגדרות נפוצות"
 
@@ -925,6 +928,9 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1429,6 +1435,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr ""
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -1981,6 +1990,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -2153,9 +2165,6 @@ msgstr ""
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr ""
-
 msgid "No files found"
 msgstr ""
 
@@ -2180,7 +2189,7 @@ msgstr "אין רשימת חבילות זמינה"
 msgid "No password set!"
 msgstr "לא הוגדרה סיסמה!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr ""
 
 msgid "No scan results available yet..."
@@ -2231,6 +2240,9 @@ msgstr ""
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr ""
 
@@ -2515,6 +2527,9 @@ msgstr ""
 msgid "Please enter your username and password."
 msgstr "אנא הזן את שם המשתמש והסיסמה שלך:"
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr ""
 
@@ -2849,6 +2864,9 @@ msgid ""
 "can be reached."
 msgstr ""
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr ""
 
@@ -2965,6 +2983,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr ""
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr ""
 
@@ -2986,6 +3007,9 @@ msgstr ""
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr ""
 
@@ -3095,6 +3119,9 @@ msgstr ""
 "הן נחוצות גם עבור הגדרות ממשק שאינן דינאמיות, בהן מטופלות רק ישויות בעלות "
 "הקצאה מתאימה."
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "מצב"
 
@@ -3227,10 +3254,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3396,6 +3422,9 @@ msgstr "סנכרון זמן"
 msgid "Time Synchronization is not configured yet."
 msgstr "סנכרון זמן עדיין לא הוגדר."
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "אזור זמן"
 
@@ -3763,6 +3792,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "כלשהו"
 
@@ -3879,6 +3920,9 @@ msgstr ""
 msgid "routed"
 msgstr "מנותב"
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
index 94d9ad109d7f1886c40ee1f7b7549edb9d2999fb..5a75deb7840c87b78573d5ea36e3b674f3b60c74 100644 (file)
@@ -408,10 +408,10 @@ msgstr "Antenna beállítások"
 msgid "Any zone"
 msgstr "Bármelyik zóna"
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -697,6 +697,9 @@ msgstr "Adatok összegyűjtése..."
 msgid "Command"
 msgstr "Parancs"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "Álatános beállítás"
 
@@ -943,6 +946,9 @@ msgstr "DNS beállítás letiltása"
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1467,6 +1473,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr> elrejtése"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -2046,6 +2055,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Aktív DHCP bérletek maximális száma"
 
@@ -2220,9 +2232,6 @@ msgstr "Ehhez az interfészhez nincs DHCP kiszolgáló beállítva"
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr "Ez a tábla nem tartalmaz láncokat."
-
 msgid "No files found"
 msgstr "Nem találhatók fájlok"
 
@@ -2247,7 +2256,7 @@ msgstr "Csomaglisták nem állnak rendelkezésre"
 msgid "No password set!"
 msgstr "Nincs jelszó!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "Ez a lánc nem tartalmaz szabályokat"
 
 msgid "No scan results available yet..."
@@ -2298,6 +2307,9 @@ msgstr "Nslookup"
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2589,6 +2601,9 @@ msgstr "csom."
 msgid "Please enter your username and password."
 msgstr "Adja meg a felhasználónevét és a jelszavát."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr "Szabály"
 
@@ -2933,6 +2948,9 @@ msgstr ""
 "Az útvonalak határozzák meg, hogy bizonyos gépek illetve hálózatok melyik "
 "interfészen keresztül érhetők el."
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr "Fájlrendszer ellenőrzés futtatása az eszköz csatolása előtt"
 
@@ -3051,6 +3069,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr "Mentendő fájlok aktuális listájának megjelenítése"
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr "Interfész leállítása"
 
@@ -3072,6 +3093,9 @@ msgstr ""
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "Ugrás"
 
@@ -3186,6 +3210,9 @@ msgstr ""
 "szükségesek, ahol a csak a megfelelő bérlettel rendelkező hosztok kerülnek "
 "kiszolgálásra."
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Állapot"
 
@@ -3329,10 +3356,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3543,6 +3569,9 @@ msgstr "Idő szinkronizálás"
 msgid "Time Synchronization is not configured yet."
 msgstr "Idő szinkronizálás még nincs beállítva."
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Időzóna"
 
@@ -3928,6 +3957,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "bármelyik"
 
@@ -4046,6 +4087,9 @@ msgstr ""
 msgid "routed"
 msgstr "irányított"
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
@@ -4085,6 +4129,9 @@ msgstr "igen"
 msgid "« Back"
 msgstr "« Vissza"
 
+#~ msgid "No chains in this table"
+#~ msgstr "Ez a tábla nem tartalmaz láncokat."
+
 #~ msgid "Configuration files will be kept."
 #~ msgstr "A konfigurációs fájlok megmaradnak."
 
index 9ba9308e2c8f219cf0021a710535f1b42f7350ed..b81b9c875eead5d66e2096b334c32486df69b131 100644 (file)
@@ -417,10 +417,10 @@ msgstr "Configurazione dell'Antenna"
 msgid "Any zone"
 msgstr "Qualsiasi Zona"
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -703,6 +703,9 @@ msgstr "Raccolgo i dati..."
 msgid "Command"
 msgstr "Comando"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "Configurazioni Comuni"
 
@@ -950,6 +953,9 @@ msgstr "Disabilita il setup dei DNS"
 msgid "Disable Encryption"
 msgstr "Disabilita Crittografia"
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1472,6 +1478,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "Nascondi <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -2047,6 +2056,9 @@ msgstr "Manuale"
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -2221,9 +2233,6 @@ msgstr "Nessun Server DHCP configurato per questa interfaccia"
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr ""
-
 msgid "No files found"
 msgstr "Nessun file trovato"
 
@@ -2248,7 +2257,7 @@ msgstr "Nessuna lista pacchetti disponibile"
 msgid "No password set!"
 msgstr "Nessuna password immessa!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "Nessuna regola in questa catena"
 
 msgid "No scan results available yet..."
@@ -2299,6 +2308,9 @@ msgstr ""
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2590,6 +2602,9 @@ msgstr ""
 msgid "Please enter your username and password."
 msgstr "Per favore inserisci il tuo username e la password."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr ""
 
@@ -2931,6 +2946,9 @@ msgstr ""
 "Le route specificano attraverso quale interfaccia e gateway un certo host o "
 "rete può essere raggiunto."
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr "Esegui un controllo del filesystem prima di montare il dispositivo"
 
@@ -3046,6 +3064,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr ""
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr ""
 
@@ -3067,6 +3088,9 @@ msgstr ""
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "Salta"
 
@@ -3183,6 +3207,9 @@ msgstr ""
 "di configurazione non dinamici, dove solo gli host col contratto "
 "corrispondente vengono serviti."
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Stato"
 
@@ -3326,10 +3353,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3511,6 +3537,9 @@ msgstr "Sincronizzazione Orario"
 msgid "Time Synchronization is not configured yet."
 msgstr "Sincronizzazione Orario non ancora configurata"
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Fuso orario"
 
@@ -3898,6 +3927,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "qualsiasi"
 
@@ -4016,6 +4057,9 @@ msgstr ""
 msgid "routed"
 msgstr "instradato"
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
index 9d6b9b4b70ed592f5c160ea1f97072c9f3bdc713..ced6c85252766e4851f3bd192bcb279dce16b98b 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2018-09-20 05:12+0900\n"
+"PO-Revision-Date: 2018-10-20 00:48+0900\n"
 "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
 "Language: ja\n"
 "MIME-Version: 1.0\n"
@@ -411,12 +411,12 @@ msgstr "アンテナ設定"
 msgid "Any zone"
 msgstr "全てのゾーン"
 
+msgid "Apply anyway"
+msgstr "チェックなしの適用"
+
 msgid "Apply request failed with status <code>%h</code>"
 msgstr "適用リクエストはステータス <code>%h</code> により失敗しました"
 
-msgid "Apply unchecked"
-msgstr "チェックなしの適用"
-
 msgid "Architecture"
 msgstr "アーキテクチャ"
 
@@ -673,7 +673,7 @@ msgid ""
 "Click \"Generate archive\" to download a tar archive of the current "
 "configuration files."
 msgstr ""
-"\"ã\83\90ã\83\83ã\82¯ã\82¢ã\83\83ã\83\97 ã\82¢ã\83¼ã\82«ã\82¤ã\83\96ã\81®ä½\9cæ\88\90\"をクリックすると、現在の設定ファイルをtar形"
+"\"ã\83\90ã\83\83ã\82¯ã\82¢ã\83\83ã\83\97 ã\82¢ã\83¼ã\82«ã\82¤ã\83\96ã\82\92ç\94\9fæ\88\90\" をクリックすると、現在の設定ファイルをtar形"
 "式のアーカイブファイルとしてダウンロードします。"
 
 msgid ""
@@ -705,6 +705,9 @@ msgstr "データ収集中です..."
 msgid "Command"
 msgstr "コマンド"
 
+msgid "Comment"
+msgstr "コメント"
+
 msgid "Common Configuration"
 msgstr "一般設定"
 
@@ -846,7 +849,7 @@ msgid "DNS forwardings"
 msgstr "DNSフォワーディング"
 
 msgid "DNS-Label / FQDN"
-msgstr ""
+msgstr "DNS-ラベル / FQDN"
 
 msgid "DNSSEC"
 msgstr "DNSSEC"
@@ -962,8 +965,11 @@ msgstr "DNSセットアップを無効にする"
 msgid "Disable Encryption"
 msgstr "暗号化を無効にする"
 
+msgid "Disable Inactivity Polling"
+msgstr "非アクティブ状態ポーリングを無効化"
+
 msgid "Disable this network"
-msgstr "このネットワークを無効"
+msgstr "このネットワークを無効にします"
 
 msgid "Disabled"
 msgstr "無効"
@@ -1094,7 +1100,7 @@ msgstr ""
 "ページをリロードします。"
 
 msgid "Edit this interface"
-msgstr "インターフェースを編集"
+msgstr "インターフェースを編集します"
 
 msgid "Edit this network"
 msgstr "ネットワークを編集"
@@ -1161,13 +1167,13 @@ msgid "Enable this mount"
 msgstr "マウント設定を有効にする"
 
 msgid "Enable this network"
-msgstr "このネットワークを有効"
+msgstr "このネットワークを有効にします"
 
 msgid "Enable this swap"
 msgstr "スワップ設定を有効にする"
 
 msgid "Enable/Disable"
-msgstr "有効/無効"
+msgstr "有効 / 無効"
 
 msgid "Enabled"
 msgstr "有効"
@@ -1435,7 +1441,7 @@ msgid "Generate PMK locally"
 msgstr ""
 
 msgid "Generate archive"
-msgstr "ã\83\90ã\83\83ã\82¯ã\82¢ã\83\83ã\83\97 ã\82¢ã\83¼ã\82«ã\82¤ã\83\96ã\81®ä½\9c成"
+msgstr "ã\83\90ã\83\83ã\82¯ã\82¢ã\83\83ã\83\97 ã\82¢ã\83¼ã\82«ã\82¤ã\83\96ã\82\92ç\94\9f成"
 
 msgid "Generic 802.11%s Wireless Controller"
 msgstr "802.11%s 無線LANコントローラ"
@@ -1490,6 +1496,9 @@ msgstr "SSH公開鍵認証で使用するSSH公開鍵を1行づつペースト
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>の隠匿"
 
+msgid "Hide empty chains"
+msgstr "空のチェインを非表示"
+
 msgid "Host"
 msgstr "ホスト"
 
@@ -1938,8 +1947,8 @@ msgstr "待ち受けポート"
 
 msgid "Listen only on the given interface or, if unspecified, on all"
 msgstr ""
-"æ\8c\87å®\9aã\81\97ã\81\9fã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81§ã\81®ã\81¿ã\82¢ã\82¯ã\82»ã\82¹ã\82\92æ\9c\89å\8a¹ã\81«ã\81\97ã\81¾ã\81\99ã\80\82設å®\9aã\81\97ã\81ªã\81\84å ´å\90\88ã\81¯ã\81\99ã\81¹ã\81¦"
-"ã\81®ã\82¤ã\83³ã\82¿ã\83\95ã\82§ã\83¼ã\82¹ã\81\8c対象ã\81§ã\81\99"
+"æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81§ã\81®ã\81¿å¾\85ã\81¡å\8f\97ã\81\91ã\82\92è¡\8cã\81\84ã\81¾ã\81\99ã\80\82設å®\9aã\81\97ã\81ªã\81\84å ´å\90\88ã\81¯ã\81\99ã\81¹ã\81¦ã\81®"
+"ã\82¤ã\83³ã\82¿ã\83\95ã\82§ã\83¼ã\82¹ã\81\8c対象ã\81§ã\81\99ã\80\82"
 
 msgid "Listening port for inbound DNS queries"
 msgstr "DNSクエリを受信するポート"
@@ -2072,6 +2081,9 @@ msgstr "手動"
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr "許容される最大 Listen 間隔"
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "DHCPリースの許可される最大数"
 
@@ -2248,9 +2260,6 @@ msgstr "このインターフェースにはDHCPサーバーが設定されて
 msgid "No NAT-T"
 msgstr "NAT-Tを使用しない"
 
-msgid "No chains in this table"
-msgstr "チェイン内にルールがありません"
-
 msgid "No files found"
 msgstr "ファイルが見つかりませんでした"
 
@@ -2275,7 +2284,7 @@ msgstr "パッケージ リストがありません"
 msgid "No password set!"
 msgstr "パスワードが設定されていません!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "チェイン内にルールがありません"
 
 msgid "No scan results available yet..."
@@ -2328,6 +2337,9 @@ msgstr ""
 "キャッシュされる DNS エントリーの数です。(最大 10000 件。 0の場合はキャッ"
 "シュしません)"
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2624,6 +2636,9 @@ msgstr "パケット"
 msgid "Please enter your username and password."
 msgstr "ユーザー名とパスワードを入力してください。"
 
+msgid "Please update package lists first"
+msgstr "最初にパッケージ リストを更新してください"
+
 msgid "Policy"
 msgstr "ポリシー"
 
@@ -2695,7 +2710,7 @@ msgid "Provide NTP server"
 msgstr "NTPサーバー機能を有効にする"
 
 msgid "Provide new network"
-msgstr "æ\96°ã\81\97ã\81\84ã\83\8dã\83\83ã\83\88ã\83¯ã\83¼ã\82¯ã\82\92設å®\9aã\81\99ã\82\8b"
+msgstr "æ\96°ã\81\97ã\81\84ã\83\8dã\83\83ã\83\88ã\83¯ã\83¼ã\82¯ã\82\92設å®\9aã\81\97ã\81¾ã\81\99"
 
 msgid "Pseudo Ad-Hoc (ahdemo)"
 msgstr "擬似アドホック (ahdemo)"
@@ -2828,7 +2843,7 @@ msgid "Recommended. IP addresses of the WireGuard interface."
 msgstr "WireGuard インターフェースのIPアドレスです。(推奨)"
 
 msgid "Reconnect this interface"
-msgstr "ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81®å\86\8dæ\8e¥ç¶\9a"
+msgstr "ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\82\92å\86\8dæ\8e¥ç¶\9aã\81\97ã\81¾ã\81\99"
 
 msgid "References"
 msgstr "参照カウンタ"
@@ -2903,7 +2918,7 @@ msgid "Reset"
 msgstr "リセット"
 
 msgid "Reset Counters"
-msgstr "ã\82«ã\82¦ã\83³ã\82¿ã\81®リセット"
+msgstr "ã\82«ã\82¦ã\83³ã\82¿ã\82\92リセット"
 
 msgid "Reset to defaults"
 msgstr "標準設定にリセット"
@@ -2918,10 +2933,10 @@ msgid "Restart"
 msgstr "再起動"
 
 msgid "Restart Firewall"
-msgstr "ã\83\95ã\82¡ã\82¤ã\82¢ã\82¦ã\82©ã\83¼ã\83«ã\81®再起動"
+msgstr "ã\83\95ã\82¡ã\82¤ã\82¢ã\82¦ã\82©ã\83¼ã\83«ã\82\92再起動"
 
 msgid "Restart radio interface"
-msgstr "ç\84¡ç·\9aã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81®å\86\8dèµ·å\8b\95"
+msgstr "ç\84¡ç·\9aã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\82\92å\86\8dèµ·å\8b\95ã\81\97ã\81¾ã\81\99"
 
 msgid "Restore"
 msgstr "復元"
@@ -2975,6 +2990,9 @@ msgstr ""
 "特定のホスト又はネットワークに、どのインターフェース及びゲートウェイを通して"
 "通信を行うか、経路情報を設定します。"
 
+msgid "Rule"
+msgstr "ルール"
+
 msgid "Run a filesystem check before mounting the device"
 msgstr "デバイスのマウントを行う前にファイルシステムチェックを行う"
 
@@ -3095,8 +3113,11 @@ msgstr "Short Preamble"
 msgid "Show current backup file list"
 msgstr "現在のバックアップファイルのリストを表示する"
 
+msgid "Show empty chains"
+msgstr "空のチェインを表示"
+
 msgid "Shutdown this interface"
-msgstr "インターフェースを終了"
+msgstr "インターフェースを終了します"
 
 msgid "Signal"
 msgstr "信号強度"
@@ -3116,6 +3137,9 @@ msgstr "サイズ (.ipk)"
 msgid "Size of DNS query cache"
 msgstr "DNS クエリ キャッシュのサイズ"
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "スキップ"
 
@@ -3159,7 +3183,7 @@ 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 "
@@ -3226,6 +3250,9 @@ msgstr ""
 "名をアサインします。また、クライアントは対応するリースを使用するホストがその1"
 "台のみで、かつ静的なインターフェース設定にする必要があります。"
 
+msgid "Station inactivity limit"
+msgstr "非アクティブなステーションの制限"
+
 msgid "Status"
 msgstr "ステータス"
 
@@ -3242,7 +3269,7 @@ msgid "Suppress logging"
 msgstr "ログの抑制"
 
 msgid "Suppress logging of the routine operation of these protocols"
-msgstr "これらのプロトコルのルーチン的操作についてのログを抑制します。"
+msgstr "ã\81\93ã\82\8cã\82\89ã\81®ã\83\97ã\83­ã\83\88ã\82³ã\83«ã\81®ã\80\81ã\83«ã\83¼ã\83\81ã\83³ç\9a\84æ\93\8dä½\9cã\81«ã\81¤ã\81\84ã\81¦ã\81®ã\83­ã\82°ã\82\92æ\8a\91å\88¶ã\81\97ã\81¾ã\81\99ã\80\82"
 
 msgid "Swap"
 msgstr "スワップ"
@@ -3371,10 +3398,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 "未適用の変更を適用後、デバイスは %d 秒以内に完了できなかった可能性がありま"
 "す。これは、安全上の理由によりロールバックされる設定に起因するものです。それ"
@@ -3588,6 +3614,9 @@ msgstr "時刻設定"
 msgid "Time Synchronization is not configured yet."
 msgstr "時刻同期機能はまだ設定されていません。"
 
+msgid "Time interval for rekeying GTK"
+msgstr "Group Temporal Key (GTK) 再生成間隔"
+
 msgid "Timezone"
 msgstr "タイムゾーン"
 
@@ -3721,7 +3750,7 @@ msgid "Up"
 msgstr "上へ"
 
 msgid "Update lists"
-msgstr "ã\83ªã\82¹ã\83\88ã\81®更新"
+msgstr "ã\83ªã\82¹ã\83\88ã\82\92更新"
 
 msgid ""
 "Upload a sysupgrade-compatible image here to replace the running firmware. "
@@ -3958,8 +3987,8 @@ msgid ""
 "scripts like \"network\", your device might become inaccessible!</strong>"
 msgstr ""
 "ルーターが起動する際のサービスの有効化/無効化を行うことができます。また、変更"
-"は再起動後に適用されます。<br /><strong>警告: \"network\"のような重要なサービ"
-"ã\82¹ã\82\92ç\84¡å\8a¹ã\81«ã\81\99ã\82\8bã\81¨, ルーターにアクセスできなくなりますので、注意してください。"
+"は再起動後に適用されます。<br /><strong>警告: \"network\" のような重要なサー"
+"ã\83\93ã\82¹ã\82\92ç\84¡å\8a¹ã\81«ã\81\99ã\82\8bã\81¨ルーターにアクセスできなくなりますので、注意してください。"
 "</strong>"
 
 msgid ""
@@ -3975,6 +4004,18 @@ msgstr ""
 "バージョン 7以上にアップグレードするか、FirefoxやOpera、Safariなど別のブラウ"
 "ザーを使用してください。"
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "全て"
 
@@ -4093,6 +4134,9 @@ msgstr "リレー モード"
 msgid "routed"
 msgstr "routed"
 
+msgid "sec"
+msgstr "秒"
+
 msgid "server mode"
 msgstr "サーバー モード"
 
index 30ab1f79c5a47b25f149a11a4cc97919636178d1..2f94e495fa616ccdbb2da72967ed7a075eda5280 100644 (file)
@@ -397,10 +397,10 @@ msgstr ""
 msgid "Any zone"
 msgstr ""
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -683,6 +683,9 @@ msgstr "Data 를 수집중입니다..."
 msgid "Command"
 msgstr "명령어"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "공통 설정"
 
@@ -932,6 +935,9 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1444,6 +1450,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr> 숨기기"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr "호스트"
 
@@ -1998,6 +2007,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Active DHCP lease 건의 최대 허용 숫자"
 
@@ -2170,9 +2182,6 @@ msgstr ""
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr "이 table 에는 정의된 chain 이 없음"
-
 msgid "No files found"
 msgstr ""
 
@@ -2197,7 +2206,7 @@ msgstr ""
 msgid "No password set!"
 msgstr "암호 설정을 해주세요!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr ""
 
 msgid "No scan results available yet..."
@@ -2248,6 +2257,9 @@ msgstr ""
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr ""
 
@@ -2540,6 +2552,9 @@ msgstr "Pkts."
 msgid "Please enter your username and password."
 msgstr "사용자이름과 암호를 입력해 주세요."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr ""
 
@@ -2878,6 +2893,9 @@ msgstr ""
 "Route 경로는 특정 호스트 혹은 네트워크가 사용해야 할 인터페이스와 gateway 정"
 "보를 나타냅니다."
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr ""
 
@@ -2993,6 +3011,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr "현재 백업 파일 목록 보기"
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr "이 인터페이스를 정지합니다"
 
@@ -3014,6 +3035,9 @@ msgstr "크기 (.ipk)"
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr ""
 
@@ -3121,6 +3145,9 @@ msgstr ""
 "할 때 사용됩니다.  이 기능은 또한 지정된 host 에 대해서만 주소 임대를 하도록 "
 "하는 non-dynamic 인터페이스 설정에도 사용됩니다."
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "상태"
 
@@ -3258,10 +3285,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3439,6 +3465,9 @@ msgstr "시간 동기화"
 msgid "Time Synchronization is not configured yet."
 msgstr "시간 동기화가 아직 설정되지 않았습니다."
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "시간대"
 
@@ -3820,6 +3849,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr ""
 
@@ -3938,6 +3979,9 @@ msgstr ""
 msgid "routed"
 msgstr ""
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
@@ -3977,6 +4021,9 @@ msgstr ""
 msgid "« Back"
 msgstr ""
 
+#~ msgid "No chains in this table"
+#~ msgstr "이 table 에는 정의된 chain 이 없음"
+
 #~ msgid "Activate this network"
 #~ msgstr "이 네트워를 활성화합니다"
 
index 609af43c9a9e998027bbec6d209e30f7bf7173d9..42c020806bcb2ecf84ff32ce703b5b2d95f5ce2a 100644 (file)
@@ -392,10 +392,10 @@ msgstr ""
 msgid "Any zone"
 msgstr ""
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -666,6 +666,9 @@ msgstr ""
 msgid "Command"
 msgstr "Perintah"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr ""
 
@@ -906,6 +909,9 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1416,6 +1422,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "Menyembunyikan ESSID"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -1977,6 +1986,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -2151,9 +2163,6 @@ msgstr ""
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr "Tiada rantai dalam jadual ini"
-
 msgid "No files found"
 msgstr ""
 
@@ -2178,7 +2187,7 @@ msgstr ""
 msgid "No password set!"
 msgstr ""
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "Tidak ada peraturan dalam rantai ini"
 
 msgid "No scan results available yet..."
@@ -2229,6 +2238,9 @@ msgstr ""
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "Baik"
 
@@ -2518,6 +2530,9 @@ msgstr "Pkts."
 msgid "Please enter your username and password."
 msgstr "Sila masukkan username dan kata laluan anda."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr "Dasar"
 
@@ -2855,6 +2870,9 @@ msgstr ""
 "Laluan menentukan di mana interface dan gateway host atau rangkaian tertentu "
 "yang boleh dicapai."
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr ""
 
@@ -2970,6 +2988,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr ""
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr ""
 
@@ -2991,6 +3012,9 @@ msgstr ""
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "Skip"
 
@@ -3095,6 +3119,9 @@ msgid ""
 "configurations where only hosts with a corresponding lease are served."
 msgstr ""
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Status"
 
@@ -3230,10 +3257,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3415,6 +3441,9 @@ msgstr ""
 msgid "Time Synchronization is not configured yet."
 msgstr ""
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Zon masa"
 
@@ -3783,6 +3812,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr ""
 
@@ -3899,6 +3940,9 @@ msgstr ""
 msgid "routed"
 msgstr ""
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
@@ -3938,6 +3982,9 @@ msgstr ""
 msgid "« Back"
 msgstr "« Kembali"
 
+#~ msgid "No chains in this table"
+#~ msgstr "Tiada rantai dalam jadual ini"
+
 #~ msgid "help"
 #~ msgstr "Membantu"
 
index d30f4075da70a8385e5cd812b72268f55612691f..dd4094df642ceb742a25fb6deb61c2493eb12c42 100644 (file)
@@ -401,10 +401,10 @@ msgstr "Antennekonfigurasjon"
 msgid "Any zone"
 msgstr "Alle soner"
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -687,6 +687,9 @@ msgstr "Henter data..."
 msgid "Command"
 msgstr "Kommando"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "Vanlige Innstillinger"
 
@@ -933,6 +936,9 @@ msgstr "Deaktiver DNS oppsett"
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1453,6 +1459,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "Skjul <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -2021,6 +2030,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Maksimalt antall aktive DHCP leieavtaler"
 
@@ -2195,9 +2207,6 @@ msgstr "Ingen DHCP server er konfigurert for dette grensesnittet"
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr "Ingen lenker i denne tabellen"
-
 msgid "No files found"
 msgstr "Ingen filer funnet"
 
@@ -2222,7 +2231,7 @@ msgstr "Ingen pakkelister tilgjengelig"
 msgid "No password set!"
 msgstr "Ruteren er ikke passordbeskyttet!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "Ingen regler i denne tabellen"
 
 msgid "No scan results available yet..."
@@ -2273,6 +2282,9 @@ msgstr "Nslookup"
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2565,6 +2577,9 @@ msgstr "Pakker."
 msgid "Please enter your username and password."
 msgstr "Skriv inn ditt brukernavn og passord."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr "Policy"
 
@@ -2907,6 +2922,9 @@ msgstr ""
 "Ruter, angir hvilket nettverksgrensesnitt og hvilken gateway som brukes for "
 "å nå et gitt nettverk eller vert."
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr "Kjør filsystem sjekk før montering av enheten"
 
@@ -3025,6 +3043,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr "Vis gjeldende liste med sikkerhetskopifiler"
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr "Slå av dette grensesnittet"
 
@@ -3046,6 +3067,9 @@ msgstr ""
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "Gå videre"
 
@@ -3157,6 +3181,9 @@ msgstr ""
 "vertsnavn til DHCP klienter. Dette er nødvendig om grensesnittet ikke er "
 "dynamisk konfigurert og kun klienter med dhcp leieavtale får IP."
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Status"
 
@@ -3301,10 +3328,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3509,6 +3535,9 @@ msgstr "Tidssynkronisering"
 msgid "Time Synchronization is not configured yet."
 msgstr "Tiden Synkroniseringen er ikke konfigurert ennå."
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Tidssone"
 
@@ -3894,6 +3923,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "enhver"
 
@@ -4012,6 +4053,9 @@ msgstr ""
 msgid "routed"
 msgstr "rutet"
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
@@ -4051,6 +4095,9 @@ msgstr "ja"
 msgid "« Back"
 msgstr "« Tilbake"
 
+#~ msgid "No chains in this table"
+#~ msgstr "Ingen lenker i denne tabellen"
+
 #~ msgid "Configuration files will be kept."
 #~ msgstr "Konfigurasjonsfiler vil bli bevart."
 
index 66c0c7c569b54cea34996adbfe133c28cda0e014..c811c1316a4fd771652cedf587885a6e4df00506 100644 (file)
@@ -419,10 +419,10 @@ msgstr "Ustawienia anteny"
 msgid "Any zone"
 msgstr "Dowolna strefa"
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -712,6 +712,9 @@ msgstr "Zbieranie danych..."
 msgid "Command"
 msgstr "Polecenie"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "Konfiguracja podstawowa"
 
@@ -968,6 +971,9 @@ msgstr "Wyłącz konfigurację DNS"
 msgid "Disable Encryption"
 msgstr "Wyłącz szyfrowanie"
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr "Wyłącz tą sieć"
 
@@ -1503,6 +1509,9 @@ msgstr ""
 "Ukryj <abbr title=\"Extended Service Set Identifier (Nazwę sieci)\">ESSID</"
 "abbr>"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -2081,6 +2090,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr "Max. Osiągalna przepustowość danych (ATTNDR)"
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Maksymalna dozwolona liczba aktywnych dzierżaw DHCP"
 
@@ -2255,9 +2267,6 @@ msgstr "Brak skonfigurowanego serwera DHCP dla tego interfejsu"
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr "Brak łańcuchów w tej tablicy"
-
 msgid "No files found"
 msgstr "Nie znaleziono plików"
 
@@ -2282,7 +2291,7 @@ msgstr "Lista pakietów nie jest dostępna"
 msgid "No password set!"
 msgstr "Nie ustawiono hasła!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "Brak zasad w tym łańcuchu"
 
 msgid "No scan results available yet..."
@@ -2335,6 +2344,9 @@ msgstr ""
 "Liczba buforowanych wpisów DNS (max wynosi 10000, 0 oznacza brak pamięci "
 "podręcznej)"
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2630,6 +2642,9 @@ msgstr "Pktw."
 msgid "Please enter your username and password."
 msgstr "Proszę wprowadź swój login i hasło."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr "Zasada"
 
@@ -2979,6 +2994,9 @@ msgstr ""
 "Ścieżki routingu pokazują routerowi przez który interfejs oraz którą bramę "
 "może skomunikować się z daną siecią lub komputerem."
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr ""
 "Sprawdź czy system plików nie zawiera błędów przed zamontowaniem urządzenia"
@@ -3103,6 +3121,9 @@ msgstr "Krótki Wstęp"
 msgid "Show current backup file list"
 msgstr "Pokaż aktualną listę plików do backupu"
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr "Wyłącz ten interfejs"
 
@@ -3124,6 +3145,9 @@ msgstr "Rozmiar (.ipk)"
 msgid "Size of DNS query cache"
 msgstr "Rozmiar pamięci podręcznej zapytań DNS"
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "Pomiń"
 
@@ -3238,6 +3262,9 @@ msgstr ""
 "niedynamicznych konfiguracji interfejsu, gdzie obsługiwane są tylko hosty z "
 "odpowiednim dzierżawami."
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Status"
 
@@ -3383,10 +3410,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3601,6 +3627,9 @@ msgstr "Synchronizacja czasu"
 msgid "Time Synchronization is not configured yet."
 msgstr "Synchronizacja czasu nie jest jeszcze skonfigurowana."
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Strefa czasowa"
 
@@ -3992,6 +4021,18 @@ msgstr ""
 "zaktualizuj go do wersji co najmniej 7 lub użyj innej przeglądarki, takiej "
 "jak Firefox, Opera czy Safari."
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "dowolny"
 
@@ -4111,6 +4152,9 @@ msgstr ""
 msgid "routed"
 msgstr "routowane"
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr "tryb serwera"
 
@@ -4150,6 +4194,9 @@ msgstr "tak"
 msgid "« Back"
 msgstr "« Wróć"
 
+#~ msgid "No chains in this table"
+#~ msgstr "Brak łańcuchów w tej tablicy"
+
 #~ msgid "Configuration files will be kept."
 #~ msgstr "Pliki konfiguracyjne zostaną zachowane."
 
index b77d32dfc1e674e7bfc4dc38212c63df81b9fbee..42f9d505d83c589eece9a8a755153cc87b016f27 100644 (file)
@@ -439,12 +439,12 @@ msgstr "Configuração da antena"
 msgid "Any zone"
 msgstr "Qualquer zona"
 
+msgid "Apply anyway"
+msgstr "Aplicar sem verificação"
+
 msgid "Apply request failed with status <code>%h</code>"
 msgstr "Pedido para aplicar falhou com o estado <code>%h</code>"
 
-msgid "Apply unchecked"
-msgstr "Aplicar sem verificação"
-
 msgid "Architecture"
 msgstr "Arquitetura"
 
@@ -744,6 +744,9 @@ msgstr "Coletando dados..."
 msgid "Command"
 msgstr "Comando"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "Configuração Comum"
 
@@ -1007,6 +1010,9 @@ msgstr "Desabilita a configuração do DNS"
 msgid "Disable Encryption"
 msgstr "Desabilitar Cifragem"
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr "Desabilitar esta rede"
 
@@ -1567,6 +1573,9 @@ msgstr ""
 "Ocultar <abbr title=\"Identificador de Conjunto de Serviços Estendidos"
 "\">ESSID</abbr>"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr "Equipamento"
 
@@ -2179,6 +2188,9 @@ msgstr ""
 "Taxa de Dados Atingível Máxima (<abbr title=\"Maximum Attainable Data Rate"
 "\">ATTNDR</abbr>)"
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Número máximo permitido de alocações DHCP ativas"
 
@@ -2355,9 +2367,6 @@ msgstr "Nenhum Servidor DHCP configurado para esta interface"
 msgid "No NAT-T"
 msgstr "Sem NAT-T"
 
-msgid "No chains in this table"
-msgstr "Nenhuma cadeira nesta tabela"
-
 msgid "No files found"
 msgstr "Nenhum arquivo encontrado"
 
@@ -2382,7 +2391,7 @@ msgstr "Nenhuma lista de pacotes disponível"
 msgid "No password set!"
 msgstr "Nenhuma senha definida!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "Sem regras nesta cadeia"
 
 msgid "No scan results available yet..."
@@ -2437,6 +2446,9 @@ msgstr "Nslookup"
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr "Número de entradas DNS em cache (máximo é 10000, 0 desabilita o cache)"
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2746,6 +2758,9 @@ msgstr "Pcts."
 msgid "Please enter your username and password."
 msgstr "Entre com o seu usuário e senha."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr "Política"
 
@@ -3107,6 +3122,9 @@ msgstr ""
 "As rotas especificam através de qual interface e roteador um certo destino "
 "podem ser alcançado."
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr ""
 "Execute a verificação do sistema de arquivos antes da montagem do dispositivo"
@@ -3235,6 +3253,9 @@ msgstr "Preâmbulo curto"
 msgid "Show current backup file list"
 msgstr "Mostra a lista atual de arquivos para a cópia de segurança"
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr "Desligar esta interface"
 
@@ -3256,6 +3277,9 @@ msgstr "Tamanho (.ipk)"
 msgid "Size of DNS query cache"
 msgstr "Tamanho do cache de consultas DNS"
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "Pular"
 
@@ -3375,6 +3399,9 @@ msgstr ""
 "configurações não dinâmicas onde um computador com a alocação correspondente "
 "é provido."
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Estado"
 
@@ -3524,10 +3551,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 "O dispositivo não foi alcançado em %d segundos depois de aplicar as "
 "configurações pendentes. Por questões de segurança, as configurações foram "
@@ -3750,6 +3776,9 @@ msgstr "Sincronização de horário"
 msgid "Time Synchronization is not configured yet."
 msgstr "A sincronização do horário ainda não está configurada."
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Fuso Horário"
 
@@ -4151,6 +4180,18 @@ msgstr ""
 "Por favor, atualiza para, ao menos, a versão 7 ou use outro navegador como o "
 "Firefox, Opera ou Safari."
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "qualquer"
 
@@ -4271,6 +4312,9 @@ msgstr "modo retransmissor"
 msgid "routed"
 msgstr "roteado"
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr "modo servidor"
 
@@ -4310,6 +4354,9 @@ msgstr "sim"
 msgid "« Back"
 msgstr "« Voltar"
 
+#~ msgid "No chains in this table"
+#~ msgstr "Nenhuma cadeira nesta tabela"
+
 #~ msgid "Configuration files will be kept."
 #~ msgstr "Os arquivos de configuração serão mantidos."
 
index 10c6846e472f855fe64c90334cb9dbc06ea4c642..394572c631eafbbd8931736d5c0f2d5cfb7503f9 100644 (file)
@@ -414,10 +414,10 @@ msgstr "Configuração das Antenas"
 msgid "Any zone"
 msgstr "Qualquer zona"
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -700,6 +700,9 @@ msgstr "A obter dados..."
 msgid "Command"
 msgstr "Comando"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "Configuração comum"
 
@@ -947,6 +950,9 @@ msgstr "Desativar configuração de DNS"
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1474,6 +1480,9 @@ msgstr ""
 "Ocultar <abbr title=\"Identificador de Conjunto de Serviços Estendidos"
 "\">ESSID</abbr>"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -2045,6 +2054,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Número máximo permitido de concessões DHCP ativas"
 
@@ -2219,9 +2231,6 @@ msgstr "Sem Servidor DHCP configurado nesta interface"
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr "Tabela sem chains"
-
 msgid "No files found"
 msgstr "Não foram encontrados ficheiros"
 
@@ -2246,7 +2255,7 @@ msgstr "Não há listas de pacotes disponiveis"
 msgid "No password set!"
 msgstr "Sem password definida!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "Sem regras nesta cadeia"
 
 msgid "No scan results available yet..."
@@ -2297,6 +2306,9 @@ msgstr "Nslookup"
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2587,6 +2599,9 @@ msgstr "Pkts."
 msgid "Please enter your username and password."
 msgstr "Insira o seu username e password."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr "Política"
 
@@ -2927,6 +2942,9 @@ msgstr ""
 "As rotas especificam através de que interfaces ou gateways podem ser "
 "alcançados determinadas redes ou hosts."
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr ""
 "Correr uma verificação do sistema de ficheiros antes de montar um dispositivo"
@@ -3044,6 +3062,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr "Mostrar lista ficheiros para backup"
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr "Desligar esta interface"
 
@@ -3065,6 +3086,9 @@ msgstr ""
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "Saltar"
 
@@ -3169,6 +3193,9 @@ msgid ""
 "configurations where only hosts with a corresponding lease are served."
 msgstr ""
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Status"
 
@@ -3307,10 +3334,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3511,6 +3537,9 @@ msgstr "Sincronização Horária"
 msgid "Time Synchronization is not configured yet."
 msgstr "A sincronização horária ainda não está configurada."
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Fuso Horário"
 
@@ -3889,6 +3918,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "qualquer"
 
@@ -4008,6 +4049,9 @@ msgstr ""
 msgid "routed"
 msgstr ""
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
@@ -4047,6 +4091,9 @@ msgstr "sim"
 msgid "« Back"
 msgstr "« Voltar"
 
+#~ msgid "No chains in this table"
+#~ msgstr "Tabela sem chains"
+
 #~ msgid "Configuration files will be kept."
 #~ msgstr "Os ficheiros de configuração serão mantidos."
 
index 3e8381d30b98072c3d837c86a48bfc53d4f283fe..e3bb7bb82ac321853d2125c3dea18abfe75eff38 100644 (file)
@@ -400,10 +400,10 @@ msgstr "Configurarea Antenei"
 msgid "Any zone"
 msgstr "Orice Zona"
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -676,6 +676,9 @@ msgstr "Colectez datele.."
 msgid "Command"
 msgstr "Comanda"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "Configurarea obisnuita"
 
@@ -918,6 +921,9 @@ msgstr "Dezactiveaza configuratia DNS"
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1423,6 +1429,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "Ascunde <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -1978,6 +1987,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -2150,9 +2162,6 @@ msgstr "Nici un server DHCP configurat pentru aceasta interfata"
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr ""
-
 msgid "No files found"
 msgstr "Nici un fisier gasit"
 
@@ -2177,7 +2186,7 @@ msgstr ""
 msgid "No password set!"
 msgstr "Nici o parola setata !"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr ""
 
 msgid "No scan results available yet..."
@@ -2228,6 +2237,9 @@ msgstr ""
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2512,6 +2524,9 @@ msgstr "Packete."
 msgid "Please enter your username and password."
 msgstr "Introdu utilizatorul si parola."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr ""
 
@@ -2848,6 +2863,9 @@ msgid ""
 "can be reached."
 msgstr ""
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr ""
 
@@ -2964,6 +2982,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr ""
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr "Opreste aceasta interfata"
 
@@ -2985,6 +3006,9 @@ msgstr ""
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr ""
 
@@ -3089,6 +3113,9 @@ msgid ""
 "configurations where only hosts with a corresponding lease are served."
 msgstr ""
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Status"
 
@@ -3221,10 +3248,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3391,6 +3417,9 @@ msgstr ""
 msgid "Time Synchronization is not configured yet."
 msgstr ""
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Fusul orar"
 
@@ -3759,6 +3788,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "oricare"
 
@@ -3875,6 +3916,9 @@ msgstr ""
 msgid "routed"
 msgstr "rutat"
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
index f62cd93a6beb0e4ef282d61362b57af5dcb44b90..d733a1a898567bba0372f879bb2530ca7377a23f 100644 (file)
@@ -3,11 +3,11 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: base\n"
 "POT-Creation-Date: 2010-05-09 01:01+0300\n"
-"PO-Revision-Date: 2018-09-05 21:48+0300\n"
+"PO-Revision-Date: 2018-10-25 19:04+0300\n"
 "Language-Team: http://cyber-place.ru\n"
 "MIME-Version: 1.0\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.7.1\n"
+"X-Generator: Poedit 2.2\n"
 "Last-Translator: Anton Kikin <a.kikin@tano-systems.com>\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
@@ -104,7 +104,7 @@ msgid ""
 "order of the resolvfile"
 msgstr ""
 "<abbr title=\"Система доменных имен\">DNS</abbr> сервера будут опрошены в "
-"порядке, определенном в resolvfile файле."
+"порядке, определенном в resolvfile файле"
 
 msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "<abbr title=\"Расширенный идентификатор обслуживания\">ESSID</abbr>"
@@ -222,10 +222,10 @@ msgid "Actions"
 msgstr "Действия"
 
 msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
-msgstr "Active <abbr title=\"Интернет протокол версии 4\">IPv4</abbr>-маршруты"
+msgstr "Активные <abbr title=\"Интернет протокол версии 4\">IPv4</abbr>-маршруты"
 
 msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
-msgstr "Active <abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-маршруты"
+msgstr "Активные <abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-маршруты"
 
 msgid "Active Connections"
 msgstr "Активные соединения"
@@ -244,10 +244,10 @@ msgstr "Добавить"
 
 msgid "Add local domain suffix to names served from hosts files"
 msgstr ""
-"Добавить локальный суффикс домена для имен из файла хостов (/etc/hosts)."
+"Добавить локальный суффикс домена для имен из файла хостов (/etc/hosts)"
 
 msgid "Add new interface..."
-msgstr "Добавить новый интерфейс"
+msgstr "Добавить новый интерфейс..."
 
 msgid "Additional Hosts files"
 msgstr "Дополнительный hosts файл"
@@ -286,7 +286,7 @@ msgid ""
 "Allocate IP addresses sequentially, starting from the lowest available "
 "address"
 msgstr ""
-"Выделять IP адреса последовательно, начинать с меньшего доступного адреса."
+"Выделять IP-адреса последовательно, начинать с меньшего доступного адреса"
 
 msgid "Allocate IP sequentially"
 msgstr "Выделять IP-адреса последовательно"
@@ -294,7 +294,7 @@ msgstr "Выделять IP-адреса последовательно"
 msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
 msgstr ""
 "Разрешить <abbr title=\"Secure Shell\">SSH</abbr> аутентификацию с помощью "
-"пароля."
+"пароля"
 
 msgid "Allow AP mode to disconnect STAs based on low ACK condition"
 msgstr ""
@@ -316,20 +316,20 @@ msgstr "Разрешить локальный хост"
 msgid "Allow remote hosts to connect to local SSH forwarded ports"
 msgstr ""
 "Разрешить удаленным хостам подключаться к локальным перенаправленным портам "
-"SSH."
+"SSH"
 
 msgid "Allow root logins with password"
 msgstr "Root входит по паролю"
 
 msgid "Allow the <em>root</em> user to login with password"
 msgstr ""
-"Разрешить пользователю <em>root</em> входить в систему с помощью пароля."
+"Разрешить пользователю <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-"
-"сервисов."
+"сервисов"
 
 msgid "Allowed IPs"
 msgstr "Разрешенные IP-адреса"
@@ -421,20 +421,19 @@ msgstr "Настройка антенн"
 msgid "Any zone"
 msgstr "Любая зона"
 
+msgid "Apply anyway"
+msgstr "Применить без проверки"
+
 msgid "Apply request failed with status <code>%h</code>"
 msgstr "Ошибка <code>%h</code> запроса на применение"
 
-msgid "Apply unchecked"
-msgstr "Применить без проверки"
-
 msgid "Architecture"
 msgstr "Архитектура"
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
 msgstr ""
-"Задайте часть данной длины, каждому публичному IPv6-префиксу этого "
-"интерфейса."
+"Задайте часть данной длины, каждому публичному IPv6-префиксу этого интерфейса"
 
 msgid "Assign interfaces..."
 msgstr "Назначить интерфейсы..."
@@ -478,23 +477,23 @@ msgstr "Автоматическая Homenet (HNCP)"
 msgid "Automatically check filesystem for errors before mounting"
 msgstr ""
 "Автоматическая проверка файловой системы раздела на ошибки, перед "
-"монтированием."
+"монтированием"
 
 msgid "Automatically mount filesystems on hotplug"
 msgstr ""
-"Автоматическое монтирование раздела, при подключении к системе во время ее "
-"работы, без выключения питания и остановки системы (hotplug)."
+"Автоматическое монтирование раздела, при подключении к системе во время её "
+"работы, без выключения питания и остановки системы (hotplug)"
 
 msgid "Automatically mount swap on hotplug"
 msgstr ""
-"Автоматическое монтирование swap-а при подключении к системе во время ее "
-"работы без выключения питания и остановки системы (hotplug)."
+"Автоматическое монтирование раздела подкачки при подключении к системе во время "
+"её работы без выключения питания и остановки системы (hotplug)"
 
 msgid "Automount Filesystem"
 msgstr "Hotplug раздела"
 
 msgid "Automount Swap"
-msgstr "Hotplug swap раздела"
+msgstr "Hotplug раздела подкачки"
 
 msgid "Available"
 msgstr "Доступно"
@@ -639,7 +638,7 @@ msgid "Changes have been reverted."
 msgstr "Изменения были возвращены назад."
 
 msgid "Changes the administrator password for accessing the device"
-msgstr "Изменить пароль администратора для доступа к устройству."
+msgstr "Изменить пароль администратора для доступа к устройству"
 
 msgid "Channel"
 msgstr "Канал"
@@ -666,7 +665,7 @@ msgid "Checksum"
 msgstr "Контрольная сумма"
 
 msgid "Choose mtdblock"
-msgstr ""
+msgstr "Выберите MTD раздел"
 
 msgid ""
 "Choose the firewall zone you want to assign to this interface. Select "
@@ -704,6 +703,8 @@ msgid ""
 "Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS "
 "FEATURE IS FOR PROFESSIONALS! )"
 msgstr ""
+"Нажмите \"Сохранить MTD раздел\" для скачивания образа указанного MTD "
+"раздела (ВНИМАНИЕ: ДАННЫЙ ФУНКЦИОНАЛ ТОЛЬКО ДЛЯ ОПЫТНЫХ ПОЛЬЗОВАТЕЛЕЙ)"
 
 msgid "Client"
 msgstr "Клиент"
@@ -716,7 +717,7 @@ msgid ""
 "persist connection"
 msgstr ""
 "Завершать неактивное соединение после заданного интервала (сек.), "
-"используйте значение 0 для удержания неактивного соединения."
+"используйте значение 0 для удержания неактивного соединения"
 
 msgid "Close list..."
 msgstr "Закрыть список..."
@@ -727,6 +728,9 @@ msgstr "Сбор данных..."
 msgid "Command"
 msgstr "Команда"
 
+msgid "Comment"
+msgstr "Комментарий"
+
 msgid "Common Configuration"
 msgstr "Общие настройки"
 
@@ -808,7 +812,7 @@ msgid "Critical"
 msgstr "Критическая ситуация"
 
 msgid "Cron Log Level"
-msgstr "Запись событий Cron"
+msgstr "Запись событий cron"
 
 msgid "Custom Interface"
 msgstr "Пользовательский интерфейс"
@@ -910,7 +914,7 @@ msgid "Default gateway"
 msgstr "Шлюз по умолчанию"
 
 msgid "Default is stateless + stateful"
-msgstr "Значение по умолчанию — 'stateless + stateful'."
+msgstr "Значение по умолчанию — 'stateless + stateful'"
 
 msgid "Default state"
 msgstr "Начальное состояние"
@@ -955,7 +959,7 @@ msgid "Device is rebooting..."
 msgstr "Перезагрузка..."
 
 msgid "Device unreachable!"
-msgstr "Устройство недоступно"
+msgstr "Устройство недоступно!"
 
 msgid "Device unreachable! Still waiting for device..."
 msgstr "Устройство недоступно! Ожидание устройства..."
@@ -985,6 +989,9 @@ msgstr "Отключить DNS настройки"
 msgid "Disable Encryption"
 msgstr "Отключить шифрование"
 
+msgid "Disable Inactivity Polling"
+msgstr "Отключить отслеживание неактивности клиентов"
+
 msgid "Disable this network"
 msgstr "Отключить данную сеть"
 
@@ -998,7 +1005,7 @@ msgid "Disassociate On Low Acknowledgement"
 msgstr "Не ассоциировать при низком подтверждении"
 
 msgid "Discard upstream RFC1918 responses"
-msgstr "Отбрасывать ответы внешней сети RFC1918."
+msgstr "Отбрасывать ответы внешней сети RFC1918"
 
 msgid "Disconnection attempt failed"
 msgstr "Ошибка попытки отключения"
@@ -1033,15 +1040,15 @@ msgstr ""
 "\">NAT</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 ""
 "Не перенаправлять запросы, которые не могут быть обработаны публичными DNS-"
-"серверами."
+"серверами"
 
 msgid "Do not forward reverse lookups for local networks"
-msgstr "Не перенаправлять обратные DNS-запросы для локальных сетей."
+msgstr "Не перенаправлять обратные DNS-запросы для локальных сетей"
 
 msgid "Domain required"
 msgstr "Требуется домен"
@@ -1057,7 +1064,7 @@ msgid ""
 "<abbr title=\"Domain Name System\">DNS</abbr>-Name"
 msgstr ""
 "Не перенаправлять <abbr title=\"Служба доменных имён\">DNS</abbr>-запросы "
-"без <abbr title=\"Служба доменных имён\">DNS</abbr>-имени."
+"без <abbr title=\"Служба доменных имён\">DNS</abbr>-имени"
 
 msgid "Down"
 msgstr "Вниз"
@@ -1069,7 +1076,7 @@ msgid "Download backup"
 msgstr "Загрузить резервную копию"
 
 msgid "Download mtdblock"
-msgstr ""
+msgstr "Скачать MTD раздел"
 
 msgid "Downstream SNR offset"
 msgstr "SNR offset внутренней сети"
@@ -1082,7 +1089,7 @@ msgid ""
 "and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
 msgstr ""
 "Dropbear — это <abbr title=\"Secure Shell\">SSH</abbr>-сервер со встроенным "
-"<abbr title=\"Secure Copy\">SCP</abbr>."
+"<abbr title=\"Secure Copy\">SCP</abbr>"
 
 msgid "Dual-Stack Lite (RFC6333)"
 msgstr "Dual-Stack Lite (RFC6333)"
@@ -1207,7 +1214,7 @@ msgstr ""
 "домену мобильности"
 
 msgid "Enables the Spanning Tree Protocol on this bridge"
-msgstr "Включает Spanning Tree Protocol на этом мосту."
+msgstr "Включает Spanning Tree Protocol на этом мосту"
 
 msgid "Encapsulation mode"
 msgstr "Режим инкапсуляции"
@@ -1316,9 +1323,9 @@ msgid ""
 "Find all currently attached filesystems and swap and replace configuration "
 "with defaults based on what was detected"
 msgstr ""
-"Найти все разделы включая swap и изменить config файл fstab с дефолтными "
-"знаÑ\87ениÑ\8fми Ð²Ñ\81еÑ\85 Ð¾Ð±Ð½Ð°Ñ\80Ñ\83женнÑ\8bÑ\85 Ñ\80азделов, Ñ\82.е. Ð²Ñ\8bполниÑ\82Ñ\8c ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ\83 'block detect "
-"> /etc/config/fstab'."
+"Найти все разделы (включая swap) и записать в конфигурационный файл "
+"инÑ\84оÑ\80маÑ\86иÑ\8e Ð¾Ð± Ð¾Ð±Ð½Ð°Ñ\80Ñ\83женнÑ\8bÑ\85 Ñ\80азделаÑ\85, Ñ\82.е. Ð²Ñ\8bполниÑ\82Ñ\8c ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ\83 'block detect > /"
+"etc/config/fstab'"
 
 msgid "Find and join network"
 msgstr "Найти и присоединиться к сети"
@@ -1348,7 +1355,7 @@ msgid "Firmware Version"
 msgstr "Версия прошивки"
 
 msgid "Fixed source port for outbound DNS queries"
-msgstr "Фиксированный порт для исходящих DNS-запросов."
+msgstr "Фиксированный порт для исходящих DNS-запросов"
 
 msgid "Flash Firmware"
 msgstr "Установить прошивку"
@@ -1451,7 +1458,7 @@ msgid "General Setup"
 msgstr "Основные настройки"
 
 msgid "General options for opkg"
-msgstr "Основные настройки opkg."
+msgstr "Основные настройки opkg"
 
 msgid "Generate Config"
 msgstr "Создать config"
@@ -1505,7 +1512,7 @@ msgid ""
 "Here you can configure the basic aspects of your device like its hostname or "
 "the timezone."
 msgstr ""
-"Ð\9dа Ñ\81Ñ\82Ñ\80аниÑ\86е вы можете настроить основные параметры вашего устройства, такие "
+"Ð\97деÑ\81Ñ\8c вы можете настроить основные параметры вашего устройства, такие "
 "как имя хоста или часовой пояс."
 
 msgid ""
@@ -1518,6 +1525,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "Скрыть <abbr title=\"Расширенный идентификатор сети\">ESSID</abbr>"
 
+msgid "Hide empty chains"
+msgstr "Скрыть пустые цепочки"
+
 msgid "Host"
 msgstr "Хост"
 
@@ -1615,10 +1625,10 @@ msgid "IPv6 Firewall"
 msgstr "Межсетевой экран IPv6"
 
 msgid "IPv6 Neighbours"
-msgstr "IPv6 Neighbours"
+msgstr "IPv6 соседи (neighbours)"
 
 msgid "IPv6 Settings"
-msgstr "IPv6 Настройки"
+msgstr "Настройки IPv6"
 
 msgid "IPv6 ULA-Prefix"
 msgstr "IPv6 ULA-Prefix"
@@ -1681,20 +1691,20 @@ msgid ""
 "If specified, mount the device by its UUID instead of a fixed device node"
 msgstr ""
 "Если выбрано, монтировать устройство используя его UUID, а не фиксированный "
-"файл устройства."
+"файл устройства"
 
 msgid ""
 "If specified, mount the device by the partition label instead of a fixed "
 "device node"
 msgstr ""
 "Если выбрано, монтировать устройство используя название его раздела, а не "
-"фиксированный файл устройства."
+"фиксированный файл устройства"
 
 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 "
@@ -1755,7 +1765,7 @@ msgid "Install"
 msgstr "Установить"
 
 msgid "Install iputils-traceroute6 for IPv6 traceroute"
-msgstr "Для IPv6, установите пакет iputils-traceroute6."
+msgstr "Для поддержки IPv6, установите пакет iputils-traceroute6"
 
 msgid "Install package %q"
 msgstr "Установить пакет %q"
@@ -1893,7 +1903,7 @@ msgid "Leasetime remaining"
 msgstr "Оставшееся время аренды"
 
 msgid "Leave empty to autodetect"
-msgstr "Оставьте поле пустым для автоопределения."
+msgstr "Оставьте поле пустым для автоопределения"
 
 msgid "Leave empty to use the current WAN address"
 msgstr "Оставьте пустым для использования текущего адреса WAN"
@@ -1930,7 +1940,7 @@ msgid ""
 "requests to"
 msgstr ""
 "Список <abbr title=\"Domain Name System\">DNS</abbr>-серверов для "
-"перенаправления запросов."
+"перенаправления запросов"
 
 msgid ""
 "List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
@@ -1959,13 +1969,13 @@ msgstr ""
 "R1KHs в MD, которые могут запросить PMK-R1 ключи."
 
 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 "Список хостов, поставляющих поддельные результаты домена NX."
+msgstr "Список хостов, поставляющих поддельные результаты домена NX"
 
 msgid "Listen Interfaces"
 msgstr "Интерфейс для входящих соединений"
@@ -1975,11 +1985,11 @@ msgstr "Порт для входящих соединений"
 
 msgid "Listen only on the given interface or, if unspecified, on all"
 msgstr ""
-"ЭÑ\82оÑ\82 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81 Ñ\80абоÑ\82аеÑ\82 Ñ\81 Ð²Ñ\85одÑ\8fÑ\89ими Ñ\81оединениÑ\8fми Ð¸Ð»Ð¸ если интерфейс не "
-"задан, Ð·Ð½Ð°Ñ\87иÑ\82 Ð²Ñ\81е Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81Ñ\8b."
+"Ð\9fÑ\80инимаÑ\82Ñ\8c Ð¿Ð¾Ð´ÐºÐ»Ñ\8eÑ\87ениÑ\8f Ñ\82олÑ\8cко Ð½Ð° Ñ\83казанном Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81е Ð¸Ð»Ð¸, если интерфейс не "
+"задан, Ð½Ð° Ð²Ñ\81еÑ\85 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81аÑ\85"
 
 msgid "Listening port for inbound DNS queries"
-msgstr "Порт для входящих DNS-запросов."
+msgstr "Порт для входящих DNS-запросов"
 
 msgid "Load"
 msgstr "Загрузка"
@@ -2020,12 +2030,12 @@ msgid ""
 msgstr ""
 "Согласно требованиям, имена соответствующие этому домену, никогда не "
 "передаются. И разрешаются только из файла DHCP (/etc/config/dhcp) или файла "
-"хостов (/etc/hosts)."
+"хостов (/etc/hosts)"
 
 msgid "Local domain suffix appended to DHCP names and hosts file entries"
 msgstr ""
 "Суффикс локального домена, который будет добавлен к DHCP-именам и записи "
-"файла хостов (/etc/hosts)."
+"файла хостов (/etc/hosts)"
 
 msgid "Local server"
 msgstr "Локальный сервер"
@@ -2035,7 +2045,7 @@ msgid ""
 "available"
 msgstr ""
 "Локализировать имя хоста в зависимости от запрашиваемой подсети, если "
-"доступно несколько IP-адресов."
+"доступно несколько IP-адресов"
 
 msgid "Localise queries"
 msgstr "Локализовывать запросы"
@@ -2110,14 +2120,17 @@ msgstr "Вручную"
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr "Max. Attainable Data Rate (ATTNDR)"
 
+msgid "Maximum allowed Listen Interval"
+msgstr "Максимально разрешенное значение интервала прослушивания клиента"
+
 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 "Максимально допустимый размер UDP пакетов-EDNS.0."
+msgstr "Максимально допустимый размер UDP пакетов EDNS.0"
 
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "Максимальное время ожидания готовности модема (секунды)"
@@ -2130,7 +2143,7 @@ msgstr ""
 "автоматического протокола/моста (br-, 6in4-, pppoe- etc.)"
 
 msgid "Maximum number of leased addresses."
-msgstr "Максимальное количество арендованных адресов."
+msgstr "Максимальное количество арендованных адресов"
 
 msgid "Mbit/s"
 msgstr "Мбит/с"
@@ -2190,20 +2203,20 @@ msgid "Mount Points"
 msgstr "Монтирование разделов"
 
 msgid "Mount Points - Mount Entry"
-msgstr "ТоÑ\87ки Ð¼Ð¾Ð½Ñ\82иÑ\80ованиÑ\8f â\80\94 Ð\9dаÑ\81Ñ\82Ñ\80ойка Ñ\80азделов"
+msgstr "ТоÑ\87ки Ð¼Ð¾Ð½Ñ\82иÑ\80ованиÑ\8f â\80\94 Ð\9dаÑ\81Ñ\82Ñ\80ойка Ñ\80аздела"
 
 msgid "Mount Points - Swap Entry"
-msgstr "Точки монтирования — Настройка Swap"
+msgstr "Точки монтирования — Настройка раздела подкачки"
 
 msgid ""
 "Mount Points define at which point a memory device will be attached to the "
 "filesystem"
 msgstr ""
 "Точки монтирования определяют, куда в файловой системе будут смонтированы "
-"разделы запоминающего устройства."
+"разделы запоминающего устройства"
 
 msgid "Mount filesystems not specifically configured"
-msgstr "Монтирование не подготовленного раздела."
+msgstr "Монтирование несконфигурированного раздела"
 
 msgid "Mount options"
 msgstr "Опции монтирования"
@@ -2212,7 +2225,7 @@ msgid "Mount point"
 msgstr "Точка монтирования"
 
 msgid "Mount swap not specifically configured"
-msgstr "Монтирование не подготовленного swap-а."
+msgstr "Монтирование несконфигурированного раздела подкачки"
 
 msgid "Mounted file systems"
 msgstr "Смонтированные разделы"
@@ -2286,9 +2299,6 @@ msgstr "DHCP-сервер не настроен для этого интерфе
 msgid "No NAT-T"
 msgstr "Без NAT-T"
 
-msgid "No chains in this table"
-msgstr "Нет цепочек в этой таблице"
-
 msgid "No files found"
 msgstr "Файлы не найдены"
 
@@ -2313,7 +2323,7 @@ msgstr "Список пакетов не доступен"
 msgid "No password set!"
 msgstr "Пароль не установлен!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "Нет правил в данной цепочке"
 
 msgid "No scan results available yet..."
@@ -2366,6 +2376,9 @@ msgstr ""
 "Количество кэшированных DNS записей (максимум — 10000, 0 — отключить "
 "кэширование)"
 
+msgid "Number of parallel threads used for compression"
+msgstr "Количество параллельных потоков используемых для компрессии"
+
 msgid "OK"
 msgstr "OK"
 
@@ -2516,7 +2529,7 @@ msgid "Override TTL"
 msgstr "Отвергать TTL"
 
 msgid "Override default interface name"
-msgstr "Назначить имя интерфейса по дефолту."
+msgstr "Назначить имя интерфейса по умолчанию"
 
 msgid "Override the gateway in DHCP responses"
 msgstr "Назначить шлюз в ответах DHCP"
@@ -2672,6 +2685,9 @@ msgstr "Пакетов"
 msgid "Please enter your username and password."
 msgstr "Введите логин и пароль."
 
+msgid "Please update package lists first"
+msgstr "Пожалуйста обновите список пакетов"
+
 msgid "Policy"
 msgstr "Политика"
 
@@ -2704,13 +2720,13 @@ msgid ""
 "ignore failures"
 msgstr ""
 "Предполагать, что узел недоступен после указанного количества ошибок "
-"получения эхо-пакета LCP, введите '0' для игнорирования ошибок."
+"получения эхо-пакета LCP, введите '0' для игнорирования ошибок"
 
 msgid "Prevent listening on these interfaces."
 msgstr "Запретить прослушивание этих интерфейсов."
 
 msgid "Prevents client-to-client communication"
-msgstr "Не позволяет клиентам обмениваться друг с другом информацией."
+msgstr "Не позволяет клиентам обмениваться друг с другом информацией"
 
 msgid "Private Key"
 msgstr "Приватный ключ"
@@ -2815,7 +2831,7 @@ msgid ""
 "Configuration Protocol\">DHCP</abbr>-Server"
 msgstr ""
 "Читать <code>/etc/ethers</code> для настройки <abbr title=\"Протокол "
-"динамической настройки узла\">DHCP</abbr>-сервера."
+"динамической настройки узла\">DHCP</abbr>-сервера"
 
 msgid ""
 "Really delete this interface? The deletion cannot be undone! You might lose "
@@ -2823,7 +2839,7 @@ msgid ""
 msgstr ""
 "Действительно удалить этот интерфейс? Удаление не может быть отменено! Вы "
 "можете потерять доступ к этому устройству, если вы подключены через данный "
-"интерфейс."
+"интерфейс"
 
 msgid ""
 "Really delete this wireless network? The deletion cannot be undone! You "
@@ -2868,7 +2884,7 @@ msgstr "Перезагрузка..."
 
 msgid "Reboots the operating system of your device"
 msgstr ""
-"Программная перезагрузка вашего устройства, т.е. выполнить команду 'reboot'."
+"Программная перезагрузка вашего устройства, т.е. выполнить команду 'reboot'"
 
 msgid "Receive"
 msgstr "Приём"
@@ -2926,7 +2942,7 @@ msgstr "Требовать"
 
 msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
 msgstr ""
-"ТÑ\80ебÑ\83еÑ\82Ñ\81Ñ\8f Ð´Ð»Ñ\8f Ð½ÐµÐºÐ¾Ñ\82оÑ\80Ñ\8bÑ\85 Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80овайдеÑ\80ов, Ð½Ð°Ð¿Ñ\80имеÑ\80 Ð³Ð»Ð°Ð²Ð° Ñ\81 DOCSIS 3."
+"ТÑ\80ебÑ\83еÑ\82Ñ\81Ñ\8f Ð´Ð»Ñ\8f Ð½ÐµÐºÐ¾Ñ\82оÑ\80Ñ\8bÑ\85 Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80овайдеÑ\80ов, Ð½Ð°Ð¿Ñ\80имеÑ\80 Ð¸Ñ\81полÑ\8cзÑ\83Ñ\8eÑ\89иÑ\85 DOCSIS 3"
 
 msgid "Required. Base64-encoded private key for this interface."
 msgstr "Требовать Приватный ключ в кодировке Base64 для этого интерфейса."
@@ -2955,7 +2971,7 @@ msgid ""
 "come from unsigned domains"
 msgstr ""
 "Требуется поддержка внешней сетью DNSSEC; убедитесь, что ответы "
-"неподписанного домена — действительно поступают от неподписанных доменов."
+"неподписанного домена действительно поступают от неподписанных доменов"
 
 msgid "Reset"
 msgstr "Сбросить"
@@ -3033,8 +3049,11 @@ msgstr ""
 "Маршрутизация служит для определения через, какой интерфейс и шлюз можно "
 "достичь определенного хоста или сети."
 
+msgid "Rule"
+msgstr "Правило"
+
 msgid "Run a filesystem check before mounting the device"
-msgstr "Проверять файловую систему перед монтированием раздела."
+msgstr "Проверять файловую систему перед монтированием раздела"
 
 msgid "Run filesystem check"
 msgstr "Проверить"
@@ -3070,10 +3089,10 @@ msgid "Save & Apply"
 msgstr "Сохранить и применить"
 
 msgid "Save mtdblock"
-msgstr ""
+msgstr "Сохранить MTD раздел"
 
 msgid "Save mtdblock contents"
-msgstr ""
+msgstr "Сохранить содержимое MTD раздела"
 
 msgid "Scan"
 msgstr "Поиск"
@@ -3091,7 +3110,7 @@ msgid "Section removed"
 msgstr "Строки удалены"
 
 msgid "See \"mount\" manpage for details"
-msgstr "Для подробной информации обратитесь к справке по 'mount' (man mount)."
+msgstr "Для подробной информации обратитесь к справке по 'mount' (man mount)"
 
 msgid ""
 "Select 'Force upgrade' to flash the image even if the image format check "
@@ -3107,7 +3126,7 @@ msgid ""
 "conjunction with failure threshold"
 msgstr ""
 "Отправлять эхо-пакеты LCP с указанным интервалом (секунды), эффективно "
-"только в сочетании с порогом ошибок."
+"только в сочетании с порогом ошибок"
 
 msgid "Separate Clients"
 msgstr "Разделять клиентов"
@@ -3154,6 +3173,9 @@ msgstr "Короткая преамбула"
 msgid "Show current backup file list"
 msgstr "Показать текущий список файлов резервной копии"
 
+msgid "Show empty chains"
+msgstr "Показать пустые цепочки"
+
 msgid "Shutdown this interface"
 msgstr "Выключить этот интерфейс"
 
@@ -3175,6 +3197,9 @@ msgstr "Размер (.ipk)"
 msgid "Size of DNS query cache"
 msgstr "Размер кэша DNS запроса"
 
+msgid "Size of the ZRam device in megabytes"
+msgstr "Размер ZRam в мегабайтах"
+
 msgid "Skip"
 msgstr "Пропустить"
 
@@ -3215,23 +3240,23 @@ msgid "Source"
 msgstr "Источник"
 
 msgid "Specifies the directory the device is attached to"
-msgstr "Папка, к которой монтируется раздел устройства."
+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, после которого узлы "
-"считаются отключенными."
+"считаются отключенными"
 
 msgid ""
 "Specifies the maximum amount of seconds after which hosts are presumed to be "
 "dead"
 msgstr ""
-"Максимальное количество секунд, после которого узлы считаются отключёнными."
+"Максимальное количество секунд, после которого узлы считаются отключёнными"
 
 msgid "Specify a TOS (Type of Service)."
 msgstr "Укажите TOS (Тип обслуживания)."
@@ -3292,6 +3317,9 @@ msgstr ""
 "имён DHCP-клиентам. Постоянная аренда также необходима для статических "
 "интерфейсов, в которых обслуживаются только клиенты с присвоенными адресами."
 
+msgid "Station inactivity limit"
+msgstr "Максимально допустимое время бездействия клиента"
+
 msgid "Status"
 msgstr "Состояние"
 
@@ -3308,10 +3336,10 @@ msgid "Suppress logging"
 msgstr "Подавить логирование"
 
 msgid "Suppress logging of the routine operation of these protocols"
-msgstr "Подавить логирование стандартной работы этих протоколов."
+msgstr "Подавить логирование стандартной работы этих протоколов"
 
 msgid "Swap"
-msgstr "Раздел подкачки (Swap)"
+msgstr "Раздел подкачки (swap)"
 
 msgid "Swap Entry"
 msgstr "Настройка config файла fstab (/etc/config/fstab)"
@@ -3438,10 +3466,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 "Устройство недоступно в течение %d секунд после применения изменений. Это "
 "привело к откату конфигурации из соображений безопасности. Если вы считаете, "
@@ -3475,13 +3502,13 @@ msgstr ""
 "начать процедуру обновления прошивки."
 
 msgid "The following changes have been reverted"
-msgstr "Ð\92аÑ\88и Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ð±Ñ\8bли Ð¾Ñ\82веÑ\80гнÑ\83Ñ\82Ñ\8b."
+msgstr "СледÑ\83Ñ\8eÑ\89ие Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ð±Ñ\8bли Ð¾Ñ\82веÑ\80гнÑ\83Ñ\82Ñ\8b"
 
 msgid "The following rules are currently active on this system."
 msgstr "На данном устройстве активны следующие правила."
 
 msgid "The given network name is not unique"
-msgstr "Заданное имя сети не является уникальным."
+msgstr "Заданное имя сети не является уникальным"
 
 msgid ""
 "The hardware is not multi-SSID capable and the existing configuration will "
@@ -3537,8 +3564,8 @@ msgid ""
 msgstr ""
 "Сейчас система перепрошивается.<br /> НЕ ОТКЛЮЧАЙТЕ ПИТАНИЕ УСТРОЙСТВА!<br /"
 "> Подождите несколько минут, прежде чем попытаться соединиться. Возможно, "
-"потребуется обновить адрес компьютера, чтобы снова подключиться к устройству, "
-"в зависимости от настроек."
+"потребуется обновить адрес компьютера, чтобы снова подключиться к "
+"устройству, в зависимости от настроек."
 
 msgid ""
 "The uploaded image file does not contain a supported format. Make sure that "
@@ -3564,7 +3591,7 @@ msgid ""
 "\"Physical Settings\" tab"
 msgstr ""
 "Устройство не назначено. Назначьте сетевое устройство на странице 'Настройки "
-"канала'."
+"канала'"
 
 msgid ""
 "There is no password set on this router. Please configure a root password to "
@@ -3600,7 +3627,7 @@ msgid ""
 "password if no update key has been configured"
 msgstr ""
 "Это либо \"Update Key\", настроенный для туннеля, либо пароль учетной "
-"записи, если ключ обновления не был настроен."
+"записи, если ключ обновления не был настроен"
 
 msgid ""
 "This is the content of /etc/rc.local. Insert your own commands here (in "
@@ -3614,22 +3641,22 @@ msgid ""
 "ends with <code>...:2/64</code>"
 msgstr ""
 "Это локальный адрес, назначенный туннельным брокером, обычно заканчивается "
-"на <code>...:2/64</code>."
+"на <code>...:2/64</code>"
 
 msgid ""
 "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
 "abbr> in the local network"
 msgstr ""
 "Это единственный <abbr title=\"Протокол динамической настройки узла\">DHCP</"
-"abbr>-сервер в локальной сети."
+"abbr>-сервер в локальной сети"
 
 msgid "This is the plain username for logging into the account"
-msgstr "Это просто имя пользователя, для входа в учетную запись."
+msgstr "Это просто имя пользователя, для входа в учетную запись"
 
 msgid ""
 "This is the prefix routed to you by the tunnel broker for use by clients"
 msgstr ""
-"Это префикс, направлен вам брокером туннелей для использования клиентами."
+"Это префикс, направлен вам брокером туннелей для использования клиентами"
 
 msgid "This is the system crontab in which scheduled tasks can be defined."
 msgstr ""
@@ -3638,7 +3665,7 @@ msgstr ""
 
 msgid ""
 "This is usually the address of the nearest PoP operated by the tunnel broker"
-msgstr "Это адрес ближайшей точки присутствия туннельного брокера."
+msgstr "Это адрес ближайшей точки присутствия туннельного брокера"
 
 msgid ""
 "This list gives an overview over currently running system processes and "
@@ -3658,6 +3685,9 @@ msgstr "Синхронизация времени"
 msgid "Time Synchronization is not configured yet."
 msgstr "Синхронизация времени ещё не настроена."
 
+msgid "Time interval for rekeying GTK"
+msgstr "Интервал регенерации ключей GTK"
+
 msgid "Timezone"
 msgstr "Часовой пояс"
 
@@ -3969,7 +3999,7 @@ msgid "Waiting for command to complete..."
 msgstr "Ожидание завершения выполнения команды..."
 
 msgid "Waiting for configuration to be applied… %ds"
-msgstr "Ожидание применения конфигурации... %d сек."
+msgstr "Ожидание применения конфигурации... %d сек"
 
 msgid "Waiting for device..."
 msgstr "Ожидание подключения устройства..."
@@ -3985,7 +4015,9 @@ msgstr ""
 msgid ""
 "When using a PSK, the PMK can be generated locally without inter AP "
 "communications"
-msgstr "При использовании PSK, PMK может быть создан локально, без AP в связи."
+msgstr ""
+"При использовании PSK, PMK может быть создан локально без коммуникации "
+"AP между собой"
 
 msgid "Width"
 msgstr "Ширина"
@@ -4024,7 +4056,7 @@ msgid "Wireless network is enabled"
 msgstr "Беспроводная сеть включена"
 
 msgid "Write received DNS requests to syslog"
-msgstr "Записывать полученные DNS-запросы в системный журнал."
+msgstr "Записывать полученные DNS-запросы в системный журнал"
 
 msgid "Write system log to file"
 msgstr "Записывать системные события в файл"
@@ -4054,6 +4086,18 @@ msgstr ""
 "Обновите его до версии 7 или используйте другой браузер, например Firefox, "
 "Opera или Safari."
 
+msgid "ZRam Compression Algorithm"
+msgstr "Алгоритм компрессии ZRam"
+
+msgid "ZRam Compression Streams"
+msgstr "Потоки компрессии ZRam"
+
+msgid "ZRam Settings"
+msgstr "Настройки ZRam"
+
+msgid "ZRam Size"
+msgstr "Размер ZRam"
+
 msgid "any"
 msgstr "любой"
 
@@ -4073,7 +4117,7 @@ msgid "create:"
 msgstr "создать:"
 
 msgid "creates a bridge over specified interface(s)"
-msgstr "Создаёт мост для выбранных сетевых интерфейсов."
+msgstr "Создаёт мост для выбранных сетевых интерфейсов"
 
 msgid "dB"
 msgstr "дБ"
@@ -4095,7 +4139,7 @@ msgid ""
 "abbr>-leases will be stored"
 msgstr ""
 "Файл, где хранятся арендованные <abbr title=\"Протокол динамической "
-"настройки узла\">DHCP</abbr>-адреса."
+"настройки узла\">DHCP</abbr>-адреса"
 
 msgid "forward"
 msgstr "перенаправить"
@@ -4128,7 +4172,7 @@ msgid "kbit/s"
 msgstr "кбит/с"
 
 msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
-msgstr "Локальный <abbr title=\"Служба доменных имён\">DNS</abbr>-файл."
+msgstr "Локальный <abbr title=\"Служба доменных имён\">DNS</abbr>-файл"
 
 msgid "minutes"
 msgstr "минут(ы)"
@@ -4172,6 +4216,9 @@ msgstr "режим передачи"
 msgid "routed"
 msgstr "маршрутизируемый"
 
+msgid "sec"
+msgstr "секунды"
+
 msgid "server mode"
 msgstr "режим сервера"
 
@@ -4210,85 +4257,3 @@ msgstr "да"
 
 msgid "« Back"
 msgstr "« Назад"
-
-#~ msgid "Configuration files will be kept."
-#~ msgstr "Config файлы будут сохранены."
-
-#~ msgid "Note: Configuration files will be erased."
-#~ msgstr "Внимание: config файлы будут удалены."
-
-#~ msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-#~ msgstr "<abbr title='Парный: %s / Групповой: %s'>%s - %s</abbr>"
-
-#~ msgid "Activate this network"
-#~ msgstr "Активировать эту сеть"
-
-#~ msgid "Hermes 802.11b Wireless Controller"
-#~ msgstr "Беспроводной 802.11b контроллер Hermes"
-
-#~ msgid "Interface is shutting down..."
-#~ msgstr "Интерфейс отключается..."
-
-#~ msgid "Interface reconnected"
-#~ msgstr "Интерфейс переподключен"
-
-#~ msgid "Interface shut down"
-#~ msgstr "Интерфейс отключен"
-
-#~ msgid "Prism2/2.5/3 802.11b Wireless Controller"
-#~ msgstr "Беспроводной 802.11b контроллер Prism2/2.5/3"
-
-#~ msgid "RaLink 802.11%s Wireless Controller"
-#~ msgstr "Беспроводной 802.11%s контроллер RaLink"
-
-#~ msgid ""
-#~ "Really shutdown interface \"%s\"? You might lose access to this device if "
-#~ "you are connected via this interface."
-#~ msgstr ""
-#~ "Действительно отключить интерфейс \"%s\"? Вы можете потерять доступ к "
-#~ "этому устройству, если вы подключены через этот интерфейс."
-
-#~ msgid "Reconnecting interface"
-#~ msgstr "Интерфейс переподключается"
-
-#~ msgid "Shutdown this network"
-#~ msgstr "Выключить эту сеть"
-
-#~ msgid "Wireless restarted"
-#~ msgstr "Беспроводная сеть перезапущена"
-
-#~ msgid "Wireless shut down"
-#~ msgstr "Выключение беспроводной сети"
-
-#~ msgid "DHCP Leases"
-#~ msgstr "Аренды DHCP"
-
-#~ msgid "DHCPv6 Leases"
-#~ msgstr "Аренды DHCPv6"
-
-#~ msgid ""
-#~ "Really delete this interface? The deletion cannot be undone! You might "
-#~ "lose access to this device if you are connected via this interface."
-#~ msgstr ""
-#~ "Действительно удалить этот интерфейс? Удаление не может быть отменено!"
-#~ "\\nВы можете потерять доступ к этому устройству, если вы подключены через "
-#~ "этот интерфейс."
-
-#~ msgid ""
-#~ "Really shut down network? You might lose access to this device if you are "
-#~ "connected via this interface."
-#~ msgstr ""
-#~ "Действительно отключить сеть? Вы можете потерять доступ к этому "
-#~ "устройству, если вы подключены через этот интерфейс."
-
-#~ msgid "Sort"
-#~ msgstr "Сортировка"
-
-#~ msgid "help"
-#~ msgstr "помощь"
-
-#~ msgid "IPv4 WAN Status"
-#~ msgstr "Состояние IPv4 WAN"
-
-#~ msgid "IPv6 WAN Status"
-#~ msgstr "Состояние IPv6 WAN"
index 7a872fed3de0cc05b22e2bc3cd030a71d1b554ba..c944c85ec91c065a8e7cd3d4649db0ebf4902b3d 100644 (file)
@@ -386,10 +386,10 @@ msgstr ""
 msgid "Any zone"
 msgstr ""
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -659,6 +659,9 @@ msgstr ""
 msgid "Command"
 msgstr ""
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr ""
 
@@ -899,6 +902,9 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1401,6 +1407,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr ""
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -1953,6 +1962,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -2125,9 +2137,6 @@ msgstr ""
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr ""
-
 msgid "No files found"
 msgstr ""
 
@@ -2152,7 +2161,7 @@ msgstr ""
 msgid "No password set!"
 msgstr ""
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr ""
 
 msgid "No scan results available yet..."
@@ -2203,6 +2212,9 @@ msgstr ""
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr ""
 
@@ -2487,6 +2499,9 @@ msgstr ""
 msgid "Please enter your username and password."
 msgstr ""
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr ""
 
@@ -2821,6 +2836,9 @@ msgid ""
 "can be reached."
 msgstr ""
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr ""
 
@@ -2936,6 +2954,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr ""
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr ""
 
@@ -2957,6 +2978,9 @@ msgstr ""
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr ""
 
@@ -3061,6 +3085,9 @@ msgid ""
 "configurations where only hosts with a corresponding lease are served."
 msgstr ""
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr ""
 
@@ -3193,10 +3220,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3361,6 +3387,9 @@ msgstr ""
 msgid "Time Synchronization is not configured yet."
 msgstr ""
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr ""
 
@@ -3727,6 +3756,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr ""
 
@@ -3843,6 +3884,9 @@ msgstr ""
 msgid "routed"
 msgstr ""
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
index fb0aaaa9a82a72ed82af3ed06234c468db666aaa..53f929c3f9536d267296fef09a28c431bfc0095c 100644 (file)
@@ -397,10 +397,10 @@ msgstr "Konfiguration av antenn"
 msgid "Any zone"
 msgstr "Någon zon"
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -673,6 +673,9 @@ msgstr "Samlar in data..."
 msgid "Command"
 msgstr "Kommando"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "Vanlig konfiguration"
 
@@ -915,6 +918,9 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr "Inaktivera kryptering"
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1421,6 +1427,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "Göm <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr "Värd"
 
@@ -1974,6 +1983,9 @@ msgstr "Manuell"
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -2146,9 +2158,6 @@ msgstr "Det finns ingen DHCP-server inställd för det här gränssnittet"
 msgid "No NAT-T"
 msgstr "Ingen NAT-T"
 
-msgid "No chains in this table"
-msgstr "Inga kedjor i den här tabellen"
-
 msgid "No files found"
 msgstr "Inga filer hittades"
 
@@ -2173,7 +2182,7 @@ msgstr "Ingen paketlista tillgänglig"
 msgid "No password set!"
 msgstr "Inget lösenord inställt!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "Inga regler i den här kedjan"
 
 msgid "No scan results available yet..."
@@ -2224,6 +2233,9 @@ msgstr "Nslookup"
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2508,6 +2520,9 @@ msgstr "Pkt."
 msgid "Please enter your username and password."
 msgstr "Vänligen ange ditt användarnamn och lösenord."
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr ""
 
@@ -2844,6 +2859,9 @@ msgid ""
 "can be reached."
 msgstr ""
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr "Kör en filsystemskontroll innan enheten monteras"
 
@@ -2959,6 +2977,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr ""
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr "Stäng ner det här gränssnittet"
 
@@ -2980,6 +3001,9 @@ msgstr "Storlek (.ipk)"
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "Hoppa över"
 
@@ -3084,6 +3108,9 @@ msgid ""
 "configurations where only hosts with a corresponding lease are served."
 msgstr ""
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Status"
 
@@ -3216,10 +3243,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3386,6 +3412,9 @@ msgstr "Synkronisering av tid"
 msgid "Time Synchronization is not configured yet."
 msgstr "Synkronisering av tid är inte inställd än."
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Tidszon"
 
@@ -3760,6 +3789,18 @@ msgstr ""
 "Vänligen uppgradera den till minst version 7 eller använd en annan "
 "webbläsare till exempel Firefox, Opera eller Safari."
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "något"
 
@@ -3876,6 +3917,9 @@ msgstr "relä-läge"
 msgid "routed"
 msgstr ""
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr "server-läge"
 
@@ -3915,6 +3959,9 @@ msgstr "ja"
 msgid "« Back"
 msgstr "« Bakåt"
 
+#~ msgid "No chains in this table"
+#~ msgstr "Inga kedjor i den här tabellen"
+
 #~ msgid "Configuration files will be kept."
 #~ msgstr "Konfigurationsfiler kommer att behållas."
 
index cb1008a8e017c950e48b971720389204dcd021a2..3424eee5060814ee979123d460424ff18662b645 100644 (file)
@@ -379,10 +379,10 @@ msgstr ""
 msgid "Any zone"
 msgstr ""
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -652,6 +652,9 @@ msgstr ""
 msgid "Command"
 msgstr ""
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr ""
 
@@ -892,6 +895,9 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1394,6 +1400,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr ""
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -1946,6 +1955,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -2118,9 +2130,6 @@ msgstr ""
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr ""
-
 msgid "No files found"
 msgstr ""
 
@@ -2145,7 +2154,7 @@ msgstr ""
 msgid "No password set!"
 msgstr ""
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr ""
 
 msgid "No scan results available yet..."
@@ -2196,6 +2205,9 @@ msgstr ""
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr ""
 
@@ -2480,6 +2492,9 @@ msgstr ""
 msgid "Please enter your username and password."
 msgstr ""
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr ""
 
@@ -2814,6 +2829,9 @@ msgid ""
 "can be reached."
 msgstr ""
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr ""
 
@@ -2929,6 +2947,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr ""
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr ""
 
@@ -2950,6 +2971,9 @@ msgstr ""
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr ""
 
@@ -3054,6 +3078,9 @@ msgid ""
 "configurations where only hosts with a corresponding lease are served."
 msgstr ""
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr ""
 
@@ -3186,10 +3213,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3354,6 +3380,9 @@ msgstr ""
 msgid "Time Synchronization is not configured yet."
 msgstr ""
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr ""
 
@@ -3720,6 +3749,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr ""
 
@@ -3836,6 +3877,9 @@ msgstr ""
 msgid "routed"
 msgstr ""
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
index cd3688ba56c350c39306c7cee971fc53f1cac38b..769619f5d59a3a23e111aec0c8f871f8b50a8450 100644 (file)
@@ -400,10 +400,10 @@ msgstr "Anten Yapılandırması"
 msgid "Any zone"
 msgstr ""
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -675,6 +675,9 @@ msgstr ""
 msgid "Command"
 msgstr ""
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr ""
 
@@ -917,6 +920,9 @@ msgstr "DNS kurulumunu devre dışı"
 msgid "Disable Encryption"
 msgstr "Şifrelemeyi Devre Dışı"
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr "Ağ devre dışı"
 
@@ -1419,6 +1425,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr ""
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -1971,6 +1980,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -2143,9 +2155,6 @@ msgstr ""
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr ""
-
 msgid "No files found"
 msgstr ""
 
@@ -2170,7 +2179,7 @@ msgstr ""
 msgid "No password set!"
 msgstr ""
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr ""
 
 msgid "No scan results available yet..."
@@ -2221,6 +2230,9 @@ msgstr ""
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr ""
 
@@ -2505,6 +2517,9 @@ msgstr ""
 msgid "Please enter your username and password."
 msgstr ""
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr ""
 
@@ -2839,6 +2854,9 @@ msgid ""
 "can be reached."
 msgstr ""
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr "Cihazı bağlamadan önce bir dosya sistemi kontrolü yapın"
 
@@ -2954,6 +2972,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr ""
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr ""
 
@@ -2975,6 +2996,9 @@ msgstr "Boyut (.ipk)"
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "Atla"
 
@@ -3079,6 +3103,9 @@ msgid ""
 "configurations where only hosts with a corresponding lease are served."
 msgstr ""
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Durum"
 
@@ -3211,10 +3238,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3379,6 +3405,9 @@ msgstr ""
 msgid "Time Synchronization is not configured yet."
 msgstr ""
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr ""
 
@@ -3747,6 +3776,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "herhangi"
 
@@ -3863,6 +3904,9 @@ msgstr "anahtarlama modu"
 msgid "routed"
 msgstr "yönlendirildi"
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr "sunucu modu"
 
index 2f068298b44ae7ac387046aeb6d1a929a3f068be..fc0709605cf29d2cf9286e0dc3cdb6044a86a7b3 100644 (file)
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
-"PO-Revision-Date: 2018-09-20 02:55+0300\n"
+"PO-Revision-Date: 2018-10-14 18:10+0300\n"
 "Last-Translator: Yurii <yuripet@gmail.com>\n"
 "Language-Team: none\n"
 "Language: uk\n"
@@ -436,12 +436,12 @@ msgstr "Конфигурація антени"
 msgid "Any zone"
 msgstr "Будь-яка зона"
 
+msgid "Apply anyway"
+msgstr "Все одно застосувати"
+
 msgid "Apply request failed with status <code>%h</code>"
 msgstr "Сталася помилка запиту на застосування зі статусом <code>%h</code>"
 
-msgid "Apply unchecked"
-msgstr "Застосування не позначено"
-
 msgid "Architecture"
 msgstr "Архітектура"
 
@@ -734,6 +734,9 @@ msgstr "Збирання даних..."
 msgid "Command"
 msgstr "Команда"
 
+msgid "Comment"
+msgstr "Примітка"
+
 msgid "Common Configuration"
 msgstr "Загальна конфігурація"
 
@@ -995,6 +998,9 @@ msgstr "Вимкнути налаштування DNS"
 msgid "Disable Encryption"
 msgstr "Вимкнути шифрування"
 
+msgid "Disable Inactivity Polling"
+msgstr "Вимкнути опитування неактивності"
+
 msgid "Disable this network"
 msgstr "Вимкнути цю мережу"
 
@@ -1533,6 +1539,9 @@ msgstr ""
 "Приховати <abbr title=\"Extended Service Set Identifier — ідентифікатор "
 "розширеної служби послуг\">ESSID</abbr>"
 
+msgid "Hide empty chains"
+msgstr "Приховати порожні ланцюжки"
+
 msgid "Host"
 msgstr "Вузол"
 
@@ -2136,6 +2145,9 @@ msgstr "Вручну"
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr "Макс. досяжна швидкість передачі даних (ATTNDR)"
 
+msgid "Maximum allowed Listen Interval"
+msgstr "Максимальний дозволений інтервал прослуховування"
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "Максимально допустима кількість активних оренд DHCP"
 
@@ -2312,9 +2324,6 @@ msgstr "Немає DHCP-сервера, налаштованого для цьо
 msgid "No NAT-T"
 msgstr "Немає NAT-T"
 
-msgid "No chains in this table"
-msgstr "У цій таблиці немає ланцюжків"
-
 msgid "No files found"
 msgstr "Файли не знайдено"
 
@@ -2339,8 +2348,8 @@ msgstr "Немає доступних списків пакетів"
 msgid "No password set!"
 msgstr "Пароль не встановлено!"
 
-msgid "No rules in this chain"
-msgstr "У цьму ланцюжку нема правил"
+msgid "No rules in this chain."
+msgstr "У цьму ланцюжку нема правил."
 
 msgid "No scan results available yet..."
 msgstr "Результати сканування наразі недоступні"
@@ -2390,6 +2399,9 @@ msgstr "DNS-запит"
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr "Кількість кешованих записів DNS (макс. - 10000, 0 - без кешування)"
 
+msgid "Number of parallel threads used for compression"
+msgstr "Кількість паралельних потоків, що використовуються для стиснення"
+
 msgid "OK"
 msgstr "OK"
 
@@ -2700,6 +2712,9 @@ msgstr "пакетів"
 msgid "Please enter your username and password."
 msgstr "Введіть ім’я користувача і пароль."
 
+msgid "Please update package lists first"
+msgstr "Спочатку оновіть списки пакетів"
+
 msgid "Policy"
 msgstr "Політика"
 
@@ -3052,6 +3067,9 @@ msgstr ""
 "Маршрути визначають через який інтерфейс і шлюз можна досягнути певного "
 "вузла або мережі."
 
+msgid "Rule"
+msgstr "Правило"
+
 msgid "Run a filesystem check before mounting the device"
 msgstr "Виконати перевірку файлової системи перед монтуванням пристрою"
 
@@ -3174,6 +3192,9 @@ msgstr "Коротка преамбула"
 msgid "Show current backup file list"
 msgstr "Показати поточний список файлів резервного копіювання"
 
+msgid "Show empty chains"
+msgstr "Показати порожні ланцюжки"
+
 msgid "Shutdown this interface"
 msgstr "Вимкнути цей інтерфейс"
 
@@ -3195,6 +3216,9 @@ msgstr "Розмір (.ipk)"
 msgid "Size of DNS query cache"
 msgstr "Розмір кешу запитів DNS"
 
+msgid "Size of the ZRam device in megabytes"
+msgstr "Розмір пристрою ZRam у мегабайтах"
+
 msgid "Skip"
 msgstr "Пропустити"
 
@@ -3310,6 +3334,9 @@ msgstr ""
 "конфігурацій інтерфейсів, коли обслуговуються тільки вузли з відповідною "
 "орендою."
 
+msgid "Station inactivity limit"
+msgstr "Обмеження бездіяльності станції"
+
 msgid "Status"
 msgstr "Стан"
 
@@ -3457,15 +3484,14 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 "Пристрій недосяжний протягом %d секунд після застосування очікуючих змін, що "
 "призвело до відкочування конфигурації з міркувань безпеки. Проте, якщо ви "
-"впевненÑ\96, Ñ\89о Ð·Ð¼Ñ\96ни ÐºÐ¾Ð½Ñ\84Ñ\96гÑ\83Ñ\80аÑ\86Ñ\96Ñ\97 Ñ\94 Ð¿Ñ\80авилÑ\8cними, Ð·Ð°Ñ\81Ñ\82оÑ\81Ñ\83йÑ\82е Ð½ÐµÐ¿ÐµÑ\80евÑ\96Ñ\80енÑ\83 "
-"конÑ\84Ñ\96гÑ\83Ñ\80аÑ\86Ñ\96Ñ\8e. Крім того, ви можете відхилити це попередження та "
+"впевненÑ\96, Ñ\89о Ð·Ð¼Ñ\96ни ÐºÐ¾Ð½Ñ\84Ñ\96гÑ\83Ñ\80аÑ\86Ñ\96Ñ\97 Ñ\94 Ð¿Ñ\80авилÑ\8cними, Ð²Ñ\81е Ð¾Ð´Ð½Ð¾ Ð¿Ñ\80одовжÑ\96Ñ\82Ñ\8c "
+"заÑ\81Ñ\82оÑ\81Ñ\83ваннÑ\8f. Крім того, ви можете відхилити це попередження та "
 "відредагувати зміни, перш ніж намагатись застосувати їх знову, або ж "
 "скасувати всі очікуючі зміни, щоб зберегти поточну робочу конфігурацію."
 
@@ -3681,6 +3707,9 @@ msgstr "Синхронізація часу"
 msgid "Time Synchronization is not configured yet."
 msgstr "Синхронізацію часу не налаштовано."
 
+msgid "Time interval for rekeying GTK"
+msgstr "Інтервал часу для зміни ключа GTK"
+
 msgid "Timezone"
 msgstr "Часовий пояс"
 
@@ -4074,6 +4103,18 @@ msgstr ""
 "Поновіть його, принаймні, до версії 7 або скористайтесь іншим браузером, "
 "таким як Firefox, Opera або Safari."
 
+msgid "ZRam Compression Algorithm"
+msgstr "Алгоритм стиснення ZRam"
+
+msgid "ZRam Compression Streams"
+msgstr "Потоки стиснення ZRam"
+
+msgid "ZRam Settings"
+msgstr "Налаштування ZRam"
+
+msgid "ZRam Size"
+msgstr "Розмір ZRam"
+
 msgid "any"
 msgstr "будь-який"
 
@@ -4194,6 +4235,9 @@ msgstr "режим реле"
 msgid "routed"
 msgstr "спрямовано"
 
+msgid "sec"
+msgstr "с"
+
 msgid "server mode"
 msgstr "режим сервера"
 
index 217ca98fbd8167fd59af5cef9bb219a4a693903c..83566f27b126c4d272728c00827f6ec48da784f0 100644 (file)
@@ -393,10 +393,10 @@ msgstr ""
 msgid "Any zone"
 msgstr ""
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -666,6 +666,9 @@ msgstr ""
 msgid "Command"
 msgstr "Lệnh"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr ""
 
@@ -908,6 +911,9 @@ msgstr ""
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1421,6 +1427,9 @@ msgstr ""
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "Giấu <abbr title=\"Chế độ mở rộng đặt Identifier\">ESSID</abbr>"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -1981,6 +1990,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr ""
 
@@ -2155,9 +2167,6 @@ msgstr ""
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr "Không có chuỗi trong bảng này"
-
 msgid "No files found"
 msgstr ""
 
@@ -2182,7 +2191,7 @@ msgstr ""
 msgid "No password set!"
 msgstr ""
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "Không có quy luật trong chuỗi này"
 
 msgid "No scan results available yet..."
@@ -2233,6 +2242,9 @@ msgstr ""
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "OK "
 
@@ -2523,6 +2535,9 @@ msgstr ""
 msgid "Please enter your username and password."
 msgstr "Nhập tên và mật mã"
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr "Chính sách"
 
@@ -2861,6 +2876,9 @@ msgstr ""
 "Routes chỉ định trên giao diện và cổng một host nhất định hay network được "
 "tiếp cận."
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr ""
 
@@ -2976,6 +2994,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr ""
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr ""
 
@@ -2997,6 +3018,9 @@ msgstr ""
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr ""
 
@@ -3101,6 +3125,9 @@ msgid ""
 "configurations where only hosts with a corresponding lease are served."
 msgstr ""
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "Tình trạng"
 
@@ -3233,10 +3260,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3416,6 +3442,9 @@ msgstr ""
 msgid "Time Synchronization is not configured yet."
 msgstr ""
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "Múi giờ "
 
@@ -3786,6 +3815,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr ""
 
@@ -3904,6 +3945,9 @@ msgstr ""
 msgid "routed"
 msgstr ""
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
@@ -3943,6 +3987,9 @@ msgstr ""
 msgid "« Back"
 msgstr ""
 
+#~ msgid "No chains in this table"
+#~ msgstr "Không có chuỗi trong bảng này"
+
 #~ msgid "Backup / Restore"
 #~ msgstr "Backup/ Restore"
 
index 2c7bdcc195afc87fb4de7aaafaa03849f3c2639e..a0534db70e2c2d1f8ba2e1de957cf0c480870bd8 100644 (file)
@@ -8,7 +8,7 @@ msgstr ""
 "Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"PO-Revision-Date: 2018-08-07 14:59+0800\n"
+"PO-Revision-Date: 2018-08-18 12:39+0800\n"
 "X-Generator: Gtranslator 2.91.7\n"
 
 msgid "%.1f dB"
@@ -239,7 +239,7 @@ msgid "Add local domain suffix to names served from hosts files"
 msgstr "添加本地域名后缀到 HOSTS 文件中的域名"
 
 msgid "Add new interface..."
-msgstr "添加新接口..."
+msgstr "添加新接口"
 
 msgid "Additional Hosts files"
 msgstr "额外的 HOSTS 文件"
@@ -400,12 +400,12 @@ msgstr "天线配置"
 msgid "Any zone"
 msgstr "任意区域"
 
+msgid "Apply anyway"
+msgstr "强制应用"
+
 msgid "Apply request failed with status <code>%h</code>"
 msgstr "应用请求失败,状态 <code>%h</code>"
 
-msgid "Apply unchecked"
-msgstr "强制应用"
-
 msgid "Architecture"
 msgstr "架构"
 
@@ -414,7 +414,7 @@ msgid ""
 msgstr "将每个公共 IPv6 前缀的给定长度部分分配给此接口"
 
 msgid "Assign interfaces..."
-msgstr "分配接口..."
+msgstr "分配接口"
 
 msgid ""
 "Assign prefix parts using this hexadecimal subprefix ID for this interface."
@@ -677,6 +677,9 @@ msgstr "正在收集数据…"
 msgid "Command"
 msgstr "命令"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "一般配置"
 
@@ -927,6 +930,9 @@ msgstr "停用 DNS 设定"
 msgid "Disable Encryption"
 msgstr "禁用加密"
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr "禁用此网络"
 
@@ -998,7 +1004,7 @@ msgstr ""
 "不转发没有 <abbr title=\"Domain Name System\">DNS</abbr> 名称的解析请求"
 
 msgid "Down"
-msgstr "向下"
+msgstr "下移"
 
 msgid "Download and install package"
 msgstr "下载并安装软件包"
@@ -1023,7 +1029,7 @@ msgstr ""
 "\"Secure Copy\">SCP</abbr> 服务"
 
 msgid "Dual-Stack Lite (RFC6333)"
-msgstr "Dual-Stack Lite (RFC6333)"
+msgstr "轻型双栈(RFC6333)"
 
 msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
 msgstr "动态 <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
@@ -1038,7 +1044,7 @@ msgstr ""
 "为所有客户端提供 DHCP 服务。如果禁用,将只对具有静态租约的客户提供服务。"
 
 msgid "EA-bits length"
-msgstr "EA-bits 长度"
+msgstr "EA-位长"
 
 msgid "EAP-Method"
 msgstr "EAP 类型"
@@ -1439,6 +1445,9 @@ msgstr "请在此处粘贴 SSH 公钥,每行一个,用于 SSH 公钥认证
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "隐藏 <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr "主机"
 
@@ -2005,6 +2014,9 @@ msgstr "手动"
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr "最大可达数据速率(ATTNDR)"
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "允许的最大 DHCP 租用数"
 
@@ -2179,9 +2191,6 @@ msgstr "本接口未配置 DHCP 服务器"
 msgid "No NAT-T"
 msgstr "无 NAT-T"
 
-msgid "No chains in this table"
-msgstr "本表中没有链"
-
 msgid "No files found"
 msgstr "未找到文件"
 
@@ -2206,7 +2215,7 @@ msgstr "无可用软件列表"
 msgid "No password set!"
 msgstr "未设置密码!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "本链没有规则"
 
 msgid "No scan results available yet..."
@@ -2257,6 +2266,9 @@ msgstr "Nslookup"
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr "缓存的 DNS 条目数量(最大 10000,0 表示不缓存)"
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "确认"
 
@@ -2333,9 +2345,9 @@ msgid ""
 "server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
 "for the interface."
 msgstr ""
-"可选,允许的值:'eui64'、'random' 和其他固定值(例如:'::1' 或 '::1:2')。当"
-"从授权服务器获取到 IPv6 前缀(如 'a:b:c:d::'),使用后缀(如 '::1')合成 "
-"IPv6 地址('a:b:c:d::1')分配给此接口。"
+"可选,允许的值:“eui64”、“random”和其他固定值(例如:“::1”或“::1:2”)。当从授"
+"权服务器获取到 IPv6 前缀(如“a:b:c:d::”),使用后缀(如 “::1”)合成 IPv6 地址"
+"(“a:b:c:d::1”)分配给此接口。"
 
 msgid ""
 "Optional. Base64-encoded preshared key. Adds in an additional layer of "
@@ -2456,7 +2468,7 @@ msgid "PSID offset"
 msgstr "PSID 偏移"
 
 msgid "PSID-bits length"
-msgstr "PSID-bits 长度"
+msgstr "PSID-位长"
 
 msgid "PTM/EFM (Packet Transfer Mode)"
 msgstr "PTM/EFM(分组传输模式)"
@@ -2551,6 +2563,9 @@ msgstr "数据包"
 msgid "Please enter your username and password."
 msgstr "请输入用户名和密码。"
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr "策略"
 
@@ -2745,7 +2760,7 @@ msgid "Receiver Antenna"
 msgstr "接收天线"
 
 msgid "Recommended. IP addresses of the WireGuard interface."
-msgstr "推荐,Wire Guard 接口的 IP 地址。"
+msgstr "推荐,WireGuard 接口的 IP 地址。"
 
 msgid "Reconnect this interface"
 msgstr "重连此接口"
@@ -2895,6 +2910,9 @@ msgid ""
 "can be reached."
 msgstr "路由表描述了数据包的可达路径。"
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr "挂载设备前运行文件系统检查"
 
@@ -2953,7 +2971,7 @@ msgid "Section removed"
 msgstr "移除的节点"
 
 msgid "See \"mount\" manpage for details"
-msgstr "详参 \"mount\" 联机帮助"
+msgstr "详参“mount”联机帮助"
 
 msgid ""
 "Select 'Force upgrade' to flash the image even if the image format check "
@@ -3012,6 +3030,9 @@ msgstr "Short Preamble"
 msgid "Show current backup file list"
 msgstr "显示当前备份文件列表"
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr "关闭此接口"
 
@@ -3033,6 +3054,9 @@ msgstr "大小(.ipk)"
 msgid "Size of DNS query cache"
 msgstr "DNS 查询缓存的大小"
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "跳过"
 
@@ -3141,6 +3165,9 @@ msgstr ""
 "静态租约用于给 DHCP 客户端分配固定的 IP 地址和主机标识。只有指定的主机才能连"
 "接,并且接口须为非动态配置。"
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "状态"
 
@@ -3278,10 +3305,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 "在应用挂起的更改后 %d 秒内无法连接到此设备,出于安全原因导致配置回滚。如果您"
 "认为配置的更改是正确的,请执行强制应用。或者您可以在再次尝试应用之前解除此警"
@@ -3290,7 +3316,7 @@ msgstr ""
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
-msgstr "å­\98å\82¨å\99¨æ\88\96å\88\86å\8cºç\9a\84设å¤\87æ\96\87件ï¼\8cï¼\88ä¾\8bå¦\82ï¼\9a<code>/dev/sda1</code>ï¼\89"
+msgstr "存储器或分区的设备文件(例如:<code>/dev/sda1</code>)"
 
 msgid ""
 "The filesystem that was used to format the memory (<abbr title=\"for example"
@@ -3401,8 +3427,8 @@ msgid ""
 "'server=1.2.3.4' fordomain-specific or full upstream <abbr title=\"Domain "
 "Name System\">DNS</abbr> servers."
 msgstr ""
-"此文件包含类似于 'server=/domain/1.2.3.4' 或 'server=1.2.3.4' 的行,用于解析"
-"特定域名或指定上游 <abbr title=\"Domain Name System\">DNS</abbr> 服务器。"
+"此文件包含类似于“server=/domain/1.2.3.4”或“server=1.2.3.4”的行,用于解析特定"
+"域名或指定上游 <abbr title=\"Domain Name System\">DNS</abbr> 服务器。"
 
 msgid ""
 "This is a list of shell glob patterns for matching files and directories to "
@@ -3420,7 +3446,8 @@ 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 ""
+"此处为 /etc/rc.local 的内容。启动脚本插入到“exit 0”之前即可随系统启动运行。"
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
@@ -3463,7 +3490,10 @@ msgid "Time Synchronization"
 msgstr "时间同步"
 
 msgid "Time Synchronization is not configured yet."
-msgstr "尚未配置时间同步"
+msgstr "尚未配置时间同步。"
+
+msgid "Time interval for rekeying GTK"
+msgstr ""
 
 msgid "Timezone"
 msgstr "时区"
@@ -3594,7 +3624,7 @@ msgid "Unsupported protocol type."
 msgstr "不支持的协议类型"
 
 msgid "Up"
-msgstr "向上"
+msgstr "上移"
 
 msgid "Update lists"
 msgstr "刷新列表"
@@ -3608,7 +3638,7 @@ msgstr ""
 "使更新后的系统仍然使用当前的系统配置(新的固件需要和当前固件兼容)。"
 
 msgid "Upload archive..."
-msgstr "上传备份..."
+msgstr "上传备份"
 
 msgid "Uploaded File"
 msgstr "上传的文件"
@@ -3832,7 +3862,7 @@ msgid ""
 "scripts like \"network\", your device might become inaccessible!</strong>"
 msgstr ""
 "在此启用或禁用已安装的启动脚本,更改在设备重启后生效。<br /><strong>警告:如"
-"果禁用了必要的启动脚本,比如 \"network\",可能会导致无法访问设备!</strong>"
+"果禁用了必要的启动脚本,比如“network”,可能会导致无法访问设备!</strong>"
 
 msgid ""
 "You must enable JavaScript in your browser or LuCI will not work properly."
@@ -3846,6 +3876,18 @@ msgstr ""
 "您的 IE 浏览器太老了,无法正常显示这个页面!请更新到 IE7 及以上或使用其他浏览"
 "器,如 Firefox、Opera、Safari。"
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "任意"
 
@@ -3964,6 +4006,9 @@ msgstr "中继模式"
 msgid "routed"
 msgstr "已路由"
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr "服务器模式"
 
@@ -4003,6 +4048,9 @@ msgstr "是"
 msgid "« Back"
 msgstr "« 后退"
 
+#~ msgid "No chains in this table"
+#~ msgstr "本表中没有链"
+
 #~ msgid "Configuration files will be kept."
 #~ msgstr "配置文件将被保留。"
 
index f3354e1924dba1540f3757bee71498f4ae204e1c..c34e0fe7b02c513cd8a785e51bc361b8836f3d81 100644 (file)
@@ -396,10 +396,10 @@ msgstr "天線設定"
 msgid "Any zone"
 msgstr "任意區域"
 
-msgid "Apply request failed with status <code>%h</code>"
+msgid "Apply anyway"
 msgstr ""
 
-msgid "Apply unchecked"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
 msgid "Architecture"
@@ -675,6 +675,9 @@ msgstr "收集資料中..."
 msgid "Command"
 msgstr "指令"
 
+msgid "Comment"
+msgstr ""
+
 msgid "Common Configuration"
 msgstr "一般設定"
 
@@ -920,6 +923,9 @@ msgstr "關閉DNS設置"
 msgid "Disable Encryption"
 msgstr ""
 
+msgid "Disable Inactivity Polling"
+msgstr ""
+
 msgid "Disable this network"
 msgstr ""
 
@@ -1430,6 +1436,9 @@ msgstr "在這裡貼上公用SSH-Keys (每行一個)以便驗證"
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "隱藏 <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 
+msgid "Hide empty chains"
+msgstr ""
+
 msgid "Host"
 msgstr ""
 
@@ -1988,6 +1997,9 @@ msgstr ""
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
 
+msgid "Maximum allowed Listen Interval"
+msgstr ""
+
 msgid "Maximum allowed number of active DHCP leases"
 msgstr "允許啟用DHCP釋放的最大數量"
 
@@ -2160,9 +2172,6 @@ msgstr "在這個介面尚無DHCP伺服器"
 msgid "No NAT-T"
 msgstr ""
 
-msgid "No chains in this table"
-msgstr "尚未綁在這個表格中"
-
 msgid "No files found"
 msgstr "尚未發現任何檔案"
 
@@ -2187,7 +2196,7 @@ msgstr "尚無列出的軟體包可運用"
 msgid "No password set!"
 msgstr "尚未設定密碼!"
 
-msgid "No rules in this chain"
+msgid "No rules in this chain."
 msgstr "尚無規則在這個鏈接上"
 
 msgid "No scan results available yet..."
@@ -2238,6 +2247,9 @@ msgstr "DNS偵錯Nslookup"
 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
 msgstr ""
 
+msgid "Number of parallel threads used for compression"
+msgstr ""
+
 msgid "OK"
 msgstr "行"
 
@@ -2526,6 +2538,9 @@ msgstr "封包數."
 msgid "Please enter your username and password."
 msgstr "請輸入您的用戶名稱和密碼"
 
+msgid "Please update package lists first"
+msgstr ""
+
 msgid "Policy"
 msgstr "策略"
 
@@ -2864,6 +2879,9 @@ msgid ""
 "can be reached."
 msgstr "路由器指定介面導出到特定主機或者能夠到達的網路."
 
+msgid "Rule"
+msgstr ""
+
 msgid "Run a filesystem check before mounting the device"
 msgstr "掛載這個設備前先跑系統檢查"
 
@@ -2980,6 +2998,9 @@ msgstr ""
 msgid "Show current backup file list"
 msgstr "顯示現今的備份檔清單"
 
+msgid "Show empty chains"
+msgstr ""
+
 msgid "Shutdown this interface"
 msgstr "關閉這個介面"
 
@@ -3001,6 +3022,9 @@ msgstr ""
 msgid "Size of DNS query cache"
 msgstr ""
 
+msgid "Size of the ZRam device in megabytes"
+msgstr ""
+
 msgid "Skip"
 msgstr "跳過"
 
@@ -3109,6 +3133,9 @@ msgstr ""
 "靜態租約是用來指定固定的IP位址和表示的主機名稱給予DHCP用戶端. 它們也需要非動"
 "態介面設定值以便獲取相應租約的主機服務."
 
+msgid "Station inactivity limit"
+msgstr ""
+
 msgid "Status"
 msgstr "狀態"
 
@@ -3250,10 +3277,9 @@ msgid ""
 "The device could not be reached within %d seconds after applying the pending "
 "changes, which caused the configuration to be rolled back for safety "
 "reasons. If you believe that the configuration changes are correct "
-"nonetheless, perform an unchecked configuration apply. Alternatively, you "
-"can dismiss this warning and edit changes before attempting to apply again, "
-"or revert all pending changes to keep the currently working configuration "
-"state."
+"nonetheless, proceed by applying anyway. Alternatively, you can dismiss this "
+"warning and edit changes before attempting to apply again, or revert all "
+"pending changes to keep the currently working configuration state."
 msgstr ""
 
 msgid ""
@@ -3439,6 +3465,9 @@ msgstr "校時同步"
 msgid "Time Synchronization is not configured yet."
 msgstr "校時同步尚未設定."
 
+msgid "Time interval for rekeying GTK"
+msgstr ""
+
 msgid "Timezone"
 msgstr "時區"
 
@@ -3816,6 +3845,18 @@ msgid ""
 "or Safari."
 msgstr ""
 
+msgid "ZRam Compression Algorithm"
+msgstr ""
+
+msgid "ZRam Compression Streams"
+msgstr ""
+
+msgid "ZRam Settings"
+msgstr ""
+
+msgid "ZRam Size"
+msgstr ""
+
 msgid "any"
 msgstr "任意"
 
@@ -3934,6 +3975,9 @@ msgstr ""
 msgid "routed"
 msgstr "路由"
 
+msgid "sec"
+msgstr ""
+
 msgid "server mode"
 msgstr ""
 
@@ -3973,6 +4017,9 @@ msgstr "是的"
 msgid "« Back"
 msgstr "« 倒退"
 
+#~ msgid "No chains in this table"
+#~ msgstr "尚未綁在這個表格中"
+
 #~ msgid "Configuration files will be kept."
 #~ msgstr "設定檔將被存檔"
 
index 59b0d84842df47355613ac313015148f9469c6b9..e964175829109e87f6eb92685e2ee75953d0411d 100644 (file)
@@ -3,9 +3,9 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Cache-Control" content="no-cache" />
-<meta http-equiv="refresh" content="0; URL=/cgi-bin/luci" />
+<meta http-equiv="refresh" content="0; URL=/cgi-bin/luci/" />
 </head>
 <body style="background-color: white">
-<a style="color: black; font-family: arial, helvetica, sans-serif;" href="/cgi-bin/luci">LuCI - Lua Configuration Interface</a>
+<a style="color: black; font-family: arial, helvetica, sans-serif;" href="/cgi-bin/luci/">LuCI - Lua Configuration Interface</a>
 </body>
 </html>
index 3979487f1276453ca32d06d26e8eb4de0584114b..0411932ce99ff9ac05914938eb549267d67fdfc0 100644 (file)
@@ -258,7 +258,7 @@ static int _validate_utf8(unsigned char **s, int l, struct template_buffer *buf)
                                break;
                }
 
-               /* advance beyound the last found valid continuation char */
+               /* advance beyond the last found valid continuation char */
                o = v;
                ptr += v;
        }
index cae0cd66f7b90fea380e520b593f299bdfcb97fe..48ae91cd81e2510c1f44a4adf50bc06bc1515827 100644 (file)
@@ -53,8 +53,8 @@ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {
 
        trigger: function(e) {
                var lonlat = map.getLonLatFromViewPortPx(e.xy); 
-               lat=merc2lat(lonlat.lat);
-               lon=merc2lon(lonlat.lon);
+               var lat=merc2lat(lonlat.lat);
+               var lon=merc2lon(lonlat.lon);
                if(parent.document.getElementById(latfield_id)==null){
                        latfield=document.getElementById('osmlat');
                }else{
@@ -92,7 +92,7 @@ function init(){
 
 function drawmap() {
        OpenLayers.Lang.setCode('de'); 
-       mapdiv=document.getElementById('map');
+       var mapdiv=document.getElementById('map');
        mapdiv.style.height=window.innerHeight+"px";
        mapdiv.style.width=window.innerWidth+"px";
        map = new OpenLayers.Map('map', {
index dbf3820f5c17821431c240578b2e59db0c7a0875..bd936ac705ae69d6bb614877a9a17b98eb6c5e2d 100644 (file)
@@ -4,7 +4,7 @@
        local has_latlon = false
        local uci = require "luci.model.uci".cursor()
        uci:foreach("olsrd", "LoadPlugin", function(s)
-               if s.library == "olsrd_nameservice.so.0.3" and s.latlon_file then
+               if s.library == "olsrd_nameservice" and s.latlon_file then
                        has_latlon = true
                end
        end)
index c3951f9c63d35f7014f23be80451cc99fe6b926f..f69401d6e35669b532a88a1ecda1d3a38161533d 100644 (file)
@@ -85,7 +85,7 @@
                                        local uci = require "luci.model.uci".cursor()
 
                                        uci:foreach("olsrd", "LoadPlugin", function(s)
-                                               if s.library == "olsrd_nameservice.so.0.3" and s.latlon_file then
+                                               if s.library == "olsrd_nameservice" and s.latlon_file then
                                                        fd = io.open(s.latlon_file)
                                                end
                                        end)
index 8be354b448c17a4c2a943b86c8e0661ab43fea85..bff859befa2337c3ff6a1d6f0ff26a2cac3ee230 100644 (file)
@@ -284,7 +284,7 @@ if not net:is_floating() then
        ifname_single = s:taboption("physical", Value, "ifname_single", translate("Interface"))
        ifname_single.template = "cbi/network_ifacelist"
        ifname_single.widget = "radio"
-       ifname_single.nobridges = true
+       ifname_single.nobridges = net:is_bridge()
        ifname_single.noaliases = false
        ifname_single.rmempty = false
        ifname_single.network = arg[1]
@@ -341,7 +341,7 @@ end
 if not net:is_virtual() then
        ifname_multi = s:taboption("physical", Value, "ifname_multi", translate("Interface"))
        ifname_multi.template = "cbi/network_ifacelist"
-       ifname_multi.nobridges = true
+       ifname_multi.nobridges = net:is_bridge()
        ifname_multi.noaliases = true
        ifname_multi.rmempty = false
        ifname_multi.network = arg[1]
index 743efaa1e8c07402b3176aaf891c50cd3e3a0224..8ed39df4861cdad6c55142faaf44c0a5988c6967 100644 (file)
@@ -16,7 +16,8 @@ local acct_port, acct_secret, acct_server, anonymous_identity, ant1, ant2,
        mp, nasid, network, password, pmk_r1_push, privkey, privkey2, privkeypwd,
        privkeypwd2, r0_key_lifetime, r0kh, r1_key_holder, r1kh,
        reassociation_deadline, retry_timeout, ssid, st, tp, wepkey, wepslot,
-       wmm, wpakey, wps, disassoc_low_ack, short_preamble, beacon_int, dtim_period
+       wmm, wpakey, wps, disassoc_low_ack, short_preamble, beacon_int, dtim_period,
+       wparekey, inactivitypool, maxinactivity, listeninterval
 
 arg[1] = arg[1] or ""
 
@@ -507,6 +508,26 @@ if hwtype == "mac80211" then
        dtim_period.optional = true
        dtim_period.placeholder = 2
        dtim_period.datatype = "range(1,255)"
+       
+       
+       wparekey = s:taboption("advanced", Value, "wpa_group_rekey", translate("Time interval for rekeying GTK"), translate("sec"))
+       wparekey.optional    = true
+       wparekey.placeholder = 600
+       wparekey.datatype    = "uinteger"
+       
+       inactivitypool = s:taboption("advanced", Flag , "skip_inactivity_poll", translate("Disable Inactivity Polling"))
+       inactivitypool.optional    = true
+       inactivitypool.datatype    = "uinteger"
+       
+       maxinactivity = s:taboption("advanced", Value, "max_inactivity", translate("Station inactivity limit"), translate("sec"))
+       maxinactivity.optional    = true
+       maxinactivity.placeholder = 300
+       maxinactivity.datatype    = "uinteger"
+       
+       listeninterval = s:taboption("advanced", Value, "max_listen_interval", translate("Maximum allowed Listen Interval"))
+       listeninterval.optional    = true
+       listeninterval.placeholder = 65535
+       listeninterval.datatype    = "uinteger"
 
        disassoc_low_ack = s:taboption("advanced", Flag, "disassoc_low_ack", translate("Disassociate On Low Acknowledgement"),
                translate("Allow AP mode to disconnect STAs based on low ACK condition"))
@@ -794,7 +815,6 @@ for slot=1,4 do
        end
 end
 
-
 if hwtype == "mac80211" or hwtype == "prism2" then
 
        -- Probe 802.11r support (and EAP support as a proxy for Openwrt)
index 4f04cce5456622e6a075a16b91e3b3361fb82070..5b496d83f2375e42e5808f1b9d78a9b94dd1908d 100644 (file)
@@ -8,6 +8,7 @@ function index()
        entry({"admin", "status", "overview"}, template("admin_status/index"), _("Overview"), 1)
 
        entry({"admin", "status", "iptables"}, template("admin_status/iptables"), _("Firewall"), 2).leaf = true
+       entry({"admin", "status", "iptables_dump"}, call("dump_iptables")).leaf = true
        entry({"admin", "status", "iptables_action"}, post("action_iptables")).leaf = true
 
        entry({"admin", "status", "routes"}, template("admin_status/routes"), _("Routes"), 3)
@@ -44,6 +45,37 @@ function action_dmesg()
        luci.template.render("admin_status/dmesg", {dmesg=dmesg})
 end
 
+function dump_iptables(family, table)
+       local prefix = (family == "6") and "ip6" or "ip"
+       local ok, lines = pcall(io.lines, "/proc/net/%s_tables_names" % prefix)
+       if ok and lines then
+               local s
+               for s in lines do
+                       if s == table then
+                               local ipt = io.popen(
+                                       "/usr/sbin/%stables -t %s --line-numbers -nxvL"
+                                       %{ prefix, table })
+
+                               if ipt then
+                                       luci.http.prepare_content("text/plain")
+
+                                       while true do
+                                               s = ipt:read(1024)
+                                               if not s then break end
+                                               luci.http.write(s)
+                                       end
+
+                                       ipt:close()
+                                       return
+                               end
+                       end
+               end
+       end
+
+       luci.http.status(404, "No such table")
+       luci.http.prepare_content("text/plain")
+end
+
 function action_iptables()
        if luci.http.formvalue("zero") then
                if luci.http.formvalue("family") == "6" then
index 51e428e40e01a66402134c2bf0b60b3cab0e2467..50defac90eff7ed7afc8d6a670c91f9230140326 100644 (file)
@@ -1,16 +1,11 @@
 <%#
  Copyright 2008-2009 Steven Barth <steven@midlink.org>
- Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
  Licensed to the public under the Apache License 2.0.
 -%>
 
 <%-
-
-       require "luci.sys.iptparser"
-       local wba = require "luci.tools.webadmin"
        local fs = require "nixio.fs"
-       local io = require "io"
-
        local has_ip6tables = fs.access("/usr/sbin/ip6tables")
        local mode = 4
 
                mode = luci.dispatcher.context.requestpath
            mode = tonumber(mode[#mode] ~= "iptables" and mode[#mode]) or 4
        end
+-%>
 
-       local ipt = luci.sys.iptparser.IptParser(mode)
+<%+header%>
 
-       local rowcnt = 1
-       function rowstyle()
-               rowcnt = rowcnt + 1
-               return (rowcnt % 2) + 1
-       end
+<style type="text/css">
+       span.jump, .cbi-tooltip-container {
+               border-bottom: 1px dotted blue;
+               cursor: pointer;
+       }
 
-       function link_target(t,c)
-               if ipt:is_custom_target(c) then
-                       return '<a href="#rule_%s_%s">%s</a>' %{ t:lower(), c, c }
-               end
-               return c
-       end
+       ul {
+               list-style: none;
+       }
+
+       .references {
+               position: relative;
+       }
+
+       .references .cbi-tooltip {
+               left: 0 !important;
+               top: 1.5em !important;
+       }
+
+       h4 > span {
+               font-size: 90%;
+       }
+</style>
+
+<script type="text/javascript">//<![CDATA[
+       var table_names = [ 'Filter', 'NAT', 'Mangle', 'Raw' ];
+
+       function create_table_section(table)
+       {
+               var idiv = document.getElementById('iptables'),
+                   tdiv = idiv.querySelector('[data-table="%s"]'.format(table)),
+                   title = '<%:Table%>: %s'.format(table);
+
+               if (!tdiv) {
+                       tdiv = E('div', { 'data-table': table }, [
+                               E('h3', {}, title),
+                               E('div')
+                       ]);
+
+                       if (idiv.firstElementChild.nodeName.toLowerCase() === 'p')
+                               idiv.removeChild(idiv.firstElementChild);
+
+                       var added = false, thisIdx = table_names.indexOf(table);
+
+                       idiv.querySelectorAll('[data-table]').forEach(function(child) {
+                               var childIdx = table_names.indexOf(child.getAttribute('data-table'));
+
+                               if (added === false && childIdx > thisIdx) {
+                                       idiv.insertBefore(tdiv, child);
+                                       added = true;
+                               }
+                       });
+
+                       if (added === false)
+                               idiv.appendChild(tdiv);
+               }
+
+               return tdiv.lastElementChild;
+       }
+
+       function create_chain_section(table, chain, policy, packets, bytes, references)
+       {
+               var tdiv = create_table_section(table),
+                   cdiv = tdiv.querySelector('[data-chain="%s"]'.format(chain)),
+                   title;
+
+               if (policy)
+                       title = '<%:Chain%> <em>%s</em> <span>(<%:Policy%>: <em>%s</em>, %d <%:Packets%>, %.2mB <%:Traffic%>)</span>'.format(chain, policy, packets, bytes);
+               else
+                       title = '<%:Chain%> <em>%s</em> <span class="references">(%d <%:References%>)</span>'.format(chain, references);
+
+               if (!cdiv) {
+                       cdiv = E('div', { 'data-chain': chain }, [
+                               E('h4', { 'id': 'rule_%s_%s'.format(table.toLowerCase(), chain) }, title),
+                               E('div', { 'class': 'table' }, [
+                                       E('div', { 'class': 'tr table-titles' }, [
+                                               E('div', { 'class': 'th center' }, '<%:Pkts.%>'),
+                                               E('div', { 'class': 'th center' }, '<%:Traffic%>'),
+                                               E('div', { 'class': 'th' }, '<%:Target%>'),
+                                               E('div', { 'class': 'th' }, '<%:Prot.%>'),
+                                               E('div', { 'class': 'th' }, '<%:In%>'),
+                                               E('div', { 'class': 'th' }, '<%:Out%>'),
+                                               E('div', { 'class': 'th' }, '<%:Source%>'),
+                                               E('div', { 'class': 'th' }, '<%:Destination%>'),
+                                               E('div', { 'class': 'th' }, '<%:Options%>'),
+                                               E('div', { 'class': 'th' }, '<%:Comment%>')
+                                       ])
+                               ])
+                       ]);
+
+                       tdiv.appendChild(cdiv);
+               }
+               else {
+                       cdiv.firstElementChild.innerHTML = title;
+               }
+
+               return cdiv.lastElementChild;
+       }
+
+       function update_chain_section(chaintable, rows)
+       {
+               if (!chaintable)
+                       return;
+
+               cbi_update_table(chaintable, rows, '<%:No rules in this chain.%>');
 
-       function link_iface(i)
-               local net = wba.iface_get_network(i)
-               if net and i ~= "lo" then
-                       return '<a href="%s">%s</a>' %{
-                               url("admin/network/network", net), i
+               if (rows.length === 0 &&
+                   document.querySelector('form > [data-hide-empty="true"]'))
+                       chaintable.parentNode.style.display = 'none';
+               else
+                       chaintable.parentNode.style.display = '';
+
+               chaintable.parentNode.setAttribute('data-empty', rows.length === 0);
+       }
+
+       function hide_empty(btn)
+       {
+               var hide = (btn.getAttribute('data-hide-empty') === 'false');
+
+               btn.setAttribute('data-hide-empty', hide);
+               btn.value = hide ? '<%:Show empty chains%>' : '<%:Hide empty chains%>';
+               btn.blur();
+
+               document.querySelectorAll('[data-chain][data-empty="true"]')
+                       .forEach(function(chaintable) {
+                               chaintable.style.display = hide ? 'none' : '';
+                       });
+       }
+
+       function jump_target(ev)
+       {
+               var link = ev.target,
+                   table = findParent(link, '[data-table]').getAttribute('data-table'),
+                   chain = link.textContent,
+                   num = +link.getAttribute('data-num'),
+                   elem = document.getElementById('rule_%s_%s'.format(table.toLowerCase(), chain));
+
+               if (elem) {
+                       (document.documentElement || document.body.parentNode || document.body).scrollTop = elem.offsetTop - 40;
+                       elem.classList.remove('flash');
+                       void elem.offsetWidth;
+                       elem.classList.add('flash');
+
+                       if (num) {
+                               var rule = elem.nextElementSibling.childNodes[num];
+                               if (rule) {
+                                       rule.classList.remove('flash');
+                                       void rule.offsetWidth;
+                                       rule.classList.add('flash');
+                               }
                        }
+               }
+       }
 
-               end
-               return i
-       end
+       function parse_output(table, s)
+       {
+               var current_chain = null;
+               var current_rules = [];
+               var seen_chains = {};
+               var chain_refs = {};
+               var re = /([^\n]*)\n/g;
+               var m, m2;
 
-       local tables = { "Filter", "NAT", "Mangle", "Raw" }
-       if mode == 6 then
-               tables = { "Filter", "Mangle", "Raw" }
-               local ok, lines = pcall(io.lines, "/proc/net/ip6_tables_names")
-               if ok and lines then
-                       local line
-                       for line in lines do
-                               if line == "nat" then
-                                       tables = { "Filter", "NAT", "Mangle", "Raw" }
-                               end
-                       end
-               end
-       end
--%>
+               while ((m = re.exec(s)) != null) {
+                       if (m[1].match(/^Chain (.+) \(policy (\w+) (\d+) packets, (\d+) bytes\)$/)) {
+                               var chain = RegExp.$1,
+                                   policy = RegExp.$2,
+                                   packets = +RegExp.$3,
+                                   bytes = +RegExp.$4;
 
-<%+header%>
+                               update_chain_section(current_chain, current_rules);
 
-<style type="text/css">
-       span:target {
-               color: blue;
-               text-decoration: underline;
+                               seen_chains[chain] = true;
+                               current_chain = create_chain_section(table, chain, policy, packets, bytes);
+                               current_rules = [];
+                       }
+                       else if (m[1].match(/^Chain (.+) \((\d+) references\)$/)) {
+                               var chain = RegExp.$1,
+                                   references = +RegExp.$2;
+
+                               update_chain_section(current_chain, current_rules);
+
+                               seen_chains[chain] = true;
+                               current_chain = create_chain_section(table, chain, null, null, null, references);
+                               current_rules = [];
+                       }
+                       else if (m[1].match(/^num /)) {
+                               continue;
+                       }
+                       else if ((m2 = m[1].match(/^(\d+) +(\d+) +(\d+) +(.*?) +(\S+) +(\S*) +(\S+) +(\S+) +([a-f0-9:.]+\/\d+) +([a-f0-9:.]+\/\d+) +(.+)$/)) !== null) {
+                               var num = +m2[1],
+                                   pkts = +m2[2],
+                                   bytes = +m2[3],
+                                   target = m2[4],
+                                   proto = m2[5],
+                                   indev = m2[7],
+                                   outdev = m2[8],
+                                   srcnet = m2[9],
+                                   dstnet = m2[10],
+                                   options = m2[11] || '-',
+                                   comment = '-';
+
+                               options = options.trim().replace(/(?:^| )\/\* (.+) \*\//,
+                                       function(m1, m2) {
+                                               comment = m2.replace(/^!fw3(: |$)/, '').trim() || '-';
+                                               return '';
+                                       }) || '-';
+
+                               current_rules.push([
+                                       '%.2m'.format(pkts).nobr(),
+                                       '%.2mB'.format(bytes).nobr(),
+                                       target ? '<span class="target">%s</span>'.format(target) : '-',
+                                       proto,
+                                       (indev !== '*') ? '<span class="ifacebadge">%s</span>'.format(indev) : '*',
+                                       (outdev !== '*') ? '<span class="ifacebadge">%s</span>'.format(outdev) : '*',
+                                       srcnet,
+                                       dstnet,
+                                       options,
+                                       comment
+                               ]);
+
+                               if (target) {
+                                       chain_refs[target] = chain_refs[target] || [];
+                                       chain_refs[target].push([ current_chain, num ]);
+                               }
+                       }
+               }
+
+               update_chain_section(current_chain, current_rules);
+
+               document.querySelectorAll('[data-table="%s"] [data-chain]'.format(table))
+                       .forEach(function(cdiv) {
+                               if (!seen_chains[cdiv.getAttribute('data-chain')]) {
+                                       cdiv.parentNode.removeChild(cdiv);
+                                       return;
+                               }
+
+                               cdiv.querySelectorAll('.target').forEach(function(tspan) {
+                                       if (seen_chains[tspan.textContent]) {
+                                               tspan.classList.add('jump');
+                                               tspan.addEventListener('click', jump_target);
+                                       }
+                               });
+
+                               cdiv.querySelectorAll('.references').forEach(function(rspan) {
+                                       var refs = chain_refs[cdiv.getAttribute('data-chain')];
+                                       if (refs && refs.length) {
+                                               rspan.classList.add('cbi-tooltip-container');
+                                               rspan.appendChild(E('small', { 'class': 'cbi-tooltip ifacebadge', 'style': 'top:1em; left:auto' }, [ E('ul') ]));
+
+                                               refs.forEach(function(ref) {
+                                                       var chain = ref[0].parentNode.getAttribute('data-chain'),
+                                                           num = ref[1];
+
+                                                       rspan.lastElementChild.lastElementChild.appendChild(E('li', {}, [
+                                                               '<%:Chain%> ',
+                                                               E('span', {
+                                                                       'class': 'jump',
+                                                                       'data-num': num,
+                                                                       'onclick': 'jump_target(event)'
+                                                               }, chain),
+                                                               ', <%:Rule%> #%d'.format(num)
+                                                       ]));
+                                               });
+                                       }
+                               });
+                       });
        }
-</style>
+
+       table_names.forEach(function(table) {
+               XHR.poll(5, '<%=url("admin/status/iptables_dump", tostring(mode))%>/' + table.toLowerCase(), null,
+                       function (xhr) {
+                               parse_output(table, xhr.responseText);
+                       });
+       });
+//]]></script>
 
 <h2 name="content"><%:Firewall Status%></h2>
 
 </ul>
 <% end %>
 
-<div class="cbi-map" style="position: relative">
-
+<div style="position: relative">
        <form method="post" action="<%=url("admin/status/iptables_action")%>" style="position: absolute; right: 0">
                <input type="hidden" name="token" value="<%=token%>" />
                <input type="hidden" name="family" value="<%=mode%>" />
+               <input type="button" class="cbi-button" data-hide-empty="false" value="<%:Hide empty chains%>" onclick="hide_empty(this)" />
                <input type="submit" class="cbi-button" name="zero" value="<%:Reset Counters%>" />
                <input type="submit" class="cbi-button" name="restart" value="<%:Restart Firewall%>" />
        </form>
+</div>
 
-       <div class="cbi-section">
-
-               <% for _, tbl in ipairs(tables) do chaincnt = 0 %>
-                       <h3><%:Table%>: <%=tbl%></h3>
-
-                       <% for _, chain in ipairs(ipt:chains(tbl)) do
-                               rowcnt    = 0
-                               chaincnt  = chaincnt + 1
-                               chaininfo = ipt:chain(tbl, chain)
-                       %>
-                               <h4  id="rule_<%=tbl:lower()%>_<%=chain%>">
-                                       <%:Chain%> <em><%=chain%></em>
-                                       (<%- if chaininfo.policy then -%>
-                                               <%:Policy%>: <em><%=chaininfo.policy%></em>, <%:Packets%>: <%=chaininfo.packets%>, <%:Traffic%>: <%=wba.byte_format(chaininfo.bytes)-%>
-                                       <%- else -%>
-                                               <%:References%>: <%=chaininfo.references-%>
-                                       <%- end -%>)
-                               </h4>
-
-                               <div class="cbi-section-node">
-                                       <div class="table" style="font-size:90%">
-                                               <div class="tr table-titles cbi-rowstyle-<%=rowstyle()%>">
-                                                       <div class="th hide-xs"><%:Pkts.%></div>
-                                                       <div class="th nowrap"><%:Traffic%></div>
-                                                       <div class="th col-5"><%:Target%></div>
-                                                       <div class="th"><%:Prot.%></div>
-                                                       <div class="th"><%:In%></div>
-                                                       <div class="th"><%:Out%></div>
-                                                       <div class="th"><%:Source%></div>
-                                                       <div class="th"><%:Destination%></div>
-                                                       <div class="th col-9 hide-xs"><%:Options%></div>
-                                               </div>
-
-                                               <% for _, rule in ipairs(ipt:find({table=tbl, chain=chain})) do %>
-                                                       <div class="tr cbi-rowstyle-<%=rowstyle()%>">
-                                                               <div class="td"><%=rule.packets%></div>
-                                                               <div class="td nowrap"><%=wba.byte_format(rule.bytes)%></div>
-                                                               <div class="td col-5"><%=rule.target and link_target(tbl, rule.target) or "-"%></div>
-                                                               <div class="td"><%=rule.protocol%></div>
-                                                               <div class="td"><%=link_iface(rule.inputif)%></div>
-                                                               <div class="td"><%=link_iface(rule.outputif)%></div>
-                                                               <div class="td"><%=rule.source%></div>
-                                                               <div class="td"><%=rule.destination%></div>
-                                                               <div class="td col-9 hide-xs"><%=#rule.options > 0 and luci.util.pcdata(table.concat(rule.options, " ")) or "-"%></div>
-                                                       </div>
-                                               <% end %>
-
-                                               <% if rowcnt == 1 then %>
-                                                       <div class="tr cbi-rowstyle-<%=rowstyle()%>">
-                                                               <div class="td" colspan="9"><em><%:No rules in this chain%></em></div>
-                                                       </div>
-                                               <% end %>
-                                       </div>
-                               </div>
-                       <% end %>
-
-                       <% if chaincnt == 0 then %>
-                               <em><%:No chains in this table%></em>
-                       <% end %>
-
-                       <br /><br />
-               <% end %>
-       </div>
+<div id="iptables">
+       <p><em><%:Collecting data...%></em></p>
 </div>
 
 <%+footer%>
index 8ec43cb0e63418b0f57105e9d2cdbe7085fae926..03ea2bef01c4a8fbd80eae520b5551bd8d0d6a98 100644 (file)
@@ -61,6 +61,7 @@
        var label_rate_peak;
 
        var label_scale;
+       var label_scale_2;
 
 
        /* wait for SVG */
index 02fe9cc05e1906d04199530b45396e19c98232e0..6f0921fdcfac417b5f35ab5e2019d767cced3895 100644 (file)
@@ -233,7 +233,7 @@ ck.cfgvalue = function(self, section)
 end
 
 
-swap = m:section(TypedSection, "swap", "SWAP", translate("If your physical memory is insufficient unused data can be temporarily swapped to a swap-device resulting in a higher amount of usable <abbr title=\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very slow process as the swap-device cannot be accessed with the high datarates of the <abbr title=\"Random Access Memory\">RAM</abbr>."))
+swap = m:section(TypedSection, "swap", translate("SWAP"), translate("If your physical memory is insufficient unused data can be temporarily swapped to a swap-device resulting in a higher amount of usable <abbr title=\"Random Access Memory\">RAM</abbr>. Be aware that swapping data is a very slow process as the swap-device cannot be accessed with the high datarates of the <abbr title=\"Random Access Memory\">RAM</abbr>."))
 swap.anonymous = true
 swap.addremove = true
 swap.template = "cbi/tblsection"
index c7fdfcddba39ddf2523294291aa58e6957d9053f..7558d421611f4fcac4dbb99c87c6e33ffc577919 100644 (file)
@@ -9,6 +9,7 @@ local conf  = require "luci.config"
 
 local m, s, o
 local has_ntpd = fs.access("/usr/sbin/ntpd")
+local has_zram = fs.access("/etc/init.d/zram")
 
 m = Map("system", translate("System"), translate("Here you can configure the basic aspects of your device like its hostname or the timezone."))
 m:chain("luci")
@@ -21,7 +22,7 @@ s.addremove = false
 s:tab("general",  translate("General Settings"))
 s:tab("logging",  translate("Logging"))
 s:tab("language", translate("Language and Style"))
-
+if has_zram then s:tab("zram", translate("ZRam Settings")) end
 
 --
 -- System Properties
@@ -106,7 +107,30 @@ o:value(9, translate("Warning"))
 
 
 --
--- Langauge & Style
+-- Zram Properties
+--
+if has_zram then
+       o = s:taboption("zram", Value, "zram_size_mb", translate("ZRam Size"), translate("Size of the ZRam device in megabytes"))
+       o.optional    = true
+       o.placeholder = 16
+       o.datatype    = "uinteger"
+       
+       o = s:taboption("zram", ListValue, "zram_comp_algo", translate("ZRam Compression Algorithm"))
+       o.optional    = true
+       o.placeholder = lzo
+       o:value("lzo", "lzo")
+       o:value("lz4", "lz4")
+       o:value("deflate", "deflate")
+       
+       o = s:taboption("zram", Value, "zram_comp_streams", translate("ZRam Compression Streams"), translate("Number of parallel threads used for compression"))
+       o.optional    = true
+       o.placeholder = 1
+       o.datatype    = "uinteger"
+end
+
+
+--
+-- Language & Style
 --
 
 o = s:taboption("language", ListValue, "_lang", translate("Language"))
index 0adbcb49347e1cc1e8793ae36b84a0a8dc2ed5e8..9e364d69ae3641ee180db025c136f5d0702ce5a8 100644 (file)
@@ -102,16 +102,16 @@ end
                                <div class="cbi-value">
                                        <label class="cbi-value-title"><%:Download and install package%>:</label>
                                        <div class="cbi-value-field">
-                                               <span><input type="text" name="url" size="30" value="" /></span>
-                                               <input class="cbi-button cbi-button-save" type="submit" name="go" value="<%:OK%>" />
+                                               <span><input type="text" name="url" size="30" <% if no_lists then %>disabled="disabled" placeholder="<%:Please update package lists first%>"<% end %> value="" /></span>
+                                               <input class="cbi-button cbi-button-save" type="submit" name="go" <% if no_lists then %>disabled="disabled"<% end %> value="<%:OK%>" />
                                        </div>
                                </div>
 
                                <div class="cbi-value cbi-value-last">
                                        <label class="cbi-value-title"><%:Filter%>:</label>
                                        <div class="cbi-value-field">
-                                               <span><input type="text" name="query" size="20" value="<%=pcdata(query)%>" /></span>
-                                               <input type="submit" class="cbi-button cbi-button-action" name="search" value="<%:Find package%>" />
+                                               <span><input type="text" name="query" size="20" <% if no_lists then %>disabled="disabled" placeholder="<%:Please update package lists first%>"<% else %>value="<%=pcdata(query)%>"<% end %> /></span>
+                                               <input type="submit" class="cbi-button cbi-button-action" name="search" <% if no_lists then %>disabled="disabled"<% end %> value="<%:Find package%>" />
                                        </div>
                                </div>
                        </div>
index 1b2e23cc42f4c187edbfcbf28694f7d86f2d7114..e05e3a47fd2a6000de6efa318b565cd8db3b1205 100644 (file)
@@ -47,7 +47,9 @@ dialnumber.placeholder = "*99***1#"
 
 if luci.model.network:has_ipv6() then
 
-       ipv6 = section:taboption("advanced", ListValue, "ipv6")
+       ipv6 = section:taboption("advanced", ListValue, "ipv6",
+               translate("Obtain IPv6-Address"))
+
        ipv6:value("auto", translate("Automatic"))
        ipv6:value("0", translate("Disabled"))
        ipv6:value("1", translate("Manual"))
diff --git a/protocols/luci-proto-hnet/Makefile b/protocols/luci-proto-hnet/Makefile
new file mode 100644 (file)
index 0000000..10beb03
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2018 Florian Eckert <fe@dev.tdt.de>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Support for hnet
+LUCI_DEPENDS:=
+
+PKG_LICENSE:=Apache-2.0
+PKG_MAINTAINER:=Steven Barth <steven@midlink.org>
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua b/protocols/luci-proto-hnet/luasrc/model/cbi/admin_network/proto_hnet.lua
new file mode 100644 (file)
index 0000000..2ed34fa
--- /dev/null
@@ -0,0 +1,37 @@
+-- Copyright 2013 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local mode = section:taboption("general", ListValue, "mode", translate("Category"))
+mode:value("auto", translate("Automatic"))
+mode:value("external", translate("External"))
+mode:value("internal", translate("Internal"))
+mode:value("leaf", translate("Leaf"))
+mode:value("guest", translate("Guest"))
+mode:value("adhoc", translate("Ad-Hoc"))
+mode:value("hybrid", translate("Hybrid"))
+mode.default = "auto"
+
+
+
+local plen = section:taboption("advanced", Value, "ip6assign", translate("IPv6 assignment length"),
+       translate("Assign a part of given length of every public IPv6-prefix to this interface"))
+plen.datatype = "max(128)"
+plen.default = "64"
+
+section:taboption("advanced", Value, "link_id", translate("IPv6 assignment hint"),
+       translate("Assign prefix parts using this hexadecimal subprefix ID for this interface."))
+
+plen = section:taboption("advanced", Value, "ip4assign", translate("IPv4 assignment length"))
+plen.datatype = "max(32)"
+plen.default = "24"
+
+local o = section:taboption("advanced", Value, "dnsname", translate("DNS-Label / FQDN"))
+o.default = map.name
+
+luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address"))
+
+o = section:taboption("advanced", Value, "mtu", translate("Override MTU"))
+o.placeholder = "1500"
+o.datatype    = "max(9200)"
diff --git a/protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua b/protocols/luci-proto-hnet/luasrc/model/network/proto_hnet.lua
new file mode 100644 (file)
index 0000000..f525061
--- /dev/null
@@ -0,0 +1,16 @@
+-- Copyright 2014 Steven Barth <steven@midlink.org>
+-- Licensed to the public under the Apache License 2.0.
+
+local proto = luci.model.network:register_protocol("hnet")
+
+function proto.get_i18n(self)
+       return luci.i18n.translate("Automatic Homenet (HNCP)")
+end
+
+function proto.is_installed(self)
+       return nixio.fs.access("/lib/netifd/proto/hnet.sh")
+end
+
+function proto.opkg_package(self)
+       return "hnet-full"
+end
diff --git a/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_hnet.lua b/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_hnet.lua
deleted file mode 100644 (file)
index 2ed34fa..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
--- Copyright 2013 Steven Barth <steven@midlink.org>
--- Licensed to the public under the Apache License 2.0.
-
-local map, section, net = ...
-
-local mode = section:taboption("general", ListValue, "mode", translate("Category"))
-mode:value("auto", translate("Automatic"))
-mode:value("external", translate("External"))
-mode:value("internal", translate("Internal"))
-mode:value("leaf", translate("Leaf"))
-mode:value("guest", translate("Guest"))
-mode:value("adhoc", translate("Ad-Hoc"))
-mode:value("hybrid", translate("Hybrid"))
-mode.default = "auto"
-
-
-
-local plen = section:taboption("advanced", Value, "ip6assign", translate("IPv6 assignment length"),
-       translate("Assign a part of given length of every public IPv6-prefix to this interface"))
-plen.datatype = "max(128)"
-plen.default = "64"
-
-section:taboption("advanced", Value, "link_id", translate("IPv6 assignment hint"),
-       translate("Assign prefix parts using this hexadecimal subprefix ID for this interface."))
-
-plen = section:taboption("advanced", Value, "ip4assign", translate("IPv4 assignment length"))
-plen.datatype = "max(32)"
-plen.default = "24"
-
-local o = section:taboption("advanced", Value, "dnsname", translate("DNS-Label / FQDN"))
-o.default = map.name
-
-luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address"))
-
-o = section:taboption("advanced", Value, "mtu", translate("Override MTU"))
-o.placeholder = "1500"
-o.datatype    = "max(9200)"
diff --git a/protocols/luci-proto-ipv6/luasrc/model/network/proto_hnet.lua b/protocols/luci-proto-ipv6/luasrc/model/network/proto_hnet.lua
deleted file mode 100644 (file)
index f525061..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
--- Copyright 2014 Steven Barth <steven@midlink.org>
--- Licensed to the public under the Apache License 2.0.
-
-local proto = luci.model.network:register_protocol("hnet")
-
-function proto.get_i18n(self)
-       return luci.i18n.translate("Automatic Homenet (HNCP)")
-end
-
-function proto.is_installed(self)
-       return nixio.fs.access("/lib/netifd/proto/hnet.sh")
-end
-
-function proto.opkg_package(self)
-       return "hnet-full"
-end
diff --git a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppossh.lua b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppossh.lua
deleted file mode 100644 (file)
index e53262b..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
--- Copyright (C) 2015 Yousong Zhou <yszhou4tech@gmail.com>
--- Licensed to the public under the Apache License 2.0.
-
-local map, section, net = ...
-
-local sshuser, server, port, ssh_options, identity, ipaddr, peeraddr
-
-sshuser = section:taboption("general", Value, "sshuser", translate("SSH username"))
-
-server = section:taboption("general", Value, "server", translate("SSH server address"))
-server.datatype = "host(0)"
-
-port = section:taboption("general", Value, "port", translate("SSH server port"))
-port.datatype = "port"
-port.optional = true
-port.default = 22
-
-ssh_options = section:taboption("general", Value, "ssh_options", translate("Extra SSH command options"))
-ssh_options.optional = true
-
-identity = section:taboption("general", DynamicList, "identity", translate("List of SSH key files for auth"))
-identity.optional = true
-identity.datatype = "file"
-
-ipaddr = section:taboption("general", Value, "ipaddr", translate("Local IP address to assign"))
-ipaddr.datatype = "ipaddr"
-
-peeraddr = section:taboption("general", Value, "peeraddr", translate("Peer IP address to assign"))
-peeraddr.datatype = "ipaddr"
-
-
-local ipv6, defaultroute, metric, peerdns, dns,
-      keepalive_failure, keepalive_interval, demand
-
-if luci.model.network:has_ipv6() then
-        ipv6 = section:taboption("advanced", Flag, "ipv6",
-                translate("Enable IPv6 negotiation on the PPP link"))
-        ipv6.default = ipv6.disabled
-end
-
-
-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:set(section, "keepalive", "0")
-       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"
index 3afb7de4f58fda0581fde075ba134c8237aab15a..f87b30fcc176237fb5670ae08edbe4c1ce3692bc 100644 (file)
@@ -4,7 +4,7 @@
 local netmod = luci.model.network
 
 local _, p
-for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "l2tp", "pppossh"}) do
+for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "l2tp"}) do
 
        local proto = netmod:register_protocol(p)
 
@@ -19,8 +19,6 @@ for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "l2tp", "pppossh"}) do
                        return luci.i18n.translate("PPPoATM")
                elseif p == "l2tp" then
                        return luci.i18n.translate("L2TP")
-               elseif p == "pppossh" then
-                       return luci.i18n.translate("PPPoSSH")
                end
        end
 
@@ -39,8 +37,6 @@ for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "l2tp", "pppossh"}) do
                        return "ppp-mod-pppoa"
                elseif p == "l2tp" then
                        return "xl2tpd"
-               elseif p == "pppossh" then
-                       return "pppossh"
                end
        end
 
@@ -53,8 +49,6 @@ for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "l2tp", "pppossh"}) do
                        return (nixio.fs.glob("/usr/lib/pppd/*/pptp.so")() ~= nil)
                elseif p == "l2tp" then
                        return nixio.fs.access("/lib/netifd/proto/l2tp.sh")
-               elseif p == "pppossh" then
-                       return nixio.fs.access("/lib/netifd/proto/pppossh.sh")
                else
                        return nixio.fs.access("/lib/netifd/proto/ppp.sh")
                end
diff --git a/protocols/luci-proto-pppossh/Makefile b/protocols/luci-proto-pppossh/Makefile
new file mode 100644 (file)
index 0000000..1c0a63b
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2018 Florian Eckert <fe@dev.tdt.de>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Support for pppossh
+LUCI_DEPENDS:=+pppossh
+
+PKG_LICENSE:=Apache-2.0
+PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua b/protocols/luci-proto-pppossh/luasrc/model/cbi/admin_network/proto_pppossh.lua
new file mode 100644 (file)
index 0000000..e53262b
--- /dev/null
@@ -0,0 +1,122 @@
+-- Copyright (C) 2015 Yousong Zhou <yszhou4tech@gmail.com>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+local sshuser, server, port, ssh_options, identity, ipaddr, peeraddr
+
+sshuser = section:taboption("general", Value, "sshuser", translate("SSH username"))
+
+server = section:taboption("general", Value, "server", translate("SSH server address"))
+server.datatype = "host(0)"
+
+port = section:taboption("general", Value, "port", translate("SSH server port"))
+port.datatype = "port"
+port.optional = true
+port.default = 22
+
+ssh_options = section:taboption("general", Value, "ssh_options", translate("Extra SSH command options"))
+ssh_options.optional = true
+
+identity = section:taboption("general", DynamicList, "identity", translate("List of SSH key files for auth"))
+identity.optional = true
+identity.datatype = "file"
+
+ipaddr = section:taboption("general", Value, "ipaddr", translate("Local IP address to assign"))
+ipaddr.datatype = "ipaddr"
+
+peeraddr = section:taboption("general", Value, "peeraddr", translate("Peer IP address to assign"))
+peeraddr.datatype = "ipaddr"
+
+
+local ipv6, defaultroute, metric, peerdns, dns,
+      keepalive_failure, keepalive_interval, demand
+
+if luci.model.network:has_ipv6() then
+        ipv6 = section:taboption("advanced", Flag, "ipv6",
+                translate("Enable IPv6 negotiation on the PPP link"))
+        ipv6.default = ipv6.disabled
+end
+
+
+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:set(section, "keepalive", "0")
+       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-pppossh/luasrc/model/network/proto_pppossh.lua b/protocols/luci-proto-pppossh/luasrc/model/network/proto_pppossh.lua
new file mode 100644 (file)
index 0000000..a0e2a51
--- /dev/null
@@ -0,0 +1,40 @@
+-- Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+-- Licensed to the public under the Apache License 2.0.
+
+local netmod = luci.model.network
+
+local proto = netmod:register_protocol("pppossh")
+
+function proto.get_i18n(self)
+       return luci.i18n.translate("PPPoSSH")
+end
+
+function proto.ifname(self)
+       return "pppossh-" .. self.sid
+end
+
+function proto.opkg_package(self)
+       return "pppossh"
+end
+
+function proto.is_installed(self)
+       return nixio.fs.access("/lib/netifd/proto/pppossh.sh")
+end
+
+function proto.is_floating(self)
+       return true
+end
+
+function proto.is_virtual(self)
+       return true
+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("^pppossh%-%w")
index 8fa45d9809e3f98b9eb70c469d176f4f635f4fec..6961bfe2d762d94a8b3e24dda96dc846ea577513 100644 (file)
@@ -125,7 +125,7 @@ html, body {
     margin: 0px;
     padding: 0px;
     height: 100%;
-    font-family: Microsoft Yahei, WenQuanYi Micro Hei, sans-serif, "Helvetica Neue", Helvetica, Hiragino Sans GB;
+    font-family: var(--font-body, "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB");
 }
 
 select {
@@ -154,7 +154,7 @@ input,
 
 select:not([multiple="multiple"]):focus,
 input:focus {
-    border-color: #0099CC;
+    border-color: var(--main-color, #0099CC);
 }
 
 select[multiple="multiple"] {
@@ -162,7 +162,7 @@ select[multiple="multiple"] {
 }
 
 code {
-    color: #0099CC;
+    color: var(--main-color, #0099CC);
 }
 
 abbr {
@@ -235,8 +235,8 @@ footer > a {
 
 .main > .loading > span > .loading-img {
     animation: anim-rotate 2s infinite linear;
-    margin-right: 0.2rem;
     display: inline-block;
+    margin: 5rem;
 }
 
 @keyframes anim-rotate {
@@ -457,7 +457,7 @@ header > .fill > .container > .status {
 }
 
 .main > .main-left > .nav > .slide > .slide-menu > .active:hover {
-    background-color: #0099CC;
+    background-color: var(--main-color, #0099CC);
     cursor: hand;
 }
 
@@ -615,7 +615,7 @@ div > .table > .tbody > .tr:nth-of-type(2n) {
 #conns > div > div,
 #memtotal > div > div {
     height: 100% !important;
-    background-color: #0099CC !important;
+    background-color: var(--main-color, #0099CC) !important;
 }
 
 /* fix multiple table */
@@ -796,13 +796,13 @@ td > table > tbody > tr > td,
 .tabs > li[class~="active"],
 .tabs > li:hover {
     cursor: pointer;
-    border-bottom: 0.2rem solid #0099CC;
-    color: #0099CC;
+    border-bottom: 0.2rem solid var(--main-color, #0099CC);
+    color: var(--main-color, #0099CC);
     margin-bottom: -0.18751rem;
 }
 
 .tabs > li[class~="active"] > a {
-    color: #0099cc;
+    color: var(--main-color, #0099CC);
 }
 
 .tabs > li:hover {
@@ -1611,7 +1611,7 @@ header > .container > .pull-right > * {
 }
 
 .node-main-login > .main .cbi-value-title {
-    width: 7rem;
+    width: 8rem;
 }
 
 .node-main-login > .main #maincontent {
index b32eb2af1b6a53d43cd3b0c69539868f02d79d63..e53ac6db4cc31147ea4c9cfa94da7fc0e65d624e 100644 (file)
@@ -1,9 +1,11 @@
 
 :root {
+       --main-color: #0099CC;
        --header-bg: #0099CC;
        --header-color: #FFFFFF;
        --menu-bg-color: #FFFFFF;
        --menu-color: #404040;
        --submenu-bg-hover: #D4D4D4;
        --submenu-bg-hover-active: #0099CC;
+       --font-body: "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB";
 }
index 583d66d91f531c01686f41a3a467c0b3b15146fb..27bb5ac0387953ff29beb6afd926c85f1f2a050a 100755 (executable)
@@ -35,6 +35,7 @@
 
     var nodeUrl = "";
     (function(node){
+        var luciLocation;
         if (node[0] == "admin"){
             luciLocation = [node[1], node[2]];
         }else{