summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--applications/luci-app-adblock/Makefile10
-rw-r--r--applications/luci-app-adblock/luasrc/controller/adblock.lua46
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock.lua63
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua51
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua38
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua168
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua50
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/config_css.htm10
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/logread.htm14
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/query.htm65
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/runtime.htm10
-rw-r--r--applications/luci-app-adblock/po/ja/adblock.po302
-rw-r--r--applications/luci-app-adblock/po/pt-br/adblock.po270
-rw-r--r--applications/luci-app-adblock/po/sv/adblock.po213
-rw-r--r--applications/luci-app-adblock/po/templates/adblock.pot173
-rw-r--r--applications/luci-app-adblock/po/zh-cn/adblock.po232
-rw-r--r--applications/luci-app-ahcp/po/pt-br/ahcp.po10
-rw-r--r--applications/luci-app-aria2/po/pt-br/aria2.po236
-rw-r--r--applications/luci-app-bcp38/Makefile18
-rw-r--r--applications/luci-app-bcp38/luasrc/controller/bcp38.lua7
-rw-r--r--applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua60
-rwxr-xr-xapplications/luci-app-bcp38/root/etc/uci-defaults/60_luci-bcp3811
-rw-r--r--applications/luci-app-clamav/Makefile18
-rw-r--r--applications/luci-app-clamav/luasrc/controller/clamav.lua22
-rw-r--r--applications/luci-app-clamav/luasrc/model/cbi/clamav.lua178
-rw-r--r--applications/luci-app-clamav/po/ja/clamav.po130
-rw-r--r--applications/luci-app-clamav/po/templates/clamav.pot119
-rw-r--r--applications/luci-app-clamav/po/zh-cn/clamav.po131
-rw-r--r--applications/luci-app-commands/po/pt-br/commands.po21
-rw-r--r--applications/luci-app-cshark/Makefile17
-rw-r--r--applications/luci-app-cshark/luasrc/controller/cshark.lua125
-rw-r--r--applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua30
-rw-r--r--applications/luci-app-cshark/luasrc/view/cshark.htm291
-rw-r--r--applications/luci-app-ddns/Makefile4
-rwxr-xr-xapplications/luci-app-ddns/luasrc/controller/ddns.lua12
-rw-r--r--applications/luci-app-ddns/po/pt-br/ddns.po20
-rw-r--r--applications/luci-app-dynapoint/Makefile3
-rw-r--r--applications/luci-app-dynapoint/po/pt-br/dynapoint.po107
-rw-r--r--applications/luci-app-e2guardian/Makefile18
-rw-r--r--applications/luci-app-e2guardian/luasrc/controller/e2guardian.lua22
-rw-r--r--applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua399
-rw-r--r--applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua1
-rw-r--r--applications/luci-app-firewall/po/pt-br/firewall.po41
-rw-r--r--applications/luci-app-fwknopd/Makefile2
-rw-r--r--applications/luci-app-fwknopd/po/pt-br/fwknopd.po116
-rw-r--r--applications/luci-app-hd-idle/luasrc/controller/hd_idle.lua2
-rw-r--r--applications/luci-app-hd-idle/luasrc/model/cbi/hd_idle.lua8
-rw-r--r--applications/luci-app-hd-idle/po/ca/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/cs/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/de/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/el/hd_idle.po20
-rw-r--r--applications/luci-app-hd-idle/po/en/hd_idle.po28
-rw-r--r--applications/luci-app-hd-idle/po/es/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/fr/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/he/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/hu/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/it/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/ja/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/ms/hd_idle.po18
-rw-r--r--applications/luci-app-hd-idle/po/no/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/pl/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/pt-br/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/pt/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/ro/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/ru/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/sk/hd_idle.po16
-rw-r--r--applications/luci-app-hd-idle/po/sv/hd_idle.po16
-rw-r--r--applications/luci-app-hd-idle/po/templates/hd_idle.pot16
-rw-r--r--applications/luci-app-hd-idle/po/tr/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/uk/hd_idle.po22
-rw-r--r--applications/luci-app-hd-idle/po/vi/hd_idle.po24
-rw-r--r--applications/luci-app-hd-idle/po/zh-cn/hd_idle.po20
-rw-r--r--applications/luci-app-hd-idle/po/zh-tw/hd_idle.po20
-rw-r--r--applications/luci-app-lxc/Makefile17
-rw-r--r--applications/luci-app-lxc/htdocs/luci-static/resources/cbi/green.gifbin0 -> 310 bytes
-rw-r--r--applications/luci-app-lxc/htdocs/luci-static/resources/cbi/purple.gifbin0 -> 317 bytes
-rw-r--r--applications/luci-app-lxc/htdocs/luci-static/resources/cbi/red.gifbin0 -> 320 bytes
-rw-r--r--applications/luci-app-lxc/luasrc/controller/lxc.lua167
-rw-r--r--applications/luci-app-lxc/luasrc/model/cbi/lxc.lua31
-rw-r--r--applications/luci-app-lxc/luasrc/view/lxc.htm458
-rw-r--r--applications/luci-app-lxc/root/etc/config/lxc6
-rw-r--r--applications/luci-app-meshwizard/luasrc/model/cbi/freifunk/meshwizard.lua5
-rw-r--r--applications/luci-app-meshwizard/po/pt-br/meshwizard.po11
-rw-r--r--applications/luci-app-mjpg-streamer/po/pt-br/mjpg-streamer.po172
-rw-r--r--applications/luci-app-mwan3/Makefile19
-rw-r--r--applications/luci-app-mwan3/luasrc/controller/mwan3.lua331
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua55
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua32
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua32
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua32
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua266
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua250
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua46
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua47
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua95
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua65
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua141
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua113
-rw-r--r--applications/luci-app-mwan3/luasrc/view/admin_status/index/mwan.htm1
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm129
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm24
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm24
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm24
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm74
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm24
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm34
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm83
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm51
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm122
-rw-r--r--applications/luci-app-mwan3/po/ja/mwan3.po562
-rw-r--r--applications/luci-app-mwan3/po/templates/mwan3.pot464
-rw-r--r--applications/luci-app-mwan3/po/zh-cn/mwan3.po510
-rwxr-xr-xapplications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak38
-rwxr-xr-xapplications/luci-app-mwan3/root/etc/uci-defaults/60_luci-mwan314
-rw-r--r--applications/luci-app-olsr/po/pt-br/olsr.po17
-rw-r--r--applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua879
-rw-r--r--applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua2
-rw-r--r--applications/luci-app-openvpn/po/pt-br/openvpn.po18
-rw-r--r--applications/luci-app-openvpn/po/zh-cn/openvpn.po12
-rw-r--r--applications/luci-app-privoxy/po/pt-br/privoxy.po516
-rw-r--r--applications/luci-app-radicale/po/pt-br/radicale.po432
-rw-r--r--applications/luci-app-samba/luasrc/model/cbi/samba.lua9
-rw-r--r--applications/luci-app-samba/po/ca/samba.po3
-rw-r--r--applications/luci-app-samba/po/cs/samba.po3
-rw-r--r--applications/luci-app-samba/po/de/samba.po3
-rw-r--r--applications/luci-app-samba/po/el/samba.po3
-rw-r--r--applications/luci-app-samba/po/en/samba.po3
-rw-r--r--applications/luci-app-samba/po/es/samba.po3
-rw-r--r--applications/luci-app-samba/po/fr/samba.po3
-rw-r--r--applications/luci-app-samba/po/he/samba.po3
-rw-r--r--applications/luci-app-samba/po/hu/samba.po3
-rw-r--r--applications/luci-app-samba/po/it/samba.po3
-rw-r--r--applications/luci-app-samba/po/ja/samba.po3
-rw-r--r--applications/luci-app-samba/po/ms/samba.po3
-rw-r--r--applications/luci-app-samba/po/no/samba.po3
-rw-r--r--applications/luci-app-samba/po/pl/samba.po3
-rw-r--r--applications/luci-app-samba/po/pt-br/samba.po3
-rw-r--r--applications/luci-app-samba/po/pt/samba.po3
-rw-r--r--applications/luci-app-samba/po/ro/samba.po3
-rw-r--r--applications/luci-app-samba/po/ru/samba.po3
-rw-r--r--applications/luci-app-samba/po/sk/samba.po3
-rw-r--r--applications/luci-app-samba/po/sv/samba.po3
-rw-r--r--applications/luci-app-samba/po/templates/samba.pot3
-rw-r--r--applications/luci-app-samba/po/tr/samba.po3
-rw-r--r--applications/luci-app-samba/po/uk/samba.po3
-rw-r--r--applications/luci-app-samba/po/vi/samba.po3
-rw-r--r--applications/luci-app-samba/po/zh-cn/samba.po3
-rw-r--r--applications/luci-app-samba/po/zh-tw/samba.po7
-rw-r--r--applications/luci-app-shadowsocks-libev/po/pt-br/shadowsocks-libev.po97
-rw-r--r--applications/luci-app-shairplay/po/pt-br/shairplay.po54
-rw-r--r--applications/luci-app-simple-adblock/Makefile16
-rw-r--r--applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua7
-rw-r--r--applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua79
-rw-r--r--applications/luci-app-simple-adblock/po/ja/simple-adblock.po93
-rw-r--r--applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po86
-rw-r--r--applications/luci-app-simple-adblock/po/pt/simple-adblock.po86
-rw-r--r--applications/luci-app-simple-adblock/po/templates/simple-adblock.pot80
-rw-r--r--applications/luci-app-simple-adblock/root/etc/uci-defaults/40_luci-simple-adblock10
-rw-r--r--applications/luci-app-squid/Makefile18
-rw-r--r--applications/luci-app-squid/luasrc/controller/squid.lua21
-rw-r--r--applications/luci-app-squid/luasrc/model/cbi/squid.lua67
-rw-r--r--applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua3
-rw-r--r--applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua14
-rw-r--r--applications/luci-app-statistics/luasrc/statistics/datatree.lua14
-rw-r--r--applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/contextswitch.lua23
-rw-r--r--applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua53
-rw-r--r--applications/luci-app-statistics/po/ca/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/cs/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/de/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/el/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/en/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/es/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/fr/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/he/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/hu/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/it/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/ja/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/ms/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/no/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/pl/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/pt-br/statistics.po94
-rw-r--r--applications/luci-app-statistics/po/pt/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/ro/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/ru/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/sk/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/sv/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/templates/statistics.pot9
-rw-r--r--applications/luci-app-statistics/po/tr/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/uk/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/vi/statistics.po9
-rw-r--r--applications/luci-app-statistics/po/zh-cn/rrdtool.po135
-rw-r--r--applications/luci-app-statistics/po/zh-cn/statistics.po72
-rw-r--r--applications/luci-app-statistics/po/zh-tw/statistics.po9
-rw-r--r--applications/luci-app-statistics/root/etc/config/luci_statistics3
-rwxr-xr-xapplications/luci-app-statistics/root/usr/bin/stat-genconfig12
-rw-r--r--applications/luci-app-travelmate/Makefile6
-rw-r--r--applications/luci-app-travelmate/luasrc/controller/travelmate.lua21
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua53
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua36
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua36
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua36
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua38
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua170
-rw-r--r--applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm10
-rw-r--r--applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm15
-rw-r--r--applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm10
-rw-r--r--applications/luci-app-travelmate/po/ja/travelmate.po320
-rw-r--r--applications/luci-app-travelmate/po/pt-br/travelmate.po253
-rw-r--r--applications/luci-app-travelmate/po/templates/travelmate.pot159
-rw-r--r--applications/luci-app-uhttpd/Makefile7
-rw-r--r--applications/luci-app-uhttpd/po/pt-br/uhttpd.po208
-rw-r--r--applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua12
-rwxr-xr-xapplications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp2
-rw-r--r--applications/luci-app-vpnbypass/Makefile3
-rw-r--r--applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua51
-rw-r--r--applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po90
-rw-r--r--applications/luci-app-vpnbypass/po/templates/vpnbypass.pot13
-rw-r--r--applications/luci-app-watchcat/po/pt-br/watchcat.po13
-rw-r--r--applications/luci-app-wifischedule/po/pt-br/wifischedule.po114
-rw-r--r--applications/luci-app-wireguard/Makefile17
-rw-r--r--applications/luci-app-wireguard/luasrc/controller/wireguard.lua8
-rw-r--r--applications/luci-app-wireguard/luasrc/view/wireguard.htm209
-rw-r--r--applications/luci-app-wireguard/po/ja/wireguard.po74
-rw-r--r--applications/luci-app-wireguard/po/pt-br/wireguard.po73
-rw-r--r--applications/luci-app-wireguard/po/templates/wireguard.pot62
-rw-r--r--applications/luci-app-wireguard/po/zh-cn/wireguard.po73
-rw-r--r--applications/luci-app-wol/po/pt-br/wol.po15
-rwxr-xr-xbuild/zoneinfo2lua.pl28
-rw-r--r--contrib/package/community-profiles/files/etc/config/profile_potsdam22
-rw-r--r--contrib/package/freifunk-common/Makefile2
-rw-r--r--contrib/package/freifunk-common/files/etc/config/freifunk6
-rw-r--r--contrib/package/meshwizard/Makefile2
-rwxr-xr-xcontrib/package/meshwizard/files/usr/bin/meshwizard/helpers/rename-wifi.sh2
-rwxr-xr-xcontrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi.sh5
-rwxr-xr-xcontrib/package/meshwizard/files/usr/bin/meshwizard/helpers/supports_vap.sh4
-rw-r--r--luci.mk7
-rw-r--r--modules/luci-base/luasrc/cbi/datatypes.lua8
-rw-r--r--modules/luci-base/luasrc/dispatcher.lua6
-rw-r--r--modules/luci-base/luasrc/model/network.lua2
-rw-r--r--modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua263
-rw-r--r--modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua93
-rw-r--r--modules/luci-base/po/ca/base.po145
-rw-r--r--modules/luci-base/po/cs/base.po145
-rw-r--r--modules/luci-base/po/de/base.po159
-rw-r--r--modules/luci-base/po/el/base.po139
-rw-r--r--modules/luci-base/po/en/base.po137
-rw-r--r--modules/luci-base/po/es/base.po145
-rw-r--r--modules/luci-base/po/fr/base.po147
-rw-r--r--modules/luci-base/po/he/base.po112
-rw-r--r--modules/luci-base/po/hu/base.po145
-rw-r--r--modules/luci-base/po/it/base.po141
-rw-r--r--modules/luci-base/po/ja/base.po377
-rw-r--r--modules/luci-base/po/ko/base.po95
-rw-r--r--modules/luci-base/po/ms/base.po137
-rw-r--r--modules/luci-base/po/no/base.po147
-rw-r--r--modules/luci-base/po/pl/base.po149
-rw-r--r--modules/luci-base/po/pt-br/base.po870
-rw-r--r--modules/luci-base/po/pt/base.po147
-rw-r--r--modules/luci-base/po/ro/base.po127
-rw-r--r--modules/luci-base/po/ru/base.po147
-rw-r--r--modules/luci-base/po/sk/base.po95
-rw-r--r--modules/luci-base/po/sv/base.po95
-rw-r--r--modules/luci-base/po/templates/base.pot95
-rw-r--r--modules/luci-base/po/tr/base.po104
-rw-r--r--modules/luci-base/po/uk/base.po147
-rw-r--r--modules/luci-base/po/vi/base.po137
-rw-r--r--modules/luci-base/po/zh-cn/base.po1022
-rw-r--r--modules/luci-base/po/zh-tw/base.po145
-rw-r--r--modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua3
-rw-r--r--modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua6
-rw-r--r--modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua175
-rw-r--r--modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua5
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm4
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm6
-rw-r--r--modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua20
-rw-r--r--protocols/luci-proto-ncm/Makefile14
-rw-r--r--protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua157
-rw-r--r--protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua61
-rw-r--r--protocols/luci-proto-vpnc/Makefile5
-rw-r--r--protocols/luci-proto-wireguard/Makefile1
-rw-r--r--protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua20
-rw-r--r--themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm7
-rw-r--r--themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm4
-rw-r--r--[-rwxr-xr-x]themes/luci-theme-material/luasrc/view/themes/material/header.htm215
-rw-r--r--themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm4
285 files changed, 17235 insertions, 3947 deletions
diff --git a/applications/luci-app-adblock/Makefile b/applications/luci-app-adblock/Makefile
index 8efe2d6048..ae1eba2516 100644
--- a/applications/luci-app-adblock/Makefile
+++ b/applications/luci-app-adblock/Makefile
@@ -1,14 +1,12 @@
-# Copyright (C) 2016 Openwrt.org
-#
-# This is free software, licensed under the Apache License, Version 2.0 .
-#
+# Copyright 2017 Dirk Brenken (dev@brenken.org)
+# This is free software, licensed under the Apache License, Version 2.0
include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI support for Adblock
-LUCI_DEPENDS:=+adblock
+LUCI_DEPENDS:=+adblock +luci-lib-jsonc
LUCI_PKGARCH:=all
include ../../luci.mk
-# call BuildPackage - OpenWrt buildroot signature
+# call BuildPackage - OpenWrt buildroot signature \ No newline at end of file
diff --git a/applications/luci-app-adblock/luasrc/controller/adblock.lua b/applications/luci-app-adblock/luasrc/controller/adblock.lua
index d8b471814f..03b9fc20eb 100644
--- a/applications/luci-app-adblock/luasrc/controller/adblock.lua
+++ b/applications/luci-app-adblock/luasrc/controller/adblock.lua
@@ -1,12 +1,52 @@
--- Copyright 2016 Openwrt.org
--- Licensed to the public under the Apache License 2.0.
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
module("luci.controller.adblock", package.seeall)
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local template = require("luci.template")
+local i18n = require("luci.i18n")
+
function index()
if not nixio.fs.access("/etc/config/adblock") then
return
end
+ entry({"admin", "services", "adblock"}, firstchild(), _("Adblock"), 30).dependent = false
+ entry({"admin", "services", "adblock", "tab_from_cbi"}, cbi("adblock/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true
+ entry({"admin", "services", "adblock", "logfile"}, call("logread"), _("View Logfile"), 20).leaf = true
+ entry({"admin", "services", "adblock", "advanced"}, firstchild(), _("Advanced"), 100)
+ entry({"admin", "services", "adblock", "advanced", "blacklist"}, cbi("adblock/blacklist_tab"), _("Edit Blacklist"), 110).leaf = true
+ entry({"admin", "services", "adblock", "advanced", "whitelist"}, cbi("adblock/whitelist_tab"), _("Edit Whitelist"), 120).leaf = true
+ entry({"admin", "services", "adblock", "advanced", "configuration"}, cbi("adblock/configuration_tab"), _("Edit Configuration"), 130).leaf = true
+ entry({"admin", "services", "adblock", "advanced", "query"}, call("query"), _("Query domains"), 140).leaf = true
+ entry({"admin", "services", "adblock", "advanced", "result"}, call("queryData"), nil, 150).leaf = true
+end
+
+function logread()
+ local logfile = util.trim(util.exec("logread -e 'adblock'"))
+ template.render("adblock/logread", {title = i18n.translate("Adblock Logfile"), content = logfile})
+end
- entry({"admin", "services", "adblock"}, cbi("adblock"), _("Adblock"), 40)
+function query()
+ template.render("adblock/query", {title = i18n.translate("Adblock Domain Query")})
+end
+
+function queryData(domain)
+ if domain and domain:match("^[a-zA-Z0-9%-%._]+$") then
+ luci.http.prepare_content("text/plain")
+ local cmd = "/etc/init.d/adblock query %q 2>&1"
+ local util = io.popen(cmd % domain)
+ if util then
+ while true do
+ local line = util:read("*l")
+ if not line then
+ break
+ end
+ luci.http.write(line)
+ luci.http.write("\n")
+ end
+ util:close()
+ end
+ end
end
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock.lua
deleted file mode 100644
index 0a4a4cdd2f..0000000000
--- a/applications/luci-app-adblock/luasrc/model/cbi/adblock.lua
+++ /dev/null
@@ -1,63 +0,0 @@
--- Copyright 2016 Hannu Nyman
--- Licensed to the public under the Apache License 2.0.
-
-m = Map("adblock", translate("Adblock"),
- translate("Configuration of the adblock package to block ad/abuse domains by using DNS."))
-
--- General options
-
-s = m:section(NamedSection, "global", "adblock", translate("Global options"))
-
-o1 = s:option(Flag, "adb_enabled", translate("Enable adblock"))
-o1.rmempty = false
-o1.default = 0
-
-o3 = s:option(Value, "adb_whitelist", translate("Whitelist file"),
- translate("File with whitelisted hosts/domains that are allowed despite being on a blocklist."))
-o3.rmempty = false
-o3.datatype = "file"
-
--- Blocklist options
-
-bl = m:section(TypedSection, "source", translate("Blocklist sources"),
- translate("Available blocklist sources (")
- .. [[<a href="https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md" target="_blank">]]
- .. translate("see list details")
- .. [[</a>]]
- .. translate("). Note that list URLs and Shallalist category selections are not configurable via Luci."))
-bl.template = "cbi/tblsection"
-
-name = bl:option(Flag, "enabled", translate("Enabled"))
-name.rmempty = false
-
-des = bl:option(DummyValue, "adb_src_desc", translate("Description"))
-
--- Additional options
-
-s2 = m:section(NamedSection, "global", "adblock", translate("Backup options"))
-
-o4 = s2:option(Flag, "adb_backup", translate("Enable blocklist backup"))
-o4.rmempty = false
-o4.default = 0
-
-o5 = s2:option(Value, "adb_backupdir", translate("Backup directory"))
-o5.rmempty = false
-o5.datatype = "directory"
-
--- Extra options
-
-e = m:section(NamedSection, "global", "adblock", translate("Extra options"),
- translate("Options for further tweaking in case the defaults are not suitable for you."))
-
-a = e:option(Flag, "adb_debug", translate("Enable verbose debug logging"))
-a.default = a.disabled
-a.rmempty = false
-
-a = e:option(Value, "adb_iface", translate("Restrict reload trigger to certain interface(s)"),
- translate("Space separated list of wan interfaces that trigger reload action. " ..
- "To disable reload trigger set it to 'false'. Default: empty"))
-a.datatype = "network"
-a.rmempty = true
-
-return m
-
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua
new file mode 100644
index 0000000000..59cd1e80fa
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua
@@ -0,0 +1,51 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local uci = require("uci")
+local adbinput = uci.get("adblock", "blacklist", "adb_src" or "/etc/adblock/adblock.blacklist")
+
+if not nixio.fs.access(adbinput) then
+ m = SimpleForm("error", nil,
+ translate("Input file not found, please check your configuration."))
+ m.reset = false
+ m.submit = false
+ return m
+end
+
+if nixio.fs.stat(adbinput).size > 524288 then
+ m = SimpleForm("error", nil,
+ translate("The file size is too large for online editing in LuCI (&gt; 512 KB). ")
+ .. translate("Please edit this file directly in a terminal session."))
+ m.reset = false
+ m.submit = false
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("adblock/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translatef("This form allows you to modify the content of the adblock blacklist (%s).<br />", adbinput)
+ .. translate("Please add only one domain per line. Comments introduced with '#' are allowed - ip addresses, wildcards and regex are not."))
+
+f = s:option(TextValue, "data")
+f.datatype = "string"
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(adbinput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua
new file mode 100644
index 0000000000..1607f1440a
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua
@@ -0,0 +1,38 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local adbinput = "/etc/config/adblock"
+
+if not nixio.fs.access(adbinput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ m.reset = false
+ m.submit = false
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("adblock/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main adblock configuration file (/etc/config/adblock)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(adbinput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
new file mode 100644
index 0000000000..f71fb7ba4d
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
@@ -0,0 +1,168 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local uci = require("uci")
+local sys = require("luci.sys")
+local json = require("luci.jsonc")
+local adbinput = uci.get("adblock", "global", "adb_rtfile") or "/tmp/adb_runtime.json"
+local parse = json.parse(fs.readfile(adbinput) or "")
+local dnsFile1 = sys.exec("find '/tmp/dnsmasq.d/.adb_hidden' -maxdepth 1 -type f -name 'adb_list*' -print 2>/dev/null")
+local dnsFile2 = sys.exec("find '/var/lib/unbound/.adb_hidden' -maxdepth 1 -type f -name 'adb_list*' -print 2>/dev/null")
+
+m = Map("adblock", translate("Adblock"),
+ translate("Configuration of the adblock package to block ad/abuse domains by using DNS. ")
+ .. translatef("For further information "
+ .. "<a href=\"%s\" target=\"_blank\">"
+ .. "see online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md"))
+
+function m.on_after_commit(self)
+ luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1")
+ luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
+end
+
+-- Main adblock options
+
+s = m:section(NamedSection, "global", "adblock")
+
+o1 = s:option(Flag, "adb_enabled", translate("Enable adblock"))
+o1.default = o1.enabled
+o1.rmempty = false
+
+btn = s:option(Button, "", translate("Suspend / Resume adblock"))
+if dnsFile1 ~= "" or dnsFile2 ~= "" then
+ btn.inputtitle = translate("Resume adblock")
+ btn.inputstyle = "apply"
+ btn.disabled = false
+ function btn.write()
+ luci.sys.call("/etc/init.d/adblock resume >/dev/null 2>&1")
+ luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
+ end
+else
+ btn.inputtitle = translate("Suspend adblock")
+ btn.inputstyle = "reset"
+ btn.disabled = false
+ function btn.write()
+ luci.sys.call("/etc/init.d/adblock suspend >/dev/null 2>&1")
+ luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
+ end
+end
+
+o2 = s:option(Value, "adb_iface", translate("Restrict interface trigger to certain interface(s)"),
+ translate("Space separated list of interfaces that trigger adblock processing. "..
+ "To disable event driven (re-)starts remove all entries."))
+o2.rmempty = true
+
+o3 = s:option(Value, "adb_triggerdelay", translate("Trigger delay"),
+ translate("Additional trigger delay in seconds before adblock processing begins."))
+o3.default = 2
+o3.datatype = "range(1,90)"
+o3.rmempty = false
+
+o4 = s:option(Flag, "adb_debug", translate("Enable verbose debug logging"))
+o4.default = o4.disabled
+o4.rmempty = false
+
+-- Runtime information
+
+ds = s:option(DummyValue, "_dummy", translate("Runtime information"))
+ds.template = "cbi/nullsection"
+
+dv1 = s:option(DummyValue, "status", translate("Status"))
+dv1.template = "adblock/runtime"
+if parse == nil then
+ dv1.value = translate("n/a")
+elseif parse.data.blocked_domains == "0" then
+ dv1.value = translate("no domains blocked")
+elseif dnsFile1 ~= "" or dnsFile2 ~= "" then
+ dv1.value = translate("suspended")
+else
+ dv1.value = translate("active")
+end
+dv2 = s:option(DummyValue, "adblock_version", translate("Adblock version"))
+dv2.template = "adblock/runtime"
+if parse ~= nil then
+ dv2.value = parse.data.adblock_version or translate("n/a")
+else
+ dv2.value = translate("n/a")
+end
+
+dv3 = s:option(DummyValue, "fetch_info", translate("Download Utility (SSL Library)"),
+ translate("For SSL protected blocklist sources you need a suitable SSL library, e.g. 'libustream-ssl' or the wget 'built-in'."))
+dv3.template = "adblock/runtime"
+if parse ~= nil then
+ dv3.value = parse.data.fetch_info or translate("n/a")
+else
+ dv3.value = translate("n/a")
+end
+
+dv4 = s:option(DummyValue, "dns_backend", translate("DNS backend"))
+dv4.template = "adblock/runtime"
+if parse ~= nil then
+ dv4.value = parse.data.dns_backend or translate("n/a")
+else
+ dv4.value = translate("n/a")
+end
+
+dv5 = s:option(DummyValue, "blocked_domains", translate("Blocked domains (overall)"))
+dv5.template = "adblock/runtime"
+if parse ~= nil then
+ dv5.value = parse.data.blocked_domains or translate("n/a")
+else
+ dv5.value = translate("n/a")
+end
+
+dv6 = s:option(DummyValue, "last_rundate", translate("Last rundate"))
+dv6.template = "adblock/runtime"
+if parse ~= nil then
+ dv6.value = parse.data.last_rundate or translate("n/a")
+else
+ dv6.value = translate("n/a")
+end
+
+-- Blocklist table
+
+bl = m:section(TypedSection, "source", translate("Blocklist sources"),
+ translate("Available blocklist sources. ")
+ .. translate("Note that list URLs and Shallalist category selections are configurable in the 'Advanced' section."))
+bl.template = "cbi/tblsection"
+
+name = bl:option(Flag, "enabled", translate("Enabled"))
+name.rmempty = false
+
+ssl = bl:option(DummyValue, "adb_src", translate("SSL req."))
+function ssl.cfgvalue(self, section)
+ local source = self.map:get(section, "adb_src")
+ if source and source:match("https://") then
+ return translate("Yes")
+ else
+ return translate("No")
+ end
+end
+
+des = bl:option(DummyValue, "adb_src_desc", translate("Description"))
+
+-- Extra options
+
+e = m:section(NamedSection, "global", "adblock", translate("Extra options"),
+ translate("Options for further tweaking in case the defaults are not suitable for you."))
+
+e1 = e:option(Flag, "adb_forcedns", translate("Force local DNS"),
+ translate("Redirect all DNS queries to the local resolver."))
+e1.default = e1.disabled
+e1.rmempty = false
+
+e2 = e:option(Flag, "adb_forcesrt", translate("Force Overall Sort"),
+ translate("Enable memory intense overall sort / duplicate removal on low memory devices (&lt; 64 MB RAM)"))
+e2.default = e2.disabled
+e2.rmempty = false
+
+e3 = e:option(Flag, "adb_backup", translate("Enable blocklist backup"))
+e3.default = e3.disabled
+e3.rmempty = false
+
+e4 = e:option(Value, "adb_backupdir", translate("Backup directory"))
+e4.datatype = "directory"
+e4.rmempty = false
+
+return m
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua
new file mode 100644
index 0000000000..10a593859f
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua
@@ -0,0 +1,50 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local uci = require("uci")
+local adbinput = uci.get("adblock", "global", "adb_whitelist") or "/etc/adblock/adblock.whitelist"
+
+if not nixio.fs.access(adbinput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ m.reset = false
+ m.submit = false
+ return m
+end
+
+if nixio.fs.stat(adbinput).size > 524288 then
+ m = SimpleForm("error", nil,
+ translate("The file size is too large for online editing in LuCI (&gt; 512 KB). ")
+ .. translate("Please edit this file directly in a terminal session."))
+ m.reset = false
+ m.submit = false
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("adblock/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translatef("This form allows you to modify the content of the adblock whitelist (%s).<br />", adbinput)
+ .. translate("Please add only one domain per line. Comments introduced with '#' are allowed - ip addresses, wildcards and regex are not."))
+
+f = s:option(TextValue, "data")
+f.datatype = "string"
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(adbinput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/config_css.htm b/applications/luci-app-adblock/luasrc/view/adblock/config_css.htm
new file mode 100644
index 0000000000..53493a18fb
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/view/adblock/config_css.htm
@@ -0,0 +1,10 @@
+<style type="text/css">
+ textarea
+ {
+ border: 1px solid #cccccc;
+ padding: 5px;
+ font-size: 12px;
+ font-family: monospace;
+ resize: none;
+ }
+</style>
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/logread.htm b/applications/luci-app-adblock/luasrc/view/adblock/logread.htm
new file mode 100644
index 0000000000..5e25a549c6
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/view/adblock/logread.htm
@@ -0,0 +1,14 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+<div class="cbi-map">
+ <fieldset class="cbi-section">
+ <div class="cbi-section-descr"><%:This form shows the syslog output, pre-filtered for adblock related messages only.%></div>
+ <textarea id="logread_id" style="width: 100%; height: 450px; border: 1px solid #cccccc; padding: 5px; font-size: 12px; font-family: monospace; resize: none;" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+2%>"><%=content:pcdata()%></textarea>
+ </fieldset>
+</div>
+<%+footer%>
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/query.htm b/applications/luci-app-adblock/luasrc/view/adblock/query.htm
new file mode 100644
index 0000000000..ce706e40aa
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/view/adblock/query.htm
@@ -0,0 +1,65 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">
+//<![CDATA[
+ var stxhr = new XHR();
+
+ function update_status(data)
+ {
+ var domain = data.value;
+ var input = document.getElementById('query_input');
+ var output = document.getElementById('query_output');
+
+ if (input && output)
+ {
+ output.innerHTML =
+ '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> ' +
+ '<%:Waiting for command to complete...%>'
+ ;
+ input.parentNode.style.display = 'block';
+ input.style.display = 'inline';
+ stxhr.post('<%=luci.dispatcher.build_url('admin/services/adblock/advanced/result/')%>' + domain, { token: '<%=token%>' },
+ function(x)
+ {
+ if (x.responseText)
+ {
+ input.style.display = 'none';
+ output.innerHTML = String.format('<pre>%h</pre>', x.responseText);
+ }
+ else
+ {
+ input.style.display = 'none';
+ output.innerHTML = '<span class="error"><%:Invalid domain specified!%></span>';
+ }
+ }
+ );
+ }
+ }
+//]]>
+</script>
+
+<form method="post" action="<%=REQUEST_URI%>">
+ <div class="cbi-map">
+ <fieldset class="cbi-section">
+ <div class="cbi-section-descr"><%:This form allows you to query active block lists for certain domains, e.g. for whitelisting.%></div>
+ <div style="width:33%; float:left;">
+ <input style="margin: 5px 0" type="text" value="www.lede-project.org" name="input" />
+ <input type="button" value="<%:Query%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.input)" />
+ </div>
+ <br style="clear:both" />
+ <br />
+ </fieldset>
+ </div>
+ <fieldset class="cbi-section" style="display:none">
+ <legend id="query_input"><%:Collecting data...%></legend>
+ <span id="query_output"></span>
+ </fieldset>
+</form>
+
+<%+footer%>
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm b/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm
new file mode 100644
index 0000000000..ee3a4553a8
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm
@@ -0,0 +1,10 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+cbi/valueheader%>
+
+<input name="runtime" id="runtime" type="text" class="cbi-input-text" style="border: none; box-shadow: none; background-color: #ffffff; color: #0069d6;" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
+
+<%+cbi/valuefooter%>
diff --git a/applications/luci-app-adblock/po/ja/adblock.po b/applications/luci-app-adblock/po/ja/adblock.po
index a3c982f3d1..ac470fedd6 100644
--- a/applications/luci-app-adblock/po/ja/adblock.po
+++ b/applications/luci-app-adblock/po/ja/adblock.po
@@ -8,45 +8,79 @@ msgstr ""
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.0.1\n"
"Language: ja\n"
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
-msgstr ""
-")。ã“れらã®ãƒªã‚¹ãƒˆã®URLãŠã‚ˆã³shallaリストã®ã‚«ãƒ†ã‚´ãƒªãƒ¼é¸æŠžã¯ã€Luciã«ã‚ˆã£ã¦è¨­å®š"
-"ã§ããªã„ã“ã¨ã«æ³¨æ„ã—ã¾ã™ã€‚"
-
msgid "Adblock"
msgstr "Adblock"
-msgid "Available blocklist sources ("
-msgstr "利用å¯èƒ½ãªãƒ–ロックリストæ供元ã§ã™ï¼ˆ"
+msgid "Adblock Domain Query"
+msgstr "Adblock ドメイン検索"
+
+msgid "Adblock Logfile"
+msgstr "Adblock ログファイル"
+
+msgid "Adblock version"
+msgstr "Adblock ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr "Adblock ã®å‡¦ç†ãŒé–‹å§‹ã•ã‚Œã‚‹ã¾ã§ã®ã€è¿½åŠ ã®é…延時間(秒)ã§ã™ã€‚"
+
+msgid "Advanced"
+msgstr "詳細設定"
+
+msgid "Available blocklist sources."
+msgstr "利用å¯èƒ½ãªãƒ–ロックリストæ供元ã§ã™ã€‚"
msgid "Backup directory"
-msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ— ディレクトリ"
+msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—å…ˆ ディレクトリ"
-msgid "Backup options"
-msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ— オプション"
+msgid "Blocked domains (overall)"
+msgstr "ブロック済ã¿ãƒ‰ãƒ¡ã‚¤ãƒ³ï¼ˆå…¨ä½“)"
msgid "Blocklist sources"
msgstr "ブロックリストæ供元"
+msgid "Collecting data..."
+msgstr "データåŽé›†ä¸­ã§ã™..."
+
msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr ""
-"広告/ä¸æ­£ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚’DNSを利用ã—ã¦ãƒ–ロックã™ã‚‹ã€adblock パッケージã®è¨­å®šã§ã™ã€‚"
+"DNS ã®åˆ©ç”¨ã«ã‚ˆã£ã¦åºƒå‘Š/ä¸æ­£ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚’ブロックã™ã‚‹ã€Adblock パッケージã®è¨­å®šã§"
+"ã™ã€‚"
+
+msgid "DNS backend"
+msgstr "DNS ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰"
msgid "Description"
msgstr "説明"
+msgid "Download Utility (SSL Library)"
+msgstr "ダウンロード ユーティリティ(SSL ライブラリ)"
+
+msgid "Edit Blacklist"
+msgstr "ブラックリストã®ç·¨é›†"
+
+msgid "Edit Configuration"
+msgstr "設定ã®ç·¨é›†"
+
+msgid "Edit Whitelist"
+msgstr "ホワイトリストã®ç·¨é›†"
+
msgid "Enable adblock"
-msgstr "adblockã®æœ‰åŠ¹åŒ–"
+msgstr "Adblock ã®æœ‰åŠ¹åŒ–"
msgid "Enable blocklist backup"
msgstr "ブロックリスト ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã®æœ‰åŠ¹åŒ–"
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB RAM)"
+msgstr ""
+"メモリー容é‡ã®å°‘ãªã„デãƒã‚¤ã‚¹ï¼ˆRAM 64MB 未満)ã«ãŠã„ã¦ã€ä¸€æ™‚ファイル内ã®å…¨ä½“çš„"
+"ãªã‚½ãƒ¼ãƒˆåŠã³é‡è¤‡ã®é™¤åŽ»ã‚’有効ã«ã—ã¾ã™ã€‚"
+
msgid "Enable verbose debug logging"
msgstr "詳細ãªãƒ‡ãƒãƒƒã‚° ログã®æœ‰åŠ¹åŒ–"
@@ -57,34 +91,240 @@ msgid "Extra options"
msgstr "拡張設定"
msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+"SSLã§ä¿è­·ã•ã‚Œã¦ã„るブロックリストã®å–å¾—ã«ã¯ã€é©åˆ‡ãªSSL ライブラリãŒå¿…è¦ã§ã™ã€‚"
+"例: 'libustream-ssl' ã¾ãŸã¯ wget 'ビルトイン'"
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
msgstr ""
-"ファイルã®ãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆ ホスト/ドメインã¯ã€ãƒ–ロックリストã«ç™»éŒ²ã•ã‚Œã¦ã„ã¦ã‚‚"
-"許å¯ã•ã‚Œã¾ã™ã€‚"
+"詳細ãªæƒ…å ±ã¯<a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a>を確"
+"èªã—ã¦ãã ã•ã„。"
+
+msgid "Force Overall Sort"
+msgstr "全体ソートã®å¼·åˆ¶"
+
+msgid "Force local DNS"
+msgstr "ローカル DNS ã®å¼·åˆ¶"
+
+msgid "Input file not found, please check your configuration."
+msgstr "入力ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。設定を確èªã—ã¦ãã ã•ã„。"
+
+msgid "Invalid domain specified!"
+msgstr "無効ãªãƒ‰ãƒ¡ã‚¤ãƒ³ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ï¼"
-msgid "Global options"
-msgstr "一般設定"
+msgid "Last rundate"
+msgstr "最終実行日時"
+
+msgid "Loading"
+msgstr "読込中"
+
+msgid "No"
+msgstr "ã„ã„ãˆ"
+
+msgid ""
+"Note that list URLs and Shallalist category selections are configurable in "
+"the 'Advanced' section."
+msgstr ""
+"リスト㮠URL åŠã³ \"Shalla\" リストã®ã‚«ãƒ†ã‚´ãƒªãƒ¼è¨­å®šã¯ã€'詳細設定' セクション"
+"ã§è¨­å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
msgid ""
"Options for further tweaking in case the defaults are not suitable for you."
msgstr "デフォルト設定ãŒé©åˆ‡ã§ãªã„å ´åˆã€è¿½åŠ ã§è¨­å®šã™ã‚‹ãŸã‚ã®ã‚ªãƒ—ションã§ã™ã€‚"
-msgid "Restrict reload trigger to certain interface(s)"
-msgstr "リロードトリガを特定ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã«é™å®šã™ã‚‹"
+msgid "Overview"
+msgstr "概è¦"
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+"1è¡Œã«1ã¤ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚’追加ã—ã¦ãã ã•ã„。'#' ã‹ã‚‰å§‹ã¾ã‚‹ã‚³ãƒ¡ãƒ³ãƒˆã‚’記述ã§ãã¾ã™"
+"ãŒã€IP アドレスやワイルドカードã€æ­£è¦è¡¨ç¾ã‚’設定値ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›"
+"ん。"
+
+msgid "Please edit this file directly in a terminal session."
+msgstr "ターミナル セッションã§ç›´æŽ¥ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’編集ã—ã¦ãã ã•ã„。"
+
+msgid "Query"
+msgstr "検索"
+
+msgid "Query domains"
+msgstr "ドメインã®æ¤œç´¢"
+
+msgid "Redirect all DNS queries to the local resolver."
+msgstr "å…¨ã¦ã® DNS クエリをローカル リゾルãƒã«ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã—ã¾ã™ã€‚"
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr "インターフェース トリガーを特定ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã«é™å®šã™ã‚‹"
+
+msgid "Resume adblock"
+msgstr "Adblock ã®å†é–‹"
+
+msgid "Runtime information"
+msgstr "実行情報"
+
+msgid "SSL req."
+msgstr "SSL å¿…é ˆ"
+
+msgid ""
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+"Adblock ã®å‡¦ç†ã®ãƒˆãƒªã‚¬ãƒ¼ã¨ãªã‚‹ã€ã‚¹ãƒšãƒ¼ã‚¹ã§åŒºåˆ‡ã‚‰ã‚ŒãŸã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®ãƒªã‚¹ãƒˆ"
+"ã§ã™ã€‚処ç†ã‚’発生ã•ã›ã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã‚’無効ã«ã™ã‚‹ã«ã¯ã€å…¨ã¦ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‚’削除ã—ã¦ç©º"
+"欄ã«ã—ã¾ã™ã€‚"
+
+msgid "Status"
+msgstr "ステータス"
+
+msgid "Suspend / Resume adblock"
+msgstr "Adblock ã®ä¸€æ™‚åœæ­¢/å†é–‹"
+
+msgid "Suspend adblock"
+msgstr "Adblock ã®ä¸€æ™‚åœæ­¢"
+
+msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgstr ""
+"ファイル サイズãŒå¤§ãã™ãŽã‚‹ãŸã‚〠LuCI 上ã§ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ç·¨é›†ã§ãã¾ã›ã‚“(&gt; "
+"512 KB)。"
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+"ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã§ã¯ã€Adblock ブラックリスト (%s) ã®å†…容を変更ã™ã‚‹ã“ã¨ãŒã§ãã¾"
+"ã™ã€‚<br />"
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
+msgstr ""
+"ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã§ã¯ã€Adblock ホワイトリスト (%s) ã®å†…容を変更ã™ã‚‹ã“ã¨ãŒã§ãã¾"
+"ã™ã€‚<br />"
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+"ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã§ã¯ã€ãƒ¡ã‚¤ãƒ³ã®Adblock 設定ファイル (/etc/config/adblock) ã®å†…容を"
+"変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+"ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã§ã¯ã€ç¾åœ¨æœ‰åŠ¹ãªãƒªã‚¹ãƒˆå†…ã§ç‰¹å®šã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚’検索ã™ã‚‹ã“ã¨ãŒã§ãã¾"
+"ã™ã€‚例: ホワイトリスト内"
msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
msgstr ""
-"リロード実行ã®ãƒˆãƒªã‚¬ã¨ãªã‚‹ã€ã‚¹ãƒšãƒ¼ã‚¹ã§åŒºåˆ‡ã‚‰ã‚ŒãŸWANインターフェースã®ãƒªã‚¹ãƒˆã§"
-"ã™ã€‚リロードトリガを無効ã«ã™ã‚‹ã«ã¯ã€ false を設定ã—ã¾ã™ã€‚デフォルト:(空)"
+"ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã«ã¯ã€ã‚·ã‚¹ãƒ†ãƒ ãƒ­ã‚°å†…ã® Adblock ã«é–¢é€£ã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ã¿ãŒè¡¨ç¤ºã•ã‚Œ"
+"ã¾ã™ã€‚"
+
+msgid "Trigger delay"
+msgstr "トリガーé…延"
+
+msgid "View Logfile"
+msgstr "ログファイルを見る"
+
+msgid "Waiting for command to complete..."
+msgstr "コマンドã®å®Œäº†ã‚’ãŠå¾…ã¡ãã ã•ã„..."
+
+msgid "Yes"
+msgstr "ã¯ã„"
+
+msgid "active"
+msgstr "動作中"
+
+msgid "n/a"
+msgstr "利用ä¸å¯"
+
+msgid "no domains blocked"
+msgstr "ブロックã•ã‚ŒãŸãƒ‰ãƒ¡ã‚¤ãƒ³ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+msgid "suspended"
+msgstr "一時åœæ­¢ä¸­"
+
+#~ msgid "."
+#~ msgstr "。"
+
+#~ msgid "For further information"
+#~ msgstr "詳細ãªæƒ…å ±ã¯"
+
+#~ msgid "see online documentation"
+#~ msgstr "オンライン ドキュメントを確èªã—ã¦ãã ã•ã„"
+
+#~ msgid "Backup options"
+#~ msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ— オプション"
+
+#~ msgid "Restrict interface reload trigger to certain interface(s)"
+#~ msgstr "リロード トリガを特定ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã«é™å®šã™ã‚‹"
+
+#~ msgid ""
+#~ "Space separated list of interfaces that trigger a reload action. To "
+#~ "disable reload trigger at all remove all entries."
+#~ msgstr ""
+#~ "リロードã®ãƒˆãƒªã‚¬ã¨ãªã‚‹ã€ã‚¹ãƒšãƒ¼ã‚¹ã§åŒºåˆ‡ã‚‰ã‚ŒãŸã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®ãƒªã‚¹ãƒˆã§ã™ã€‚"
+#~ "リロード トリガを無効ã«ã™ã‚‹ã«ã¯ã€å…¨ã¦ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‚’削除ã—ã¦ç©ºæ¬„ã«ã—ã¾ã™ã€‚"
+
+#~ msgid ""
+#~ "Space separated list of interfaces that trigger a reload action. To "
+#~ "disable reload trigger at all set it to 'false'."
+#~ msgstr ""
+#~ "リロードã®ãƒˆãƒªã‚¬ã¨ãªã‚‹ã€ã‚¹ãƒšãƒ¼ã‚¹ã§åŒºåˆ‡ã‚‰ã‚ŒãŸã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®ãƒªã‚¹ãƒˆã§"
+#~ "ã™ã€‚'false' ã«è¨­å®šã—ãŸå ´åˆã€å…¨ã¦ã®ãƒªãƒ­ãƒ¼ãƒ‰ トリガã¯ç„¡åŠ¹ã«ãªã‚Šã¾ã™ã€‚"
+
+#~ msgid ""
+#~ "Please add only one domain per line. Comments introduced with '#' are "
+#~ "allowed - ip addresses, wildcards & regex are not."
+#~ msgstr ""
+#~ "一行ã«ä¸€ã¤ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚’追加ã—ã¦ãã ã•ã„。'#' ã‹ã‚‰å§‹ã¾ã‚‹ã‚³ãƒ¡ãƒ³ãƒˆã‚’記述ã§ãã¾"
+#~ "ã™ãŒã€IPアドレスやワイルドカードã€æ­£è¦è¡¨ç¾ã‚’設定値ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯ã§ã"
+#~ "ã¾ã›ã‚“。"
+
+#~ msgid ""
+#~ "). Note that list URLs and Shallalist category selections are not "
+#~ "configurable via Luci."
+#~ msgstr ""
+#~ ")。ã“れらã®ãƒªã‚¹ãƒˆã®URLãŠã‚ˆã³shallaリストã®é¸æŠžæ¸ˆã¿ã‚«ãƒ†ã‚´ãƒªãƒ¼ã¯ã€Luciを通"
+#~ "ã—ã¦è¨­å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。"
+
+#~ msgid "Available blocklist sources ("
+#~ msgstr "利用å¯èƒ½ãªãƒ–ロックリストæ供元ã§ã™ï¼ˆ"
+
+#~ msgid ""
+#~ "File with whitelisted hosts/domains that are allowed despite being on a "
+#~ "blocklist."
+#~ msgstr ""
+#~ "ホワイトリスト ファイル内ã®ãƒ›ã‚¹ãƒˆ/ドメインã¯ã€ãƒ–ロックリストã®ç™»éŒ²ã«é–¢ã‚ら"
+#~ "ãšè¨±å¯ã•ã‚Œã¾ã™ã€‚"
+
+#~ msgid "Global options"
+#~ msgstr "一般設定"
+
+#~ msgid "Restrict reload trigger to certain interface(s)"
+#~ msgstr "リロードトリガを特定ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã«é™å®šã™ã‚‹"
+
+#~ msgid ""
+#~ "Space separated list of wan interfaces that trigger reload action. To "
+#~ "disable reload trigger set it to 'false'. Default: empty"
+#~ msgstr ""
+#~ "リロード実行ã®ãƒˆãƒªã‚¬ã¨ãªã‚‹ã€ã‚¹ãƒšãƒ¼ã‚¹ã§åŒºåˆ‡ã‚‰ã‚ŒãŸWANインターフェースã®ãƒªã‚¹"
+#~ "トã§ã™ã€‚リロードトリガを無効ã«ã™ã‚‹ã«ã¯ã€ false を設定ã—ã¾ã™ã€‚デフォルト:"
+#~ "(空)"
-msgid "Whitelist file"
-msgstr "ホワイトリスト ファイル"
+#~ msgid "Whitelist file"
+#~ msgstr "ホワイトリスト ファイル"
-msgid "see list details"
-msgstr "リストã®è©³ç´°ã‚’見る"
+#~ msgid "see list details"
+#~ msgstr "リストã®è©³ç´°ã‚’見る"
#~ msgid "Count"
#~ msgstr "カウント"
diff --git a/applications/luci-app-adblock/po/pt-br/adblock.po b/applications/luci-app-adblock/po/pt-br/adblock.po
new file mode 100644
index 0000000000..72f6910429
--- /dev/null
+++ b/applications/luci-app-adblock/po/pt-br/adblock.po
@@ -0,0 +1,270 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: pt_BR\n"
+
+msgid "Adblock"
+msgstr "Adblock"
+
+msgid "Adblock Domain Query"
+msgstr ""
+
+msgid "Adblock Logfile"
+msgstr ""
+
+msgid "Adblock version"
+msgstr ""
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Available blocklist sources."
+msgstr ""
+
+msgid "Backup directory"
+msgstr "Diretório da cópia de segurança"
+
+msgid "Blocked domains (overall)"
+msgstr ""
+
+msgid "Blocklist sources"
+msgstr "Fontes de listas de bloqueio"
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid ""
+"Configuration of the adblock package to block ad/abuse domains by using DNS."
+msgstr ""
+"Configuração do pacote adblock para bloquear, usando o DNS, domínios que "
+"distribuem propagandas abusivas."
+
+msgid "DNS backend"
+msgstr ""
+
+msgid "Description"
+msgstr "Descrição"
+
+msgid "Download Utility (SSL Library)"
+msgstr ""
+
+msgid "Edit Blacklist"
+msgstr ""
+
+msgid "Edit Configuration"
+msgstr ""
+
+msgid "Edit Whitelist"
+msgstr ""
+
+msgid "Enable adblock"
+msgstr "Habilitar adblock"
+
+msgid "Enable blocklist backup"
+msgstr "Habilitar cópia de segurança da lista de bloqueio"
+
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB RAM)"
+msgstr ""
+
+msgid "Enable verbose debug logging"
+msgstr "Habilite registros detalhados para depuração"
+
+msgid "Enabled"
+msgstr "Habilitado"
+
+msgid "Extra options"
+msgstr "Opções adicionais"
+
+msgid ""
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+
+msgid "Force Overall Sort"
+msgstr ""
+
+msgid "Force local DNS"
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Invalid domain specified!"
+msgstr ""
+
+msgid "Last rundate"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid ""
+"Note that list URLs and Shallalist category selections are configurable in "
+"the 'Advanced' section."
+msgstr ""
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+"Opções para aprimoramentos adicionais caso as opções padrão não sejam "
+"suficientes para você."
+
+msgid "Overview"
+msgstr ""
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+msgid "Query"
+msgstr ""
+
+msgid "Query domains"
+msgstr ""
+
+msgid "Redirect all DNS queries to the local resolver."
+msgstr ""
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Resume adblock"
+msgstr ""
+
+msgid "Runtime information"
+msgstr ""
+
+msgid "SSL req."
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Suspend / Resume adblock"
+msgstr ""
+
+msgid "Suspend adblock"
+msgstr ""
+
+msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "active"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "no domains blocked"
+msgstr ""
+
+msgid "suspended"
+msgstr ""
+
+#~ msgid "Backup options"
+#~ msgstr "Opções da cópia de segurança"
+
+#~ msgid ""
+#~ "). Note that list URLs and Shallalist category selections are not "
+#~ "configurable via Luci."
+#~ msgstr ""
+#~ "). Note que a lista de URL e as seleções de categoria da Shallalist não "
+#~ "são configuráveis pelo Luci."
+
+#~ msgid "Available blocklist sources ("
+#~ msgstr "Fontes de listas de bloqueio disponíveis ("
+
+#~ msgid ""
+#~ "File with whitelisted hosts/domains that are allowed despite being on a "
+#~ "blocklist."
+#~ msgstr ""
+#~ "Arquivo com a lista branca dos equipamentos/domínios que serão "
+#~ "autorizados mesmo estando na lista de bloqueio."
+
+#~ msgid "Global options"
+#~ msgstr "Opções Globais"
+
+#~ msgid "Restrict reload trigger to certain interface(s)"
+#~ msgstr "Restringir o gatilho de recarga para somente alguma(s) interface(s)"
+
+#~ msgid ""
+#~ "Space separated list of wan interfaces that trigger reload action. To "
+#~ "disable reload trigger set it to 'false'. Default: empty"
+#~ msgstr ""
+#~ "Lista das interfaces WAN, separadas por espaço, que podem disparar uma "
+#~ "ação de recarga. Para desabilitar este gatilho, defina-o como 'false'. "
+#~ "Padrão: em branco"
+
+#~ msgid "Whitelist file"
+#~ msgstr "Arquivo da lista branca"
+
+#~ msgid "see list details"
+#~ msgstr "veja os detalhes da lista"
diff --git a/applications/luci-app-adblock/po/sv/adblock.po b/applications/luci-app-adblock/po/sv/adblock.po
index 22a30e9a10..7f271221ae 100644
--- a/applications/luci-app-adblock/po/sv/adblock.po
+++ b/applications/luci-app-adblock/po/sv/adblock.po
@@ -1,41 +1,74 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8\n"
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
+msgid "Adblock"
+msgstr "Adblock"
+
+msgid "Adblock Domain Query"
msgstr ""
-msgid "Adblock"
-msgstr "Blockering av annonser"
+msgid "Adblock Logfile"
+msgstr "Adblock's loggfil"
+
+msgid "Adblock version"
+msgstr "Version för Adblock"
-msgid "Available blocklist sources ("
-msgstr "Tillgängliga källor för blockeringslistor ("
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr "Avancerat"
+
+msgid "Available blocklist sources."
+msgstr "Tillgängliga källor för blockeringslistor"
msgid "Backup directory"
msgstr "Säkerhetskopiera mapp"
-msgid "Backup options"
-msgstr "Alternativ för säkerhetskopiering"
+msgid "Blocked domains (overall)"
+msgstr "Blockerade domäner (övergripande)"
msgid "Blocklist sources"
msgstr "Källor för blockeringslistor"
+msgid "Collecting data..."
+msgstr "Samlar in data..."
+
msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr ""
-"Konfiguration av paket adblock för att blockera annons/otillåtna domäner "
-"genom att användning DNS."
+"Konfiguration av paketet adblock för att blockera annons/otillåtna domäner "
+"genom att använda DNS."
+
+msgid "DNS backend"
+msgstr "Bakände för DNS"
msgid "Description"
msgstr "Beskrivning"
+msgid "Download Utility (SSL Library)"
+msgstr "Nerladdningsprogram (SSL-bibliotek)"
+
+msgid "Edit Blacklist"
+msgstr "Redigera svartlista"
+
+msgid "Edit Configuration"
+msgstr "Redigerar konfigurationen"
+
+msgid "Edit Whitelist"
+msgstr "Redigera vitlista"
+
msgid "Enable adblock"
-msgstr "Aktivera abblock"
+msgstr "Aktivera adblock"
msgid "Enable blocklist backup"
msgstr "Aktivera säkerhetskopiering av blockeringslistan"
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB RAM)"
+msgstr ""
+
msgid "Enable verbose debug logging"
msgstr ""
@@ -46,30 +79,164 @@ msgid "Extra options"
msgstr "Extra alternativ"
msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
msgstr ""
-msgid "Global options"
-msgstr "Globala alternativ"
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+
+msgid "Force Overall Sort"
+msgstr ""
+
+msgid "Force local DNS"
+msgstr "Tvinga lokal DNS"
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+"Inmatningsfilen hittades inte, var vänlig och kontrollera din konfiguration."
+
+msgid "Invalid domain specified!"
+msgstr "Ogiltig domän angiven!"
+
+msgid "Last rundate"
+msgstr ""
+
+msgid "Loading"
+msgstr "Laddar"
+
+msgid "No"
+msgstr "Nej"
+
+msgid ""
+"Note that list URLs and Shallalist category selections are configurable in "
+"the 'Advanced' section."
+msgstr ""
msgid ""
"Options for further tweaking in case the defaults are not suitable for you."
msgstr ""
-msgid "Restrict reload trigger to certain interface(s)"
+msgid "Overview"
+msgstr "Översikt"
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+msgid "Query"
+msgstr ""
+
+msgid "Query domains"
+msgstr ""
+
+msgid "Redirect all DNS queries to the local resolver."
+msgstr ""
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Resume adblock"
+msgstr "Ã…teruppta adblock"
+
+msgid "Runtime information"
+msgstr "Information om kör-tid"
+
+msgid "SSL req."
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Status"
+msgstr "Status"
+
+msgid "Suspend / Resume adblock"
+msgstr "Upphäv / Återuppta adblock"
+
+msgid "Suspend adblock"
+msgstr "Upphäv adblock"
+
+msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
msgstr ""
msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
msgstr ""
-msgid "Whitelist file"
-msgstr "Vitlista fil"
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "View Logfile"
+msgstr "Visa loggfil"
+
+msgid "Waiting for command to complete..."
+msgstr "Väntar på att kommandot ska slutföras..."
+
+msgid "Yes"
+msgstr "Ja"
+
+msgid "active"
+msgstr "aktiv"
+
+msgid "n/a"
+msgstr "n/a"
+
+msgid "no domains blocked"
+msgstr "inga domäner blockerades"
+
+msgid "suspended"
+msgstr "upphävd"
+
+#~ msgid "."
+#~ msgstr "."
+
+#~ msgid "For further information"
+#~ msgstr "För mer information"
+
+#~ msgid "Backup options"
+#~ msgstr "Alternativ för säkerhetskopiering"
+
+#~ msgid "Available blocklist sources ("
+#~ msgstr "Tillgängliga källor för blockeringslistor ("
+
+#~ msgid "Global options"
+#~ msgstr "Globala alternativ"
+
+#~ msgid "Whitelist file"
+#~ msgstr "Vitlista fil"
-msgid "see list details"
-msgstr "se listans detaljer"
+#~ msgid "see list details"
+#~ msgstr "se listans detaljer"
#~ msgid "Count"
#~ msgstr "Räkna"
diff --git a/applications/luci-app-adblock/po/templates/adblock.pot b/applications/luci-app-adblock/po/templates/adblock.pot
index 6b2dbd13b3..c5771ef22e 100644
--- a/applications/luci-app-adblock/po/templates/adblock.pot
+++ b/applications/luci-app-adblock/po/templates/adblock.pot
@@ -1,39 +1,72 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
+msgid "Adblock"
msgstr ""
-msgid "Adblock"
+msgid "Adblock Domain Query"
+msgstr ""
+
+msgid "Adblock Logfile"
+msgstr ""
+
+msgid "Adblock version"
msgstr ""
-msgid "Available blocklist sources ("
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Available blocklist sources."
msgstr ""
msgid "Backup directory"
msgstr ""
-msgid "Backup options"
+msgid "Blocked domains (overall)"
msgstr ""
msgid "Blocklist sources"
msgstr ""
+msgid "Collecting data..."
+msgstr ""
+
msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr ""
+msgid "DNS backend"
+msgstr ""
+
msgid "Description"
msgstr ""
+msgid "Download Utility (SSL Library)"
+msgstr ""
+
+msgid "Edit Blacklist"
+msgstr ""
+
+msgid "Edit Configuration"
+msgstr ""
+
+msgid "Edit Whitelist"
+msgstr ""
+
msgid "Enable adblock"
msgstr ""
msgid "Enable blocklist backup"
msgstr ""
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB RAM)"
+msgstr ""
+
msgid "Enable verbose debug logging"
msgstr ""
@@ -44,27 +77,139 @@ msgid "Extra options"
msgstr ""
msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+
+msgid "Force Overall Sort"
+msgstr ""
+
+msgid "Force local DNS"
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Invalid domain specified!"
msgstr ""
-msgid "Global options"
+msgid "Last rundate"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid ""
+"Note that list URLs and Shallalist category selections are configurable in "
+"the 'Advanced' section."
msgstr ""
msgid ""
"Options for further tweaking in case the defaults are not suitable for you."
msgstr ""
-msgid "Restrict reload trigger to certain interface(s)"
+msgid "Overview"
+msgstr ""
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+msgid "Query"
+msgstr ""
+
+msgid "Query domains"
+msgstr ""
+
+msgid "Redirect all DNS queries to the local resolver."
+msgstr ""
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Resume adblock"
+msgstr ""
+
+msgid "Runtime information"
+msgstr ""
+
+msgid "SSL req."
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Suspend / Resume adblock"
+msgstr ""
+
+msgid "Suspend adblock"
+msgstr ""
+
+msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
msgstr ""
msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "active"
+msgstr ""
+
+msgid "n/a"
msgstr ""
-msgid "Whitelist file"
+msgid "no domains blocked"
msgstr ""
-msgid "see list details"
+msgid "suspended"
msgstr ""
diff --git a/applications/luci-app-adblock/po/zh-cn/adblock.po b/applications/luci-app-adblock/po/zh-cn/adblock.po
index 2878d8afaf..dfa03f32b1 100644
--- a/applications/luci-app-adblock/po/zh-cn/adblock.po
+++ b/applications/luci-app-adblock/po/zh-cn/adblock.po
@@ -1,53 +1,87 @@
+# liushuyu <liushuyu_011@163.com>, 2017.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Last-Translator: kuoruan@gmail.com\n"
-"Language-Team: none\n"
+"PO-Revision-Date: 2017-04-15 21:35-0600\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
+"Language-Team: Chinese <kde-i18n-doc@kde.org>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.5\n"
+"X-Generator: Poedit 2.0.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
-msgstr ")。需è¦æ³¨æ„的是列表URL和列表类别选项无法通过Luci设置。"
-
msgid "Adblock"
msgstr "Adblock"
-msgid "Available blocklist sources ("
-msgstr "å¯ç”¨æ‹¦æˆªåˆ—表æ¥æºï¼ˆ"
+msgid "Adblock Domain Query"
+msgstr ""
+
+msgid "Adblock Logfile"
+msgstr "Adblock 日志文件"
+
+msgid "Adblock version"
+msgstr "Adblock 版本"
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr "高级"
+
+msgid "Available blocklist sources."
+msgstr "å¯ç”¨çš„ blocklist æ¥æº"
msgid "Backup directory"
msgstr "备份目录"
-msgid "Backup options"
-msgstr "备份选项"
+msgid "Blocked domains (overall)"
+msgstr ""
msgid "Blocklist sources"
msgstr "拦截列表æ¥æº"
+msgid "Collecting data..."
+msgstr "正在收集数æ®..."
+
msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr "Adblock é…置工具,通过 DNS æ¥æ‹¦æˆªå¹¿å‘Šå’Œé˜»æ­¢åŸŸå。"
+msgid "DNS backend"
+msgstr "DNS åŽç«¯"
+
msgid "Description"
msgstr "æè¿°"
+msgid "Download Utility (SSL Library)"
+msgstr ""
+
+msgid "Edit Blacklist"
+msgstr "编辑黑åå•"
+
+msgid "Edit Configuration"
+msgstr "编辑设置"
+
+msgid "Edit Whitelist"
+msgstr "编辑白åå•"
+
msgid "Enable adblock"
msgstr "å¯ç”¨Adblock"
msgid "Enable blocklist backup"
msgstr "å¯ç”¨æ‹¦æˆªè§„则备份"
-msgid "Enable verbose debug logging"
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB RAM)"
msgstr ""
+msgid "Enable verbose debug logging"
+msgstr "å¯ç”¨è¯¦ç»†è°ƒè¯•è¾“出"
+
msgid "Enabled"
msgstr "å¯ç”¨"
@@ -55,30 +89,176 @@ msgid "Extra options"
msgstr "é¢å¤–选项"
msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
-msgstr "å…许的主机/域å列表"
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+
+msgid "Force Overall Sort"
+msgstr ""
+
+msgid "Force local DNS"
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Invalid domain specified!"
+msgstr "无效域åï¼"
+
+msgid "Last rundate"
+msgstr ""
+
+msgid "Loading"
+msgstr "加载中"
-msgid "Global options"
-msgstr "全局选项"
+msgid "No"
+msgstr "å¦"
+
+msgid ""
+"Note that list URLs and Shallalist category selections are configurable in "
+"the 'Advanced' section."
+msgstr ""
msgid ""
"Options for further tweaking in case the defaults are not suitable for you."
msgstr "在默认设置并ä¸é€‚åˆä½ æ—¶çš„é¢å¤–选项。"
-msgid "Restrict reload trigger to certain interface(s)"
+msgid "Overview"
+msgstr "总览"
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+msgid "Query"
+msgstr "查询"
+
+msgid "Query domains"
+msgstr ""
+
+msgid "Redirect all DNS queries to the local resolver."
+msgstr ""
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Resume adblock"
+msgstr "æ¢å¤ Adblock"
+
+msgid "Runtime information"
+msgstr "è¿è¡Œä¿¡æ¯"
+
+msgid "SSL req."
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Status"
+msgstr "状æ€"
+
+msgid "Suspend / Resume adblock"
+msgstr "æš‚åœ/æ¢å¤ Adblock"
+
+msgid "Suspend adblock"
+msgstr "æš‚åœ Adblock"
+
+msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
msgstr ""
msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr ""
+
+msgid "Trigger delay"
+msgstr "触å‘延迟"
+
+msgid "View Logfile"
+msgstr "查看日志文件"
+
+msgid "Waiting for command to complete..."
+msgstr "正在执行命令..."
+
+msgid "Yes"
+msgstr "是"
+
+msgid "active"
+msgstr "å·²å¯ç”¨"
+
+msgid "n/a"
msgstr ""
-msgid "Whitelist file"
-msgstr "白åå•æ–‡ä»¶"
+msgid "no domains blocked"
+msgstr "没有被拦截的域å"
+
+msgid "suspended"
+msgstr "已暂åœ"
+
+#~ msgid "."
+#~ msgstr "."
+
+#~ msgid "For further information"
+#~ msgstr "更多信æ¯"
+
+#~ msgid "see online documentation"
+#~ msgstr "查看在线文档"
+
+#~ msgid "Backup options"
+#~ msgstr "备份选项"
+
+#~ msgid ""
+#~ "). Note that list URLs and Shallalist category selections are not "
+#~ "configurable via Luci."
+#~ msgstr ")。需è¦æ³¨æ„的是列表URL和列表类别选项无法通过Luci设置。"
+
+#~ msgid "Available blocklist sources ("
+#~ msgstr "å¯ç”¨æ‹¦æˆªåˆ—表æ¥æºï¼ˆ"
+
+#~ msgid ""
+#~ "File with whitelisted hosts/domains that are allowed despite being on a "
+#~ "blocklist."
+#~ msgstr "å…许的主机/域å列表"
+
+#~ msgid "Global options"
+#~ msgstr "全局选项"
+
+#~ msgid "Whitelist file"
+#~ msgstr "白åå•æ–‡ä»¶"
-msgid "see list details"
-msgstr "查看列表详情"
+#~ msgid "see list details"
+#~ msgstr "查看列表详情"
#~ msgid "Count"
#~ msgstr "æ•°é‡"
diff --git a/applications/luci-app-ahcp/po/pt-br/ahcp.po b/applications/luci-app-ahcp/po/pt-br/ahcp.po
index 55ec29cdc7..741c14572b 100644
--- a/applications/luci-app-ahcp/po/pt-br/ahcp.po
+++ b/applications/luci-app-ahcp/po/pt-br/ahcp.po
@@ -1,20 +1,20 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-03-29 23:07+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2017-02-17 17:07-0200\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
"Language-Team: none\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"POT-Creation-Date: \n"
msgid "AHCP Server"
msgstr "Servidor AHCP"
-#, fuzzy
msgid ""
"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
"networks designed to be used in place of router discovery or DHCP on "
diff --git a/applications/luci-app-aria2/po/pt-br/aria2.po b/applications/luci-app-aria2/po/pt-br/aria2.po
new file mode 100644
index 0000000000..1bb4137446
--- /dev/null
+++ b/applications/luci-app-aria2/po/pt-br/aria2.po
@@ -0,0 +1,236 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: pt_BR\n"
+
+msgid "\"Falloc\" is not available in all cases."
+msgstr "\"Falloc\" não está disponível em todas as classes."
+
+msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
+msgstr ""
+"<abbr title=\"Distributed Hash Table/Tabla de disperção distribuída\">DHT</"
+"abbr> habilitado"
+
+msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
+msgstr ""
+"<abbr title=\"Local Peer Discovery/Descoberta de Parceiros Locais\">LPD</"
+"abbr> habilitado"
+
+msgid "Additional Bt tracker enabled"
+msgstr "Rastreadores BitTorrent adicionais habilitado"
+
+msgid "Aria2"
+msgstr "Aria2"
+
+msgid "Aria2 Settings"
+msgstr "Configurações do Aria2"
+
+msgid "Aria2 Status"
+msgstr "Estado do Aria2"
+
+msgid ""
+"Aria2 is a multi-protocol &amp; multi-source download utility, here you can "
+"configure the settings."
+msgstr ""
+"Aria2 é um utilitário de transferência multi-protocolo de múltiplas fontes, "
+"aqui você pode configurá-lo."
+
+msgid "Autosave session interval"
+msgstr "Intervalo para autossalvamento da sessão"
+
+msgid "BitTorrent Settings"
+msgstr "Configurações do BitTorrent"
+
+msgid "BitTorrent listen port"
+msgstr "Porta de escuta do BitTorrent"
+
+msgid "Collecting data..."
+msgstr "Coletando dados..."
+
+msgid "Config file directory"
+msgstr "Diretório dos arquivos de configuração"
+
+msgid "Debug"
+msgstr "Depuração"
+
+msgid "Default download directory"
+msgstr "Diretório padrão de arquivos baixados"
+
+msgid "Disk cache"
+msgstr "Cache em Disco"
+
+msgid "Enable log"
+msgstr "Habilitar registros"
+
+msgid "Enabled"
+msgstr "Habilitado"
+
+msgid "Error"
+msgstr "Erro"
+
+msgid "Extra Settings"
+msgstr "Configurações Adicionais"
+
+msgid "Falloc"
+msgstr "Falloc"
+
+msgid "Files and Locations"
+msgstr "Arquivos e Locais"
+
+msgid "Follow torrent"
+msgstr "Seguir torrent"
+
+msgid "General Settings"
+msgstr "Configurações Gerais"
+
+msgid "Generate Randomly"
+msgstr "Gerar aleatoriamente"
+
+msgid "Info"
+msgstr "Informações"
+
+msgid "List of additional Bt tracker"
+msgstr "Lista de rastreadores BitTorrent adicionais"
+
+msgid "List of extra settings"
+msgstr "Lista de configurações adicionais"
+
+msgid "Log file is in the config file dir."
+msgstr ""
+"Arquivo de registro (log) está no diretório do arquivo de configuração."
+
+msgid "Log level"
+msgstr "Nível do registro"
+
+msgid "Max concurrent downloads"
+msgstr "Número máximo de transferencias simultâneas"
+
+msgid "Max connection per server"
+msgstr "Numero máximo de conexões por servidor"
+
+msgid "Max number of peers per torrent"
+msgstr "Numero máximo de parceiros por torrent"
+
+msgid "Max number of split"
+msgstr "Numero máximo de divisões"
+
+msgid "Min split size"
+msgstr "Tamanho mínimo da divisão"
+
+msgid "No Authentication"
+msgstr "Sem Autenticação"
+
+msgid "Notice"
+msgstr "Aviso"
+
+msgid "Off"
+msgstr "Desligado"
+
+msgid "Open WebUI-Aria2"
+msgstr "Abrir WebUI-Aria2"
+
+msgid "Open YAAW"
+msgstr "Abrir YAAW"
+
+msgid "Overall download limit"
+msgstr "Limite global para baixar"
+
+msgid "Overall speed limit enabled"
+msgstr "Limite da taxa de transferência global habilitado"
+
+msgid "Overall upload limit"
+msgstr "Limite global para subir"
+
+msgid "Per task download limit"
+msgstr "Limite por tarefa para baixar"
+
+msgid "Per task speed limit enabled"
+msgstr "Limite da taxa de transferência por tarefa habilitado"
+
+msgid "Per task upload limit"
+msgstr "Limite por tarefa para subir"
+
+msgid "Prealloc"
+msgstr "Pré-alocação"
+
+msgid "Preallocation"
+msgstr "Pré-alocação"
+
+msgid "Prefix of peer ID"
+msgstr "Prefixo da identificação do paceiro"
+
+msgid "RPC Token"
+msgstr ""
+"Chave eletrônica do <abbr title=\"Remote Procedure Call/Chamada de "
+"Procedimento Remoto\">RPC</abbr>"
+
+msgid "RPC authentication method"
+msgstr ""
+"Método de autenticação do <abbr title=\"Remote Procedure Call/Chamada de "
+"Procedimento Remoto\">RPC</abbr>"
+
+msgid "RPC password"
+msgstr ""
+"Senha do <abbr title=\"Remote Procedure Call/Chamada de Procedimento Remoto"
+"\">RPC</abbr>"
+
+msgid "RPC port"
+msgstr ""
+"Porta do <abbr title=\"Remote Procedure Call/Chamada de Procedimento Remoto"
+"\">RPC</abbr>"
+
+msgid "RPC username"
+msgstr ""
+"Nome do usuario do <abbr title=\"Remote Procedure Call/Chamada de "
+"Procedimento Remoto\">RPC</abbr>"
+
+msgid "Run daemon as user"
+msgstr "Executar serviço como usuário"
+
+msgid "Sec"
+msgstr "Segurança"
+
+msgid "Task Settings"
+msgstr "Configurações das tarefas"
+
+msgid "The Aria2 service is not running."
+msgstr "O serviço Aria2 está parado."
+
+msgid "The Aria2 service is running."
+msgstr "O serviço Aria2 está em execução."
+
+msgid "Token"
+msgstr "Chave eletrônica"
+
+msgid "Trunc"
+msgstr "Truncar"
+
+msgid "Use WebSocket"
+msgstr "Use WebSockets"
+
+msgid "User agent value"
+msgstr "Valor da identificação do agente do usuário"
+
+msgid "Username & Password"
+msgstr "Usuário & Senha"
+
+msgid "View Json-RPC URL"
+msgstr "Visualizar URL do JSON-RPC"
+
+msgid "Warn"
+msgstr "Atenção"
+
+msgid "in bytes, You can append K or M."
+msgstr "em bytes. Você pode sufixar com K (quilo) ou M (mega)."
+
+msgid "in bytes/sec, You can append K or M."
+msgstr "em bytes por segundo. Você pode sufixar com K (quilo) ou M (mega)."
diff --git a/applications/luci-app-bcp38/Makefile b/applications/luci-app-bcp38/Makefile
new file mode 100644
index 0000000000..9ab5a6701d
--- /dev/null
+++ b/applications/luci-app-bcp38/Makefile
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2010 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=BCP38 LuCI interface
+LUCI_DEPENDS:=+luci-mod-admin-full +bcp38
+
+PKG_MAINTAINER:=Toke Høiland-Jørgensen <toke@toke.dk>
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-bcp38/luasrc/controller/bcp38.lua b/applications/luci-app-bcp38/luasrc/controller/bcp38.lua
new file mode 100644
index 0000000000..7ea22835d6
--- /dev/null
+++ b/applications/luci-app-bcp38/luasrc/controller/bcp38.lua
@@ -0,0 +1,7 @@
+module("luci.controller.bcp38", package.seeall)
+
+function index()
+ entry({"admin", "network", "firewall", "bcp38"},
+ cbi("bcp38"),
+ _("BCP38"), 50).dependent = false
+end
diff --git a/applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua b/applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua
new file mode 100644
index 0000000000..632074a56f
--- /dev/null
+++ b/applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua
@@ -0,0 +1,60 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2014 Toke Høiland-Jørgensen <toke@toke.dk>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+$Id$
+]]--
+
+local wa = require "luci.tools.webadmin"
+local net = require "luci.model.network".init()
+local ifaces = net:get_interfaces()
+
+m = Map("bcp38", translate("BCP38"),
+ translate("This function blocks packets with private address destinations " ..
+ "from going out onto the internet as per " ..
+ "<a href=\"http://tools.ietf.org/html/bcp38\">BCP 38</a>. " ..
+ "For IPv6, only source specific default routes are installed, so " ..
+ "no BCP38 firewall routes are needed."))
+
+s = m:section(TypedSection, "bcp38", translate("BCP38 config"))
+s.anonymous = true
+-- BASIC
+e = s:option(Flag, "enabled", translate("Enable"))
+e.rmempty = false
+
+a = s:option(Flag, "detect_upstream", translate("Auto-detect upstream IP"),
+ translate("Attempt to automatically detect if the upstream IP " ..
+ "will be blocked by the configuration, and add an exception if it will. " ..
+ "If this does not work correctly, you can add exceptions manually below."))
+a.rmempty = false
+
+n = s:option(ListValue, "interface", translate("Interface name"), translate("Interface to apply the blocking to " ..
+ "(should be the upstream WAN interface)."))
+for _, iface in ipairs(ifaces) do
+ if iface:is_up() then
+ n:value(iface:name())
+ end
+end
+n.rmempty = false
+
+ma = s:option(DynamicList, "match",
+ translate("Blocked IP ranges"))
+
+ma.datatype = "ip4addr"
+
+nm = s:option(DynamicList, "nomatch",
+ translate("Allowed IP ranges"), translate("Takes precedence over blocked ranges. "..
+ "Use to whitelist your upstream network if you're behind a double NAT " ..
+ "and the auto-detection doesn't work."))
+
+nm.datatype = "ip4addr"
+
+
+return m
diff --git a/applications/luci-app-bcp38/root/etc/uci-defaults/60_luci-bcp38 b/applications/luci-app-bcp38/root/etc/uci-defaults/60_luci-bcp38
new file mode 100755
index 0000000000..c204236e37
--- /dev/null
+++ b/applications/luci-app-bcp38/root/etc/uci-defaults/60_luci-bcp38
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+uci -q batch <<-EOF >/dev/null
+ delete ucitrack.@bcp38[-1]
+ add ucitrack bcp38
+ add_list ucitrack.@bcp38[0].affects=firewall
+ commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
diff --git a/applications/luci-app-clamav/Makefile b/applications/luci-app-clamav/Makefile
new file mode 100644
index 0000000000..f91e692af8
--- /dev/null
+++ b/applications/luci-app-clamav/Makefile
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=ClamAV LuCI interface
+LUCI_DEPENDS:=+luci-mod-admin-full +clamav
+
+PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-clamav/luasrc/controller/clamav.lua b/applications/luci-app-clamav/luasrc/controller/clamav.lua
new file mode 100644
index 0000000000..02f3bfc4b1
--- /dev/null
+++ b/applications/luci-app-clamav/luasrc/controller/clamav.lua
@@ -0,0 +1,22 @@
+--[[
+
+LuCI ClamAV module
+
+Copyright (C) 2015, Itus Networks, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
+ Luka Perkov <luka.perkov@sartura.hr>
+
+]]--
+
+module("luci.controller.clamav", package.seeall)
+
+function index()
+ entry({"admin", "services", "clamav"}, cbi("clamav"), _("ClamAV"))
+end
diff --git a/applications/luci-app-clamav/luasrc/model/cbi/clamav.lua b/applications/luci-app-clamav/luasrc/model/cbi/clamav.lua
new file mode 100644
index 0000000000..ff98139d4a
--- /dev/null
+++ b/applications/luci-app-clamav/luasrc/model/cbi/clamav.lua
@@ -0,0 +1,178 @@
+--[[
+
+LuCI ClamAV module
+
+Copyright (C) 2015, Itus Networks, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
+ Luka Perkov <luka.perkov@sartura.hr>
+
+]]--
+
+local fs = require "nixio.fs"
+local sys = require "luci.sys"
+require "ubus"
+
+m = Map("clamav", translate("ClamAV"))
+m.on_after_commit = function() luci.sys.call("/etc/init.d/clamav restart") end
+
+s = m:section(TypedSection, "clamav")
+s.anonymous = true
+s.addremove = false
+
+s:tab("tab_advanced", translate("Settings"))
+s:tab("tab_logs", translate("Log"))
+
+--------------- Settings --------------
+
+LogFileMaxSize = s:taboption("tab_advanced", Value, "LogFileMaxSize", translate("Max size of log file"))
+LogFileMaxSize:value("512K", translate("512K"))
+LogFileMaxSize:value("1M", translate("1M"))
+LogFileMaxSize:value("2M", translate("2M"))
+LogFileMaxSize.default = "1M"
+
+LogTime = s:taboption("tab_advanced", ListValue, "LogTime", translate("Log time with each message"))
+LogTime:value("no", translate("No"))
+LogTime:value("yes", translate("Yes"))
+LogTime.default = "no"
+
+LogVerbose = s:taboption("tab_advanced", ListValue, "LogVerbose", translate("Enable verbose logging"))
+LogVerbose:value("no", translate("No"))
+LogVerbose:value("yes", translate("Yes"))
+LogVerbose.default = "no"
+
+ExtendedDetectionInfo = s:taboption("tab_advanced", ListValue, "ExtendedDetectionInfo", translate("Log additional infection info"))
+ExtendedDetectionInfo:value("no", translate("No"))
+ExtendedDetectionInfo:value("yes", translate("Yes"))
+ExtendedDetectionInfo.default = "no"
+
+dummy3 = s:taboption("tab_advanced", DummyValue, "")
+dummy4 = s:taboption("tab_advanced", DummyValue, "")
+
+MaxDirectoryRecursion = s:taboption("tab_advanced", Value, "MaxDirectoryRecursion", translate("Max directory scan depth"))
+MaxDirectoryRecursion:value("15", translate("15"))
+MaxDirectoryRecursion:value("20", translate("20"))
+MaxDirectoryRecursion.default = "15"
+
+FollowDirectorySymlink = s:taboption("tab_advanced", ListValue, "FollowDirectorySymlink", translate("Follow directory symlinks"))
+FollowDirectorySymlink:value("no", translate("No"))
+FollowDirectorySymlink:value("yes", translate("Yes"))
+FollowDirectorySymlink.default = "no"
+
+FollowFileSymlinks = s:taboption("tab_advanced", ListValue, "FollowFileSymlinks", translate("Follow file symlinks"))
+FollowFileSymlinks:value("no", translate("No"))
+FollowFileSymlinks:value("yes", translate("Yes"))
+FollowFileSymlinks.default = "no"
+
+DetectPUA = s:taboption("tab_advanced", ListValue, "DetectPUA", translate("Detect possibly unwanted apps"))
+DetectPUA:value("no", translate("No"))
+DetectPUA:value("yes", translate("Yes"))
+DetectPUA.default = "no"
+
+ScanPE = s:taboption("tab_advanced", ListValue, "ScanPE", translate("Scan portable executables"))
+ScanPE:value("no", translate("No"))
+ScanPE:value("yes", translate("Yes"))
+ScanPE.default = "yes"
+
+ScanELF = s:taboption("tab_advanced", ListValue, "ScanELF", translate("Scan ELF files"))
+ScanELF:value("no", translate("No"))
+ScanELF:value("yes", translate("Yes"))
+ScanELF.default = "yes"
+
+DetectBrokenExecutables = s:taboption("tab_advanced", ListValue, "DetectBrokenExecutables", translate("Detect broken executables"))
+DetectBrokenExecutables:value("no", translate("No"))
+DetectBrokenExecutables:value("yes", translate("Yes"))
+DetectBrokenExecutables.default = "no"
+
+ScanOLE2 = s:taboption("tab_advanced", ListValue, "ScanOLE2", translate("Scan MS Office and .msi files"))
+ScanOLE2:value("no", translate("No"))
+ScanOLE2:value("yes", translate("Yes"))
+ScanOLE2.default = "yes"
+
+ScanPDF = s:taboption("tab_advanced", ListValue, "ScanPDF", translate("Scan pdf files"))
+ScanPDF:value("no", translate("No"))
+ScanPDF:value("yes", translate("Yes"))
+ScanPDF.default = "yes"
+
+ScanSWF = s:taboption("tab_advanced", ListValue, "ScanSWF", translate("Scan swf files"))
+ScanSWF:value("no", translate("No"))
+ScanSWF:value("yes", translate("Yes"))
+ScanSWF.default = "yes"
+
+ScanMail = s:taboption("tab_advanced", ListValue, "ScanMail", translate("Scan emails"))
+ScanMail:value("no", translate("No"))
+ScanMail:value("yes", translate("Yes"))
+ScanMail.default = "yes"
+
+ScanPartialMessages = s:taboption("tab_advanced", ListValue, "ScanPartialMessages", translate("Scan RFC1341 messages split over many emails"))
+ScanPartialMessages:value("no", translate("No"))
+ScanPartialMessages:value("yes", translate("Yes"))
+ScanPartialMessages.default = "no"
+
+ScanArchive = s:taboption("tab_advanced", ListValue, "ScanArchive", translate("Scan archives"))
+ScanArchive:value("no", translate("No"))
+ScanArchive:value("yes", translate("Yes"))
+ScanArchive.default = "yes"
+
+ArchiveBlockEncrypted = s:taboption("tab_advanced", ListValue, "ArchiveBlockEncrypted", translate("Block encrypted archives"))
+ArchiveBlockEncrypted:value("no", translate("No"))
+ArchiveBlockEncrypted:value("yes", translate("Yes"))
+ArchiveBlockEncrypted.default = "no"
+
+dummy5 = s:taboption("tab_advanced", DummyValue, "")
+dummy6 = s:taboption("tab_advanced", DummyValue, "")
+
+StreamMinPort = s:taboption("tab_advanced", Value, "StreamMinPort", translate("Port range, lowest port"))
+StreamMinPort.datatype = "portrange"
+StreamMinPort:value("1024",translate("1024"))
+StreamMinPort.default = "1024"
+
+StreamMaxPort = s:taboption("tab_advanced", Value, "StreamMaxPort", translate("Port range, highest port"))
+StreamMaxPort.datatype = "portrange"
+StreamMaxPort:value("2048",translate("2048"))
+StreamMaxPort.default = "2048"
+
+MaxThreads = s:taboption("tab_advanced", Value, "MaxThreads", translate("Max number of threads"))
+MaxThreads.datatype = "and(uinteger,min(1))"
+MaxThreads:value("10",translate("10"))
+MaxThreads:value("20",translate("20"))
+MaxThreads.default = "10"
+
+SelfCheck = s:taboption("tab_advanced", Value, "SelfCheck", translate("Database check every N sec"))
+SelfCheck.datatype = "and(uinteger,min(1))"
+SelfCheck:value("600",translate("600"))
+SelfCheck.default = "600"
+
+MaxFileSize = s:taboption("tab_advanced", Value, "MaxFileSize", translate("Max size of scanned file"))
+MaxFileSize.datatype = "string"
+MaxFileSize:value("150M",translate("150M"))
+MaxFileSize:value("50M",translate("50M"))
+MaxFileSize.default = "150M"
+
+------------------ Log --------------------
+
+clamav_logfile = s:taboption("tab_logs", TextValue, "lines", "")
+clamav_logfile.wrap = "off"
+clamav_logfile.rows = 25
+clamav_logfile.rmempty = true
+
+function clamav_logfile.cfgvalue()
+ local uci = require "luci.model.uci".cursor_state()
+ local file = "/tmp/clamd.log"
+ if file then
+ return fs.readfile(file) or ""
+ else
+ return ""
+ end
+end
+
+function clamav_logfile.write()
+end
+
+return m
diff --git a/applications/luci-app-clamav/po/ja/clamav.po b/applications/luci-app-clamav/po/ja/clamav.po
new file mode 100644
index 0000000000..c54c7b18aa
--- /dev/null
+++ b/applications/luci-app-clamav/po/ja/clamav.po
@@ -0,0 +1,130 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.12\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid "10"
+msgstr "10"
+
+msgid "1024"
+msgstr "1024"
+
+msgid "15"
+msgstr "15"
+
+msgid "150M"
+msgstr "150M"
+
+msgid "1M"
+msgstr "1M"
+
+msgid "20"
+msgstr "20"
+
+msgid "2048"
+msgstr "2048"
+
+msgid "2M"
+msgstr "2M"
+
+msgid "50M"
+msgstr "50M"
+
+msgid "512K"
+msgstr "512K"
+
+msgid "600"
+msgstr "600"
+
+msgid "Block encrypted archives"
+msgstr "æš—å·åŒ–ã•ã‚ŒãŸã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ã®ãƒ–ロック"
+
+msgid "ClamAV"
+msgstr "ClamAV"
+
+msgid "Database check every N sec"
+msgstr "データベース ãƒã‚§ãƒƒã‚¯é–“隔(秒)"
+
+msgid "Detect broken executables"
+msgstr "ç ´æã—ãŸå®Ÿè¡Œãƒ•ã‚¡ã‚¤ãƒ«ã®æ¤œå‡º"
+
+msgid "Detect possibly unwanted apps"
+msgstr "ä¸å¿…è¦ã¨æ€ã‚れるアプリケーションã®æ¤œå‡º"
+
+msgid "Enable verbose logging"
+msgstr "詳細ãªãƒ­ã‚°ã®æœ‰åŠ¹åŒ–"
+
+msgid "Follow directory symlinks"
+msgstr "ディレクトリ シンボリックリンクã«å¾“ã†"
+
+msgid "Follow file symlinks"
+msgstr "ファイル シンボリックリンクã«å¾“ã†"
+
+msgid "Log"
+msgstr "ログ"
+
+msgid "Log additional infection info"
+msgstr "追加ã®æ„ŸæŸ“情報ログ"
+
+msgid "Log time with each message"
+msgstr "ログ メッセージ毎ã«æ™‚刻を付加"
+
+msgid "Max directory scan depth"
+msgstr "ディレクトリ スキャンã®æœ€å¤§æ·±åº¦"
+
+msgid "Max number of threads"
+msgstr "スレッドã®æœ€å¤§æ•°"
+
+msgid "Max size of log file"
+msgstr "ログã®æœ€å¤§ã‚µã‚¤ã‚º"
+
+msgid "Max size of scanned file"
+msgstr ""
+
+msgid "No"
+msgstr "ã„ã„ãˆ"
+
+msgid "Port range, highest port"
+msgstr "ãƒãƒ¼ãƒˆç¯„囲(上é™ï¼‰"
+
+msgid "Port range, lowest port"
+msgstr "ãƒãƒ¼ãƒˆç¯„囲(下é™ï¼‰"
+
+msgid "Scan ELF files"
+msgstr "ELF ファイルã®ã‚¹ã‚­ãƒ£ãƒ³"
+
+msgid "Scan MS Office and .msi files"
+msgstr "MS Office 㨠.msi ファイルã®ã‚¹ã‚­ãƒ£ãƒ³"
+
+msgid "Scan RFC1341 messages split over many emails"
+msgstr ""
+
+msgid "Scan archives"
+msgstr "アーカイブã®ã‚¹ã‚­ãƒ£ãƒ³"
+
+msgid "Scan emails"
+msgstr "E-mailã®ã‚¹ã‚­ãƒ£ãƒ³"
+
+msgid "Scan pdf files"
+msgstr "PDF ファイルã®ã‚¹ã‚­ãƒ£ãƒ³"
+
+msgid "Scan portable executables"
+msgstr "ãƒãƒ¼ã‚¿ãƒ–ル 実行ファイルã®ã‚¹ã‚­ãƒ£ãƒ³"
+
+msgid "Scan swf files"
+msgstr "SWF ファイルã®ã‚¹ã‚­ãƒ£ãƒ³"
+
+msgid "Settings"
+msgstr "設定"
+
+msgid "Yes"
+msgstr "ã¯ã„"
diff --git a/applications/luci-app-clamav/po/templates/clamav.pot b/applications/luci-app-clamav/po/templates/clamav.pot
new file mode 100644
index 0000000000..768f73093a
--- /dev/null
+++ b/applications/luci-app-clamav/po/templates/clamav.pot
@@ -0,0 +1,119 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "10"
+msgstr ""
+
+msgid "1024"
+msgstr ""
+
+msgid "15"
+msgstr ""
+
+msgid "150M"
+msgstr ""
+
+msgid "1M"
+msgstr ""
+
+msgid "20"
+msgstr ""
+
+msgid "2048"
+msgstr ""
+
+msgid "2M"
+msgstr ""
+
+msgid "50M"
+msgstr ""
+
+msgid "512K"
+msgstr ""
+
+msgid "600"
+msgstr ""
+
+msgid "Block encrypted archives"
+msgstr ""
+
+msgid "ClamAV"
+msgstr ""
+
+msgid "Database check every N sec"
+msgstr ""
+
+msgid "Detect broken executables"
+msgstr ""
+
+msgid "Detect possibly unwanted apps"
+msgstr ""
+
+msgid "Enable verbose logging"
+msgstr ""
+
+msgid "Follow directory symlinks"
+msgstr ""
+
+msgid "Follow file symlinks"
+msgstr ""
+
+msgid "Log"
+msgstr ""
+
+msgid "Log additional infection info"
+msgstr ""
+
+msgid "Log time with each message"
+msgstr ""
+
+msgid "Max directory scan depth"
+msgstr ""
+
+msgid "Max number of threads"
+msgstr ""
+
+msgid "Max size of log file"
+msgstr ""
+
+msgid "Max size of scanned file"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid "Port range, highest port"
+msgstr ""
+
+msgid "Port range, lowest port"
+msgstr ""
+
+msgid "Scan ELF files"
+msgstr ""
+
+msgid "Scan MS Office and .msi files"
+msgstr ""
+
+msgid "Scan RFC1341 messages split over many emails"
+msgstr ""
+
+msgid "Scan archives"
+msgstr ""
+
+msgid "Scan emails"
+msgstr ""
+
+msgid "Scan pdf files"
+msgstr ""
+
+msgid "Scan portable executables"
+msgstr ""
+
+msgid "Scan swf files"
+msgstr ""
+
+msgid "Settings"
+msgstr ""
+
+msgid "Yes"
+msgstr ""
diff --git a/applications/luci-app-clamav/po/zh-cn/clamav.po b/applications/luci-app-clamav/po/zh-cn/clamav.po
new file mode 100644
index 0000000000..6a2c5dfd54
--- /dev/null
+++ b/applications/luci-app-clamav/po/zh-cn/clamav.po
@@ -0,0 +1,131 @@
+# liushuyu <liushuyu_011@163.com>, 2017.
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2017-04-15 21:37-0600\n"
+"Language-Team: Chinese <kde-i18n-doc@kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.1\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: zh_CN\n"
+
+msgid "10"
+msgstr "10"
+
+msgid "1024"
+msgstr "1024"
+
+msgid "15"
+msgstr "15"
+
+msgid "150M"
+msgstr "150M"
+
+msgid "1M"
+msgstr "1M"
+
+msgid "20"
+msgstr "20"
+
+msgid "2048"
+msgstr "2048"
+
+msgid "2M"
+msgstr "2M"
+
+msgid "50M"
+msgstr "50M"
+
+msgid "512K"
+msgstr "512K"
+
+msgid "600"
+msgstr "600"
+
+msgid "Block encrypted archives"
+msgstr "拦截加密的归档文件"
+
+msgid "ClamAV"
+msgstr "ClamAV"
+
+msgid "Database check every N sec"
+msgstr "æ¯ N 秒检测一次数æ®åº“"
+
+msgid "Detect broken executables"
+msgstr "检测破æŸçš„å¯æ‰§è¡Œæ–‡ä»¶"
+
+msgid "Detect possibly unwanted apps"
+msgstr "检测ä¸å—欢迎的软件"
+
+msgid "Enable verbose logging"
+msgstr "å¯ç”¨è¯¦ç»†æ—¥å¿—输出"
+
+msgid "Follow directory symlinks"
+msgstr "è·Ÿéšç›®å½•ç¬¦å·é“¾æŽ¥"
+
+msgid "Follow file symlinks"
+msgstr "è·Ÿéšæ–‡ä»¶ç¬¦å·é“¾æŽ¥"
+
+msgid "Log"
+msgstr "日志"
+
+msgid "Log additional infection info"
+msgstr "记录详细的感染信æ¯"
+
+msgid "Log time with each message"
+msgstr "记录消æ¯æ—¶é—´æˆ³"
+
+msgid "Max directory scan depth"
+msgstr "最大扫æ深度"
+
+msgid "Max number of threads"
+msgstr "最大线程数"
+
+msgid "Max size of log file"
+msgstr "最大日志大å°"
+
+msgid "Max size of scanned file"
+msgstr "最大å¯æ‰«æ的文件大å°"
+
+msgid "No"
+msgstr "å¦"
+
+msgid "Port range, highest port"
+msgstr "端å£èŒƒå›´ï¼Œæœ€å¤§ç«¯å£"
+
+msgid "Port range, lowest port"
+msgstr "端å£èŒƒå›´ï¼Œæœ€å°ç«¯å£"
+
+msgid "Scan ELF files"
+msgstr "扫æ ELF 文件"
+
+msgid "Scan MS Office and .msi files"
+msgstr "扫æ MS Office 文档和 .msi 安装包文件"
+
+msgid "Scan RFC1341 messages split over many emails"
+msgstr "扫æç¬¦åˆ RFC1341 邮件分离规范的邮件"
+
+msgid "Scan archives"
+msgstr "扫æ归档文件"
+
+msgid "Scan emails"
+msgstr "扫æ电å­é‚®ä»¶"
+
+msgid "Scan pdf files"
+msgstr "扫æ PDF 文件"
+
+msgid "Scan portable executables"
+msgstr "扫æ PE (Windows) å¯æ‰§è¡Œæ–‡ä»¶"
+
+msgid "Scan swf files"
+msgstr "扫æ SWF 文件"
+
+msgid "Settings"
+msgstr "设置"
+
+msgid "Yes"
+msgstr "是"
diff --git a/applications/luci-app-commands/po/pt-br/commands.po b/applications/luci-app-commands/po/pt-br/commands.po
index f6bee73c91..4d04bffbc1 100644
--- a/applications/luci-app-commands/po/pt-br/commands.po
+++ b/applications/luci-app-commands/po/pt-br/commands.po
@@ -1,15 +1,16 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-03-15 22:02+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2017-02-20 17:39-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
"Language-Team: none\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"POT-Creation-Date: \n"
msgid "A short textual description of the configured command"
msgstr "Uma pequena descrição textual do comando configurado"
@@ -40,10 +41,10 @@ msgid "Command"
msgstr "Comando"
msgid "Command executed successfully."
-msgstr ""
+msgstr "O comando executou com sucesso."
msgid "Command exited with status code"
-msgstr ""
+msgstr "O comando encerrou com um estado de erro"
msgid "Command failed"
msgstr "O comando falhou"
@@ -76,7 +77,7 @@ msgid "Download"
msgstr "Baixar"
msgid "Download execution result"
-msgstr ""
+msgstr "Baixar os resultados da execução"
msgid "Failed to execute command!"
msgstr "Falha ao executar comando!"
@@ -88,7 +89,7 @@ msgid "Loading"
msgstr "Carregando"
msgid "Or display result"
-msgstr ""
+msgstr "Ou mostre o resultado"
msgid "Public access"
msgstr "Acesso público"
@@ -97,10 +98,10 @@ msgid "Run"
msgstr "Executar"
msgid "Standard Error"
-msgstr ""
+msgstr "Saída de Erro"
msgid "Standard Output"
-msgstr ""
+msgstr "Saída Padrão"
msgid ""
"This page allows you to configure custom shell commands which can be easily "
diff --git a/applications/luci-app-cshark/Makefile b/applications/luci-app-cshark/Makefile
new file mode 100644
index 0000000000..40b0e9fb7f
--- /dev/null
+++ b/applications/luci-app-cshark/Makefile
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2017 Dan Luedtke <mail@danrl.com>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Cloudshark capture tool Web UI
+LUCI_DEPENDS:=+cshark
+LUCI_PKGARCH:=all
+
+PKG_MAINTAINER:=Luka Perkov <luka@openwrt.org>
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-cshark/luasrc/controller/cshark.lua b/applications/luci-app-cshark/luasrc/controller/cshark.lua
new file mode 100644
index 0000000000..4d9bbba290
--- /dev/null
+++ b/applications/luci-app-cshark/luasrc/controller/cshark.lua
@@ -0,0 +1,125 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright (C) 2014, QA Cafe, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+]]--
+
+module("luci.controller.cshark", package.seeall)
+
+function index()
+ page = node("admin", "network", "cloudshark")
+ page.target = cbi("admin_network/cshark")
+ page.title = _("CloudShark")
+ page.order = 70
+
+ page = entry({"admin", "network", "cshark_iface_dump_start"}, call("cshark_iface_dump_start"), nil)
+ page.leaf = true
+
+ page = entry({"admin", "network", "cshark_iface_dump_stop"}, call("cshark_iface_dump_stop"), nil)
+ page.leaf = true
+
+ page = entry({"admin", "network", "cshark_check_status"}, call("cshark_check_status"), nil)
+ page.leaf = true
+
+ page = entry({"admin", "network", "cshark_link_list_get"}, call("cshark_link_list_get"), nil)
+ page.leaf = true
+
+ page = entry({"admin", "network", "cshark_link_list_clear"}, call("cshark_link_list_clear"), nil)
+ page.leaf = true
+end
+
+function cshark_iface_dump_start(ifname, value, flag, filter)
+ if ifname == nil or ifname == '' then
+ ifname = 'any'
+ end
+ if tonumber(value) == nil
+ then
+ value = '0'
+ end
+ if filter == nil or filter == '' then
+ filter = ''
+ end
+
+ if flag == nil or flag == '' then
+ filter = 'T'
+ end
+
+ luci.http.prepare_content("text/plain")
+
+ local res = os.execute("(/sbin/cshark -i " .. ifname .. " -" .. flag .. " " .. value .. " -p /tmp/cshark-luci.pid " .. filter .. " > /tmp/cshark-luci.out 2>&1) &")
+ luci.http.write(tostring(res))
+end
+
+function cshark_iface_dump_stop()
+ luci.http.prepare_content("text/plain")
+
+ local f = io.open("/tmp/cshark-luci.pid", "rb")
+ local pid = f:read("*all")
+ io.close(f)
+
+ local res = os.execute("kill -TERM " .. pid)
+ luci.http.write(tostring(res))
+end
+
+function cshark_check_status()
+
+ local msg = "";
+ local status;
+ local f = io.open("/tmp/cshark-luci.pid","r")
+ if f ~= nil then
+ status = 1;
+ io.close(f)
+ else
+ status = 0;
+ end
+
+ f = io.open("/tmp/cshark-luci.out","r")
+ if f ~= nil then
+ msg = f:read("*all")
+ io.close(f)
+ if msg ~= '' then
+ os.remove('/tmp/cshark-luci.out')
+ end
+ end
+
+ luci.http.prepare_content("application/json")
+
+ local res = {}
+ res["status"] = status;
+ res["msg"] = msg;
+
+ luci.http.write_json(res)
+end
+
+function cshark_link_list_get()
+ local uci = require("uci").cursor()
+
+ luci.http.prepare_content("application/json")
+
+ luci.http.write("[")
+
+ local t = uci:get("cshark", "cshark", "entry")
+ if (t ~= nil) then
+ for i = #t, 1, -1 do
+ luci.http.write("[\"" .. t[i] .. "\"],")
+ end
+ end
+
+ luci.http.write("[]]")
+end
+
+function cshark_link_list_clear()
+ local uci = require("uci").cursor()
+
+ uci:delete("cshark", "cshark", "entry")
+ uci:commit("cshark");
+
+ luci.http.status(200, "OK")
+end
diff --git a/applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua b/applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua
new file mode 100644
index 0000000000..8db95596f8
--- /dev/null
+++ b/applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua
@@ -0,0 +1,30 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright (C) 2014, QA Cafe, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+$Id$
+]]--
+
+local fs = require "nixio.fs"
+
+m = Map("cshark", translate("CloudShark"))
+
+if fs.access("/etc/config/cshark") then
+ m:section(SimpleSection).template = "cshark"
+
+ s = m:section(TypedSection, "cshark", translate("Options"))
+ s.anonymous = true
+ s.addremove = false
+
+ s:option(Value, "url", translate("CloudShark URL"))
+ s:option(Value, "token", translate("CloudShark API token"))
+end
+
+return m
diff --git a/applications/luci-app-cshark/luasrc/view/cshark.htm b/applications/luci-app-cshark/luasrc/view/cshark.htm
new file mode 100644
index 0000000000..bc67f806c4
--- /dev/null
+++ b/applications/luci-app-cshark/luasrc/view/cshark.htm
@@ -0,0 +1,291 @@
+<%#
+LuCI - Lua Configuration Interface
+
+Copyright (C) 2014, QA Cafe, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+$Id$
+
+-%>
+
+<fieldset class="cbi-section">
+ <legend><%:Start network capture%></legend>
+ <div class="cbi-section-node">
+ <table class="cbi-section-table">
+ <tr>
+ <th><%:Interface%></th>
+ <th colspan='2'><%:seconds, packets, bytes%></th>
+ <th><%:Filter%></th>
+ <th><%:Actions%></th>
+ </tr>
+ <tr>
+ <td>
+ <select title="<%:Interface%>" style="width:auto" id="s_interfaces">
+ <%
+ local nixio = require "nixio"
+ for k, v in ipairs(nixio.getifaddrs()) do
+ if v.family == "packet" then
+ %>
+ <option value="<%=v.name%>"><%=v.name%> </option>
+ <%
+ end
+ end
+ %>
+ <option value="any"><%:any%></option>
+ </select>
+ </td>
+ <td colspan='2'>
+ <input id="tx_value" type="text" value="0" />
+ <select title="<%:timeout, bytes, seconds%>" id="s_value_type" style="width:auto">
+ <option value="T"><%:seconds%></option>
+ <option value="P"><%:packets%></option>
+ <option value="S"><%:bytes%></option>
+ </select>
+ </td>
+ <td>
+ <input style="margin: 5px 0" type="text" title="<%:Filter%>" placeholder="filter" id="i_filter" />
+ </td>
+ <td>
+ <input type="button" id="bt_action" data-action="start" value="<%:Start capture%>" class="cbi-button" />
+ </td>
+ </tr>
+ </table>
+ </div>
+</fieldset>
+
+<fieldset class="cbi-section">
+ <span id="cshark-rc-output"></span>
+</fieldset>
+
+<hr/>
+
+<fieldset class="cbi-section">
+ <legend><%:Capture links%></legend>
+ <div class="cbi-section-node">
+ <table id="t_link_list" class="cbi-section-table">
+ <tr class="cbi-section-table-titles">
+ <th class="cbi-section-table-cell"><%:Capture URL%></th>
+ <th class="cbi-section-table-cell"><%:Capture time%></th>
+ </tr>
+ </table>
+ </div>
+</fieldset>
+
+<fieldset class="cbi-section">
+ <a href="https://support.cloudshark.org/openwrt/openwrt-cloudshark.html" target="_blank">Visit support.cloudshark.org for help.</a>
+</fieldset>
+
+<hr/>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+
+ var capture_running = 0;
+ var pid_file = 0;
+ var bt_action = document.getElementById('bt_action');
+ var a_clear_links = document.getElementById('a_clear_links');
+ var output = document.getElementById('cshark-rc-output');
+ var loader = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" width="16" height="16" style="vertical-align:middle" /> ';
+ var msg = { 'start' : '<%:Waiting for capture to complete...%>', 'stop' : '<%:Waiting for upload to complete...%>' };
+ var status_msg = msg['start'];
+
+ function get_date(timestamp)
+ {
+ function pad_str(str)
+ {
+ return (str < 10) ? "0" + str : str;
+ }
+
+ var current_date = new Date(timestamp * 1000);
+ return current_date.getFullYear() + "-" +
+ pad_str(current_date.getMonth() + 1) + "-" +
+ pad_str(current_date.getDate()) + " " +
+ pad_str(current_date.getHours()) + ":" +
+ pad_str(current_date.getMinutes()) + ":" +
+ pad_str(current_date.getSeconds());
+ }
+
+ bt_action.onclick = function()
+ {
+ var action = this.getAttribute("data-action");
+ var csxhr = new XHR();
+
+ if (action == "stop")
+ {
+ update_status(action);
+
+ bt_action.disabled = true;
+
+ csxhr.get('<%=luci.dispatcher.build_url("admin", "network")%>/cshark_iface_dump_stop', null,
+ function(x)
+ {
+ if (!x || x.responseText.trim() != "0")
+ {
+ update_status("failed", "Invalid response on stop.");
+ }
+ });
+
+ }
+ else if (action == "start")
+ {
+
+ var s_interfaces = document.getElementById('s_interfaces');
+ var s_value_type = document.getElementById('s_value_type');
+ var i_filter = document.getElementById('i_filter');
+
+ var if_n = s_interfaces.selectedIndex;
+ var t_n = s_value_type.selectedIndex;
+ var ifname = s_interfaces.options[if_n].value.trim();
+ var filter_val = i_filter.value.trim();
+ var tx_val = document.getElementById('tx_value').value.trim();
+ var type_val = s_value_type.options[t_n].value.trim();
+
+ if (type_val != 'P' && type_val != 'T' && type_val != 'S') type_val = 'T';
+
+ if (!ifname || !type_val) return;
+
+ if (isNaN(tx_val)) return alert("<%:value for [seconds, packets, bytes] must be Integer%>");
+
+ update_status(action);
+
+ csxhr.get('<%=luci.dispatcher.build_url("admin", "network")%>/cshark_iface_dump_start/' + ifname + '/' + tx_val + '/' + type_val + '/'+ filter_val, null,
+ function(x)
+ {
+ if (!x)
+ update_status("failed", "Invalid response on start.");
+ else
+ update_status("running");
+ });
+ }
+ }
+
+ function update_status(status, message)
+ {
+ switch (status)
+ {
+ case 'start':
+ case 'stop':
+ status_msg = msg[status];
+ output.innerHTML = loader + status_msg;
+ break
+
+ case 'running':
+ if (capture_running) break;;
+
+ output.innerHTML = loader + status_msg;
+
+ bt_action.value = '<%:Stop capture%>';
+ bt_action.setAttribute('data-action', 'stop');
+ capture_running = 1;
+ break;
+
+ case 'completed':
+ case 'failed':
+ if (!capture_running) break;
+
+ if (status == "completed")
+ {
+ link_list_update();
+ }
+
+ output.innerHTML = "<pre>" + message + "</pre>";
+ bt_action.value = '<%:Start capture%>';
+ bt_action.setAttribute('data-action', 'start');
+ bt_action.disabled = false;
+ capture_running = 0;
+ break;
+ }
+ }
+
+
+ function check_status()
+ {
+
+ XHR.poll(3, '<%=luci.dispatcher.build_url("admin", "network")%>/cshark_check_status', null,
+ function(x, data)
+ {
+ if (!x)
+ {
+ if (capture_running)
+ update_status("failed", "Invalid response when fetching status.");
+
+ return;
+ }
+ console.log(data)
+
+ update_status( (data.status == 1) && "running" || "completed", data.msg);
+ })
+ }
+
+ function link_list_clear()
+ {
+ var csxhr_del = new XHR();
+ csxhr_del.get('<%=luci.dispatcher.build_url("admin", "network")%>/cshark_link_list_clear', null,
+ function(x)
+ {
+ if (!x)
+ return false;
+
+ link_list_update();
+ });
+ }
+
+
+ function link_list_update()
+ {
+ var t_link = document.getElementById("t_link_list");
+ if (!t_link) return;
+
+ var row_count = t_link.rows.length;
+ while(--row_count) t_link.deleteRow(row_count);
+
+ var cell = t_link.insertRow(-1).insertCell(0);
+ cell.colSpan = 2;
+ cell.innerHTML = loader;
+
+ var csxhr_link = new XHR();
+ csxhr_link.get('<%=luci.dispatcher.build_url("admin", "network")%>/cshark_link_list_get', null,
+ function(x, entries)
+ {
+ var row = t_link.deleteRow(1);
+
+ if (!x) return;
+
+ if (!entries || !entries.length)
+ {
+ var cell = t_link.insertRow(-1).insertCell(0);
+ cell.colSpan = 2;
+ cell.innerHTML = '<em><br />There are no captures available yet.</em>';
+
+ return;
+ }
+
+ for (var i = 0, len = entries.length; i < len ; i++)
+ {
+ var entry = entries[i][0];
+ if (!entry) continue;
+
+ var data = entry.split(",");
+ var url = data[0];
+ var timestamp = data[1];
+
+ var row = t_link.insertRow(-1);
+ row.insertCell(0).innerHTML = '<a href="'+url+'" target="_blank">'+url+'</a>';
+ row.insertCell(1).innerHTML = get_date(timestamp);
+ }
+
+ var cell = t_link.insertRow(-1).insertCell(0);
+ cell.colSpan = 2;
+ cell.style.textAlign="center";
+ cell.innerHTML = '<input type="button" onclick="link_list_clear()" class="cbi-button" value ="<%:Clear list%>" />';
+ })
+ }
+
+ check_status();
+ link_list_update();
+//]]></script>
diff --git a/applications/luci-app-ddns/Makefile b/applications/luci-app-ddns/Makefile
index 88c905a41a..69f9880d4f 100644
--- a/applications/luci-app-ddns/Makefile
+++ b/applications/luci-app-ddns/Makefile
@@ -2,7 +2,7 @@
# Copyright 2008 Steven Barth <steven@midlink.org>
# Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
# Copyright 2013 Manuel Munz <freifunk at somakoma dot de>
-# Copyright 2014-2016 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+# Copyright 2014-2017 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
#
# This is free software, licensed under the Apache License, Version 2.0
@@ -16,7 +16,7 @@ PKG_VERSION:=2.4.8
# Release == build
# increase on changes of translation files
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_LICENSE:=Apache-2.0
PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
diff --git a/applications/luci-app-ddns/luasrc/controller/ddns.lua b/applications/luci-app-ddns/luasrc/controller/ddns.lua
index 63bb8bf4be..1dfa625541 100755
--- a/applications/luci-app-ddns/luasrc/controller/ddns.lua
+++ b/applications/luci-app-ddns/luasrc/controller/ddns.lua
@@ -1,7 +1,7 @@
-- Copyright 2008 Steven Barth <steven@midlink.org>
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
-- Copyright 2013 Manuel Munz <freifunk at somakoma dot de>
--- Copyright 2014-2016 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+-- Copyright 2014-2017 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
-- Licensed to the public under the Apache License 2.0.
module("luci.controller.ddns", package.seeall)
@@ -24,7 +24,7 @@ local srv_ver_min = "2.7.6" -- minimum version of service required
local srv_ver_cmd = luci_helper .. [[ -V | awk {'print $2'}]]
local app_name = "luci-app-ddns"
local app_title = "Dynamic DNS"
-local app_version = "2.4.8-1"
+local app_version = "2.4.8-2"
function index()
local nxfs = require "nixio.fs" -- global definitions not available
@@ -180,12 +180,10 @@ local function _get_status()
end
-- get/set monitored interface and IP version
- local iface = s["interface"] or "_nonet_"
+ local iface = s["interface"] or "wan"
local use_ipv6 = tonumber(s["use_ipv6"]) or 0
- if iface ~= "_nonet_" then
- local ipv = (use_ipv6 == 1) and "IPv6" or "IPv4"
- iface = ipv .. " / " .. iface
- end
+ local ipv = (use_ipv6 == 1) and "IPv6" or "IPv4"
+ iface = ipv .. " / " .. iface
-- try to get registered IP
local lookup_host = s["lookup_host"] or "_nolookup_"
diff --git a/applications/luci-app-ddns/po/pt-br/ddns.po b/applications/luci-app-ddns/po/pt-br/ddns.po
index 4970846516..ab22837b28 100644
--- a/applications/luci-app-ddns/po/pt-br/ddns.po
+++ b/applications/luci-app-ddns/po/pt-br/ddns.po
@@ -2,15 +2,15 @@ msgid ""
msgstr ""
"Project-Id-Version: luci-app-ddns 2.4.0-1\n"
"POT-Creation-Date: 2016-01-30 11:07+0100\n"
-"PO-Revision-Date: 2016-07-01 22:40-0300\n"
-"Last-Translator: Matheus Dal Mago <matheusdalmago10@gmail.com>\n"
+"PO-Revision-Date: 2017-02-20 17:41-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
"Language-Team: \n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Poedit 1.8.8\n"
+"X-Generator: Poedit 1.8.11\n"
msgid "&"
msgstr "&"
@@ -228,7 +228,7 @@ msgid "Error Retry Interval"
msgstr "Intervalo de tentativas em Erro"
msgid "Event Network"
-msgstr ""
+msgstr "Rede de Evento"
msgid "File"
msgstr "Arquivo"
@@ -438,16 +438,16 @@ msgid "No certificates found"
msgstr "Nenhum certificado encontrado"
msgid "No data"
-msgstr ""
+msgstr "Sem dados"
msgid "No logging"
-msgstr ""
+msgstr "Sem registros"
msgid "Non-public and by default blocked IP's"
msgstr "IPs não públicos e bloqueados por padrão"
msgid "Notice"
-msgstr ""
+msgstr "Aviso"
msgid "Number of last lines stored in log files"
msgstr "Número das últimas linhas salvas nos arquivos de log"
@@ -475,7 +475,7 @@ msgstr ""
"Em Erro, o script irá para a execução após um número definido de tentativas"
msgid "OpenWrt Wiki"
-msgstr ""
+msgstr "Wiki do OpenWRT"
msgid "Optional Encoded Parameter"
msgstr "Parâmetro Opcionalmente Codificado"
@@ -490,7 +490,7 @@ msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)"
msgstr "Opcional: Substitui [PARAMOPT] na URL de atualização"
msgid "Overview"
-msgstr ""
+msgstr "Visão Geral"
msgid "PROXY-Server"
msgstr "servidor PROXY"
@@ -575,7 +575,7 @@ msgid "There is no service configured."
msgstr "Não há serviço configurado"
msgid "Timer Settings"
-msgstr ""
+msgstr "Configurações do Controlador de Tempo"
msgid "To change global settings click here"
msgstr "Clique aqui para mudar configurações globais"
diff --git a/applications/luci-app-dynapoint/Makefile b/applications/luci-app-dynapoint/Makefile
index d16ef4a8fa..83512dba5e 100644
--- a/applications/luci-app-dynapoint/Makefile
+++ b/applications/luci-app-dynapoint/Makefile
@@ -9,9 +9,6 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI Support for DynaPoint
LUCI_DEPENDS:=+dynapoint
-PKG_NAME:=luci-app-dynapoint
-PKG_VERSION:=1.0
-PKG_RELEASE:=1
PKG_LICENSE:=GPL-3.0+
PKG_MAINTAINER:=Tobias Ilte <tobias.ilte@campus.tu-berlin.de>
include ../../luci.mk
diff --git a/applications/luci-app-dynapoint/po/pt-br/dynapoint.po b/applications/luci-app-dynapoint/po/pt-br/dynapoint.po
new file mode 100644
index 0000000000..59b02629a9
--- /dev/null
+++ b/applications/luci-app-dynapoint/po/pt-br/dynapoint.po
@@ -0,0 +1,107 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: pt_BR\n"
+
+msgid "Activate this wVIF if status is:"
+msgstr "Aivar este wVIF se o estado for:"
+
+msgid "Append hostname to ssid"
+msgstr "Sufixar o nome do equipamento ao SSID"
+
+msgid "Append the router's hostname to the SSID when connectivity check fails"
+msgstr ""
+"Sufixar o nome do roteador ao SSID quando a verificação da conectividade "
+"falhar"
+
+msgid "Check Internet connectivity via HTTP header download"
+msgstr "Cerifique a conectividade com a internet baixando o cabeçalho HTTP "
+
+msgid "Configuration"
+msgstr "Configuração"
+
+msgid "Curl is currently not installed."
+msgstr "O cURL não está instalado."
+
+msgid "Device"
+msgstr "Dispositivo"
+
+msgid "Disabled"
+msgstr "Desabilitado"
+
+msgid "DynaPoint"
+msgstr "DynaPoint"
+
+msgid "Dynamic Access Point Manager"
+msgstr "Gerenciamento do Ponto de Acesso Dinâmico"
+
+msgid "Enabled"
+msgstr "Habilitado"
+
+msgid ""
+"Failure counter after how many failed download attempts, the state is "
+"considered as offline"
+msgstr "Numero de falhar para considerar como inalcançável"
+
+msgid "List of Wireless Virtual Interfaces (wVIF)"
+msgstr "Lista de Interfaces Virtuais Wireless (wVIF)"
+
+msgid "List of host addresses"
+msgstr "Lista de endereços dos equipamentos"
+
+msgid ""
+"List of host addresses (url or IP) to track and request http headers from"
+msgstr ""
+"Lista de endereços dos equipamentos (URL ou endereço IP) para requisitar "
+"cabeçalhos HTTP"
+
+msgid "Mode"
+msgstr "Modo"
+
+msgid "Not used by DynaPoint"
+msgstr "Não usado pelo DynaPoint"
+
+msgid "Offline"
+msgstr "Desconectado"
+
+msgid "Online"
+msgstr "Conectado"
+
+msgid "SSID"
+msgstr "SSID"
+
+msgid "Switch_to_offline threshold"
+msgstr "Limiar para mudar para desconectado"
+
+msgid "Test-run interval"
+msgstr "Intervalo para execução do teste"
+
+msgid "Time interval in seconds to re-start a new test run"
+msgstr "Intervalo, em segundos, para reiniciar um nova execução do teste"
+
+msgid "Use curl"
+msgstr "Usar cURL"
+
+msgid "Use curl instead of wget"
+msgstr "Usar cURL ao invés do wget"
+
+msgid "Use curl instead of wget for testing the connectivity."
+msgstr "Usar cURL ao invés do wget para testar a conectividade."
+
+msgid "Used interface"
+msgstr "Dispositivos usadas"
+
+msgid "Which interface should curl use. (Use ifconfig to find out)"
+msgstr "Qual dispositivo o cURL deve usar. (Use ifconfig para listá-las)"
+
+msgid "WiFi Status"
+msgstr "Estado da WiFi"
diff --git a/applications/luci-app-e2guardian/Makefile b/applications/luci-app-e2guardian/Makefile
new file mode 100644
index 0000000000..c3ac029885
--- /dev/null
+++ b/applications/luci-app-e2guardian/Makefile
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=E2Guardian LuCI Interface
+LUCI_DEPENDS:=+luci-mod-admin-full +e2guardian
+
+PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-e2guardian/luasrc/controller/e2guardian.lua b/applications/luci-app-e2guardian/luasrc/controller/e2guardian.lua
new file mode 100644
index 0000000000..dd545f50ba
--- /dev/null
+++ b/applications/luci-app-e2guardian/luasrc/controller/e2guardian.lua
@@ -0,0 +1,22 @@
+--[[
+
+LuCI E2Guardian module
+
+Copyright (C) 2015, Itus Networks, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
+ Luka Perkov <luka.perkov@sartura.hr>
+
+]]--
+
+module("luci.controller.e2guardian", package.seeall)
+
+function index()
+ entry({"admin", "services", "e2guardian"}, cbi("e2guardian"), _("E2Guardian"))
+end
diff --git a/applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua b/applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua
new file mode 100644
index 0000000000..b62132108c
--- /dev/null
+++ b/applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua
@@ -0,0 +1,399 @@
+--[[
+
+LuCI E2Guardian module
+
+Copyright (C) 2015, Itus Networks, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
+ Luka Perkov <luka.perkov@sartura.hr>
+
+]]--
+
+local fs = require "nixio.fs"
+local sys = require "luci.sys"
+
+m = Map("e2guardian", translate("E2Guardian"))
+m.on_after_commit = function() luci.sys.call("/etc/init.d/e2guardian restart") end
+
+s = m:section(TypedSection, "e2guardian")
+s.anonymous = true
+s.addremove = false
+
+s:tab("tab_general", translate("General Settings"))
+s:tab("tab_additional", translate("Additional Settings"))
+s:tab("tab_logs", translate("Logs"))
+
+
+----------------- General Settings Tab -----------------------
+
+filterip = s:taboption("tab_general", Value, "filterip", translate("IP that E2Guardian listens"))
+filterip.datatype = "ip4addr"
+
+filterports = s:taboption("tab_general", Value, "filterports", translate("Port that E2Guardian listens"))
+filterports.datatype = "portrange"
+filterports.placeholder = "0-65535"
+
+proxyip = s:taboption("tab_general", Value, "proxyip", translate("IP address of the proxy"))
+proxyip.datatype = "ip4addr"
+proxyip.default = "127.0.0.1"
+
+proxyport = s:taboption("tab_general", Value, "proxyport", translate("Port of the proxy"))
+proxyport.datatype = "portrange"
+proxyport.placeholder = "0-65535"
+
+languagedir = s:taboption("tab_general", Value, "languagedir", translate("Language dir"))
+languagedir.datatype = "string"
+languagedir.default = "/usr/share/e2guardian/languages"
+
+language = s:taboption("tab_general", Value, "language", translate("Language to use"))
+language.datatype = "string"
+language.default = "ukenglish"
+
+loglevel = s:taboption("tab_general", ListValue, "loglevel", translate("Logging Settings"))
+loglevel:value("0", translate("none"))
+loglevel:value("1", translate("just denied"))
+loglevel:value("2", translate("all text based"))
+loglevel:value("3", translate("all requests"))
+loglevel.default = "2"
+
+logexceptionhits = s:taboption("tab_general", ListValue, "logexceptionhits", translate("Log Exception Hits"))
+logexceptionhits:value("0", translate("never"))
+logexceptionhits:value("1", translate("log, but don't mark as exceptions"))
+logexceptionhits:value("2", translate("log and mark"))
+logexceptionhits.default = "2"
+
+logfileformat = s:taboption("tab_general", ListValue, "logfileformat", translate("Log File Format"))
+logfileformat:value("1", translate("DansgGuardian format, space delimited"))
+logfileformat:value("2", translate("CSV-style format"))
+logfileformat:value("3", translate("Squid Log File Format"))
+logfileformat:value("4", translate("Tab delimited"))
+logfileformat:value("5", translate("Protex format"))
+logfileformat:value("6", translate("Protex format with server field blanked"))
+logfileformat.default = "1"
+
+accessdeniedaddress = s:taboption("tab_general", Value, "accessdeniedaddress", translate("Access denied address"),
+translate("Server to which the cgi e2guardian reporting script was copied. Reporting levels 1 and 2 only"))
+accessdeniedaddress.datatype = "string"
+accessdeniedaddress.default = "http://YOURSERVER.YOURDOMAIN/cgi-bin/e2guardian.pl"
+
+usecustombannedimage = s:taboption("tab_general", ListValue, "usecustombannedimage", translate("Banned image replacement"))
+usecustombannedimage:value("on", translate("Yes"))
+usecustombannedimage:value("off", translate("No"))
+usecustombannedimage.default = "on"
+
+custombannedimagefile = s:taboption("tab_general", Value, "custombannedimagefile", translate("Custom banned image file"))
+custombannedimagefile.datatype = "string"
+custombannedimagefile.default = "/usr/share/e2guardian/transparent1x1.gif"
+
+usecustombannedflash = s:taboption("tab_general", ListValue, "usecustombannedflash", translate("Banned flash replacement"))
+usecustombannedflash:value("on", translate("Yes"))
+usecustombannedflash:value("off", translate("No"))
+usecustombannedflash.default = "on"
+
+custombannedflashfile = s:taboption("tab_general", Value, "custombannedflashfile", translate("Custom banned flash file"))
+custombannedflashfile.datatype = "string"
+custombannedflashfile.default = "/usr/share/e2guardian/blockedflash.swf"
+
+filtergroups = s:taboption("tab_general", Value, "filtergroups", translate("Number of filter groups"))
+filtergroups.datatype = "and(uinteger,min(1))"
+filtergroups.default = "1"
+
+filtergroupslist = s:taboption("tab_general", Value, "filtergroupslist", translate("List of filter groups"))
+filtergroupslist.datatype = "string"
+filtergroupslist.default = "/etc/e2guardian/lists/filtergroupslist"
+
+bannediplist = s:taboption("tab_general", Value, "bannediplist", translate("List of banned IPs"))
+bannediplist.datatype = "string"
+bannediplist.default = "/etc/e2guardian/lists/bannediplist"
+
+exceptioniplist = s:taboption("tab_general", Value, "exceptioniplist", translate("List of IP exceptions"))
+exceptioniplist.datatype = "string"
+exceptioniplist.default = "/etc/e2guardian/lists/exceptioniplist"
+
+perroomblockingdirectory = s:taboption("tab_general", Value, "perroomblockingdirectory", translate("Per-Room blocking definition directory"))
+perroomblockingdirectory.datatype = "string"
+perroomblockingdirectory.default = "/etc/e2guardian/lists/bannedrooms/"
+
+showweightedfound = s:taboption("tab_general", ListValue, "showweightedfound", translate("Show weighted phrases found"))
+showweightedfound:value("on", translate("Yes"))
+showweightedfound:value("off", translate("No"))
+showweightedfound.default = "on"
+
+weightedphrasemode = s:taboption("tab_general", ListValue, "weightedphrasemode", translate("Weighted phrase mode"))
+weightedphrasemode:value("0", translate("off"))
+weightedphrasemode:value("1", translate("on, normal operation"))
+weightedphrasemode:value("2", translate("on, phrase found only counts once on a page"))
+weightedphrasemode.default = "2"
+
+urlcachenumber = s:taboption("tab_general", Value, "urlcachenumber", translate("Clean result caching for URLs"))
+urlcachenumber.datatype = "and(uinteger,min(0))"
+urlcachenumber.default = "1000"
+
+urlcacheage = s:taboption("tab_general", Value, "urlcacheage", translate("Age before they should be ignored in seconds"))
+urlcacheage.datatype = "and(uinteger,min(0))"
+urlcacheage.default = "900"
+
+scancleancache = s:taboption("tab_general", ListValue, "scancleancache", translate("Cache for content (AV) scans as 'clean'"))
+scancleancache:value("on", translate("Yes"))
+scancleancache:value("off", translate("No"))
+scancleancache.default = "on"
+
+phrasefiltermode = s:taboption("tab_general", ListValue, "phrasefiltermode", translate("Filtering options"))
+phrasefiltermode:value("0", translate("raw"))
+phrasefiltermode:value("1", translate("smart"))
+phrasefiltermode:value("2", translate("both raw and smart"))
+phrasefiltermode:value("3", translate("meta/title"))
+phrasefiltermode.default = "2"
+
+preservecase = s:taboption("tab_general", ListValue, "perservecase", translate("Lower caseing options"))
+preservecase:value("0", translate("force lower case"))
+preservecase:value("1", translate("don't change"))
+preservecase:value("2", translate("scan fist in lower, then in original"))
+preservecase.default = "0"
+
+hexdecodecontent = s:taboption("tab_general", ListValue, "hexdecodecontent", translate("Hex decoding options"))
+hexdecodecontent:value("on", translate("Yes"))
+hexdecodecontent:value("off", translate("No"))
+hexdecodecontent.default = "off"
+
+forcequicksearch = s:taboption("tab_general", ListValue, "forcequicksearch", translate("Quick search"))
+forcequicksearch:value("on", translate("Yes"))
+forcequicksearch:value("off", translate("No"))
+forcequicksearch.default = "off"
+
+reverseaddresslookups= s:taboption("tab_general", ListValue, "reverseaddresslookups", translate("Reverse lookups for banned site and URLs"))
+reverseaddresslookups:value("on", translate("Yes"))
+reverseaddresslookups:value("off", translate("No"))
+reverseaddresslookups.default = "off"
+
+reverseclientiplookups = s:taboption("tab_general", ListValue, "reverseclientiplookups", translate("Reverse lookups for banned and exception IP lists"))
+reverseclientiplookups:value("on", translate("Yes"))
+reverseclientiplookups:value("off", translate("No"))
+reverseclientiplookups.default = "off"
+
+logclienthostnames = s:taboption("tab_general", ListValue, "logclienthostnames", translate("Perform reverse lookups on client IPs for successful requests"))
+logclienthostnames:value("on", translate("Yes"))
+logclienthostnames:value("off", translate("No"))
+logclienthostnames.default = "off"
+
+createlistcachefiles = s:taboption("tab_general", ListValue, "createlistcachefiles", translate("Build bannedsitelist and bannedurllist cache files"))
+createlistcachefiles:value("on",translate("Yes"))
+createlistcachefiles:value("off",translate("No"))
+createlistcachefiles.default = "on"
+
+prefercachedlists = s:taboption("tab_general", ListValue, "prefercachedlists", translate("Prefer cached list files"))
+prefercachedlists:value("on", translate("Yes"))
+prefercachedlists:value("off", translate("No"))
+prefercachedlists.default = "off"
+
+maxuploadsize = s:taboption("tab_general", Value, "maxuploadsize", translate("Max upload size (in Kbytes)"))
+maxuploadsize:value("-1", translate("no blocking"))
+maxuploadsize:value("0", translate("complete block"))
+maxuploadsize.default = "-1"
+
+maxcontentfiltersize = s:taboption("tab_general", Value, "maxcontentfiltersize", translate("Max content filter size"),
+translate("The value must not be higher than max content ram cache scan size or 0 to match it"))
+maxcontentfiltersize.datatype = "and(uinteger,min(0))"
+maxcontentfiltersize.default = "256"
+
+maxcontentramcachescansize = s:taboption("tab_general", Value, "maxcontentramcachescansize", translate("Max content ram cache scan size"),
+translate("This is the max size of file that DG will download and cache in RAM"))
+maxcontentramcachescansize.datatype = "and(uinteger,min(0))"
+maxcontentramcachescansize.default = "2000"
+
+maxcontentfilecachescansize = s:taboption("tab_general", Value, "maxcontentfilecachescansize", translate("Max content file cache scan size"))
+maxcontentfilecachescansize.datatype = "and(uinteger,min(0))"
+maxcontentfilecachescansize.default = "20000"
+
+proxytimeout = s:taboption("tab_general", Value, "proxytimeout", translate("Proxy timeout (5-100)"))
+proxytimeout.datatype = "range(5,100)"
+proxytimeout.default = "20"
+
+proxyexchange = s:taboption("tab_general", Value, "proxyexchange", translate("Proxy header excahnge (20-300)"))
+proxyexchange.datatype = "range(20,300)"
+proxyexchange.default = "20"
+
+pcontimeout = s:taboption("tab_general", Value, "pcontimeout", translate("Pconn timeout"),
+translate("How long a persistent connection will wait for other requests"))
+pcontimeout.datatype = "range(5,300)"
+pcontimeout.default = "55"
+
+filecachedir = s:taboption("tab_general", Value, "filecachedir", translate("File cache directory"))
+filecachedir.datatype = "string"
+filecachedir.default = "/tmp"
+
+deletedownloadedtempfiles = s:taboption("tab_general", ListValue, "deletedownloadedtempfiles", translate("Delete file cache after user completes download"))
+deletedownloadedtempfiles:value("on", translate("Yes"))
+deletedownloadedtempfiles:value("off", translate("No"))
+deletedownloadedtempfiles.default = "on"
+
+initialtrickledelay = s:taboption("tab_general", Value, "initialtrickledelay", translate("Initial Trickle delay"),
+translate("Number of seconds a browser connection is left waiting before first being sent *something* to keep it alive"))
+initialtrickledelay.datatype = "and(uinteger,min(0))"
+initialtrickledelay.default = "20"
+
+trickledelay = s:taboption("tab_general", Value, "trickledelay", translate("Trickle delay"),
+translate("Number of seconds a browser connection is left waiting before being sent more *something* to keep it alive"))
+trickledelay.datatype = "and(uinteger,min(0))"
+trickledelay.default = "10"
+
+downloadmanager = s:taboption("tab_general", Value, "downloadmanager", translate("Download manager"))
+downloadmanager.datatype = "string"
+downloadmanager.default = "/etc/e2guardian/downloadmanagers/default.conf"
+
+contentscannertimeout = s:taboption("tab_general", Value, "contentscannertimeout", translate("Content scanner timeout"))
+contentscannertimeout.datatype = "and(uinteger,min(0))"
+contentscannertimeout.default = "60"
+
+contentscanexceptions = s:taboption("tab_general", ListValue, "contentscanexceptions", translate("Content scan exceptions"))
+contentscanexceptions:value("on", translate("Yes"))
+contentscanexceptions:value("off", translate("No"))
+contentscanexceptions.default = "off"
+
+recheckreplacedurls = s:taboption("tab_general", ListValue, "recheckreplacedurls", translate("e-check replaced URLs"))
+recheckreplacedurls:value("on", translate("Yes"))
+recheckreplacedurls:value("off", translate("No"))
+recheckreplacedurls.default = "off"
+
+forwardedfor = s:taboption("tab_general", ListValue, "forwardedfor", translate("Misc setting: forwardedfor"),
+translate("If on, it may help solve some problem sites that need to know the source ip."))
+forwardedfor:value("on", translate("Yes"))
+forwardedfor:value("off", translate("No"))
+forwardedfor.default = "off"
+
+usexforwardedfor = s:taboption("tab_general", ListValue, "usexforwardedfor", translate("Misc setting: usexforwardedfor"),
+translate("This is for when you have squid between the clients and E2Guardian"))
+usexforwardedfor:value("on", translate("Yes"))
+usexforwardedfor:value("off", translate("No"))
+usexforwardedfor.default = "off"
+
+logconnectionhandlingerrors = s:taboption("tab_general", ListValue, "logconnectionhandlingerrors", translate("Log debug info about log()ing and accept()ing"))
+logconnectionhandlingerrors:value("on", translate("Yes"))
+logconnectionhandlingerrors:value("off", translate("No"))
+logconnectionhandlingerrors.default = "on"
+
+logchildprocesshandling = s:taboption("tab_general", ListValue, "logchildprocesshandling", translate("Log child process handling"))
+logchildprocesshandling:value("on", translate("Yes"))
+logchildprocesshandling:value("off", translate("No"))
+logchildprocesshandling.default = "off"
+
+maxchildren = s:taboption("tab_general", Value, "maxchildren", translate("Max number of processes to spawn"))
+maxchildren.datatype = "and(uinteger,min(0))"
+maxchildren.default = "180"
+
+minchildren = s:taboption("tab_general", Value, "minchildren", translate("Min number of processes to spawn"))
+minchildren.datatype = "and(uinteger,min(0))"
+minchildren.default = "20"
+
+minsparechildren = s:taboption("tab_general", Value, "minsparechildren", translate("Min number of processes to keep ready"))
+minsparechildren.datatype = "and(uinteger,min(0))"
+minsparechildren.default = "16"
+
+preforkchildren = s:taboption("tab_general", Value, "preforkchildren", translate("Sets minimum nuber of processes when it runs out"))
+preforkchildren.datatype = "and(uinteger,min(0))"
+preforkchildren.default = "10"
+
+maxsparechildren = s:taboption("tab_general", Value, "maxsparechildren", translate("Sets the maximum number of processes to have doing nothing"))
+maxsparechildren.datatype = "and(uinteger,min(0))"
+maxsparechildren.default = "32"
+
+maxagechildren = s:taboption("tab_general", Value, "maxagechildren", translate("Max age of child process"))
+maxagechildren.datatype = "and(uinteger,min(0))"
+maxagechildren.default = "500"
+
+maxips = s:taboption("tab_general", Value, "maxips", translate("Max number of clinets allowed to connect"))
+maxips:value("0", translate("no limit"))
+maxips.default = "0"
+
+ipipcfilename = s:taboption("tab_general", Value, "ipipcfilename", translate("IP list IPC server directory and filename"))
+ipipcfilename.datatype = "string"
+ipipcfilename.default = "/tmp/.dguardianipc"
+
+urlipcfilename = s:taboption("tab_general", Value, "urlipcfilename", translate("Defines URL list IPC server directory and filename used to communicate with the URL cache process"))
+urlipcfilename.datatype = "string"
+urlipcfilename.default = "/tmp/.dguardianurlipc"
+
+ipcfilename = s:taboption("tab_general", Value, "ipcfilename", translate("Defines URL list IPC server directory and filename used to communicate with the URL cache process"))
+ipcfilename.datatype = "string"
+ipcfilename.default = "/tmp/.dguardianipipc"
+
+nodeamon = s:taboption("tab_general", ListValue, "nodeamon", translate("Disable deamoning"))
+nodeamon:value("on", translate("Yes"))
+nodeamon:value("off", translate("No"))
+nodeamon.default = "off"
+
+nologger = s:taboption("tab_general", ListValue, "nologger", translate("Disable logger"))
+nologger:value("on", translate("Yes"))
+nologger:value("off", translate("No"))
+nologger.default = "off"
+
+logadblock = s:taboption("tab_general", ListValue, "logadblock", translate("Enable logging of ADs"))
+logadblock:value("on", translate("Yes"))
+logadblock:value("off", translate("No"))
+logadblock.default = "off"
+
+loguseragent = s:taboption("tab_general", ListValue, "loguseragent", translate("Enable logging of client user agent"))
+loguseragent:value("on", translate("Yes"))
+loguseragent:value("off", translate("No"))
+loguseragent.default = "off"
+
+softrestart = s:taboption("tab_general", ListValue, "softrestart", translate("Enable soft restart"))
+softrestart:value("on", translate("Yes"))
+softrestart:value("off", translate("No"))
+softrestart.default = "off"
+
+
+------------------------ Additional Settings Tab ----------------------------
+
+e2guardian_config_file = s:taboption("tab_additional", TextValue, "_data", "")
+e2guardian_config_file.wrap = "off"
+e2guardian_config_file.rows = 25
+e2guardian_config_file.rmempty = false
+
+function e2guardian_config_file.cfgvalue()
+ local uci = require "luci.model.uci".cursor_state()
+ file = "/etc/e2guardian/e2guardianf1.conf"
+ if file then
+ return fs.readfile(file) or ""
+ else
+ return ""
+ end
+end
+
+function e2guardian_config_file.write(self, section, value)
+ if value then
+ local uci = require "luci.model.uci".cursor_state()
+ file = "/etc/e2guardian/e2guardianf1.conf"
+ fs.writefile(file, value:gsub("\r\n", "\n"))
+ end
+end
+
+
+---------------------------- Logs Tab -----------------------------
+
+e2guardian_logfile = s:taboption("tab_logs", TextValue, "lines", "")
+e2guardian_logfile.wrap = "off"
+e2guardian_logfile.rows = 25
+e2guardian_logfile.rmempty = true
+
+function e2guardian_logfile.cfgvalue()
+ local uci = require "luci.model.uci".cursor_state()
+ file = "/tmp/e2guardian/access.log"
+ if file then
+ return fs.readfile(file) or ""
+ else
+ return "Can't read log file"
+ end
+end
+
+function e2guardian_logfile.write()
+ return ""
+end
+
+return m
diff --git a/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua b/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua
index 694bbd872e..500e5078f4 100644
--- a/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua
+++ b/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua
@@ -19,7 +19,6 @@ s.addremove = false
s:option(Flag, "syn_flood", translate("Enable SYN-flood protection"))
o = s:option(Flag, "drop_invalid", translate("Drop invalid packets"))
-o.default = o.enabled
p = {
s:option(ListValue, "input", translate("Input")),
diff --git a/applications/luci-app-firewall/po/pt-br/firewall.po b/applications/luci-app-firewall/po/pt-br/firewall.po
index 2d601f8575..ab714b50b9 100644
--- a/applications/luci-app-firewall/po/pt-br/firewall.po
+++ b/applications/luci-app-firewall/po/pt-br/firewall.po
@@ -1,17 +1,17 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-03-30 17:00+0200\n"
-"PO-Revision-Date: 2014-06-21 19:03+0200\n"
-"Last-Translator: Éder <eder.grigorio@openmailbox.org>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-02-20 17:43-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"Language-Team: \n"
msgid "%s in %s"
msgstr "%s in %s"
@@ -143,7 +143,7 @@ msgid "Forward to"
msgstr "Encaminhar para"
msgid "Friday"
-msgstr ""
+msgstr "Sexta-feira"
msgid "From %s in %s"
msgstr "Vindo de %s em %s"
@@ -222,10 +222,10 @@ msgstr ""
"equipamento cliente."
msgid "Monday"
-msgstr ""
+msgstr "Segunda-Feira"
msgid "Month Days"
-msgstr ""
+msgstr "Dias do mês"
msgid "Name"
msgstr "Nome"
@@ -296,7 +296,7 @@ msgid "Redirect matched incoming traffic to the specified internal host"
msgstr "Redireciona tráfego entrante para o computador interno especificado"
msgid "Restart Firewall"
-msgstr ""
+msgstr "Reiniciar o Firewall"
msgid "Restrict Masquerading to given destination subnets"
msgstr "Restringe o mascaramento para uma subrede de destino específica"
@@ -330,7 +330,7 @@ msgid "SNAT port"
msgstr "Porta da SNAT"
msgid "Saturday"
-msgstr ""
+msgstr "Sábado"
msgid "Source IP address"
msgstr "Endereço IP de origem"
@@ -360,19 +360,19 @@ msgid "Source zone"
msgstr "Zona de origem"
msgid "Start Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "Dia inicial (aaaa-mm-dd)"
msgid "Start Time (hh:mm:ss)"
-msgstr ""
+msgstr "Hora inicial (hh:mm:ss)"
msgid "Stop Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "Dia final (aaaa-mm-dd)"
msgid "Stop Time (hh:mm:ss)"
-msgstr ""
+msgstr "Hora final (hh:mm:ss)"
msgid "Sunday"
-msgstr ""
+msgstr "Domingo"
msgid ""
"The firewall creates zones over your network interfaces to control network "
@@ -411,7 +411,6 @@ msgstr ""
"Esta página permite que você mude propriedades avançadas da entrada da regra "
"de tráfego, como os equipamentos de origem e destino."
-#, fuzzy
msgid ""
"This section defines common properties of %q. The <em>input</em> and "
"<em>output</em> options set the default policies for traffic entering and "
@@ -427,10 +426,10 @@ msgstr ""
"zona."
msgid "Thursday"
-msgstr ""
+msgstr "Quita-feira"
msgid "Time in UTC"
-msgstr ""
+msgstr "Hora em UTC"
msgid "To %s at %s on <var>this device</var>"
msgstr "Para %s em %s <var>neste dispositivo</var>"
@@ -463,7 +462,7 @@ msgstr ""
"ou abrir portas WAN no roteador."
msgid "Tuesday"
-msgstr ""
+msgstr "Terça-feira"
msgid "Via %s"
msgstr "Via %s"
@@ -472,10 +471,10 @@ msgid "Via %s at %s"
msgstr "Via %s at %s"
msgid "Wednesday"
-msgstr ""
+msgstr "Quarta-feira"
msgid "Week Days"
-msgstr ""
+msgstr "Dias da semana"
msgid ""
"You may specify multiple by selecting \"-- custom --\" and then entering "
diff --git a/applications/luci-app-fwknopd/Makefile b/applications/luci-app-fwknopd/Makefile
index 3fbd88ad61..ba7a8568e7 100644
--- a/applications/luci-app-fwknopd/Makefile
+++ b/applications/luci-app-fwknopd/Makefile
@@ -8,8 +8,6 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Fwknopd config - web config for the firewall knock daemon
LUCI_DEPENDS:=+fwknopd +qrencode
-PKG_VERSION:=1.0
-PKG_RELEASE:=1
PKG_LICENSE:=GPLv2
PKG_MAINTAINER:=Jonathan Bennett <JBennett@incomsystems.biz>
include ../../luci.mk
diff --git a/applications/luci-app-fwknopd/po/pt-br/fwknopd.po b/applications/luci-app-fwknopd/po/pt-br/fwknopd.po
new file mode 100644
index 0000000000..286b49db31
--- /dev/null
+++ b/applications/luci-app-fwknopd/po/pt-br/fwknopd.po
@@ -0,0 +1,116 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: pt_BR\n"
+
+msgid ""
+"Allow SPA clients to request access to services through an iptables firewall "
+"instead of just to it."
+msgstr ""
+"Permitir que clientes SPA requeiram acesso a serviços através de um firewall "
+"iptables ao invés de apenas fazê-lo."
+
+msgid "Allow SPA clients to request forwarding destination by DNS name."
+msgstr ""
+"Permitir que clientes SPA requeiram encaminhamento de destinos por nome DNS."
+
+msgid "Base 64 key"
+msgstr "Chave em formato base64"
+
+msgid ""
+"Define a set of ports and protocols (tcp or udp) that will be opened if a "
+"valid knock sequence is seen. If this entry is not set, fwknopd will attempt "
+"to honor any proto/port request specified in the SPA data (unless of it "
+"matches any “RESTRICT_PORTS†entries). Multiple entries are comma-separated."
+msgstr ""
+"Define um conjunto de porta e protocolos (TCP ou UDP) que serão abertos se "
+"uma sequência de batidas for observada. Se esta entrada não estiver "
+"definida, fwknopd irá tentar honrar qualquer requisição de protocolo/porta "
+"especificada nos dados SPA (a não ser se casar com qualquer entrada de "
+"\"RESTRICT_PORTS\"). Múltiplas entradas serão separadas por vírgula."
+
+msgid ""
+"Define the length of time access will be granted by fwknopd through the "
+"firewall after a valid knock sequence from a source IP address. If "
+"“FW_ACCESS_TIMEOUT†is not set then the default timeout of 30 seconds will "
+"automatically be set."
+msgstr ""
+"Define a duração do tempo de acesso que será concedido pelo fwknopd através "
+"do firewall depois de uma sequência de batidas válida de um endereço IP. Se "
+"“FW_ACCESS_TIMEOUT†não estiver definido, o valor padrão será de 30 "
+"segundos. "
+
+msgid ""
+"Define the symmetric key used for decrypting an incoming SPA packet that is "
+"encrypted by the fwknop client with Rijndael."
+msgstr ""
+"Define a chave simétrica usada para decifrar um pacote SPA entrante que foi "
+"cifrado pelo cliente fwknop com o algoritmo Rijndael."
+
+msgid "Enable Uci/Luci control"
+msgstr "Habilitar o controle UCI/Luci"
+
+msgid "Enable config overwrite"
+msgstr "Habilitar a sobrescrita da configuração"
+
+msgid "Firewall Knock Daemon"
+msgstr "Servidor do Firwall Knock"
+
+msgid "Firewall Knock Operator"
+msgstr "Operador do Firewall Knock"
+
+msgid ""
+"Force all SPA packets to contain a real IP address within the encrypted "
+"data. This makes it impossible to use the -s command line argument on the "
+"fwknop client command line, so either -R has to be used to automatically "
+"resolve the external address (if the client behind a NAT) or the client must "
+"know the external IP and set it via the -a argument."
+msgstr ""
+"Forçar que todos os pacotes SPA contenham um endereço IP real dentro do "
+"pacote cifrado. Isto torna impossível o uso do argumento de linha de comando "
+"'-s' no cliente fwknop. Desta forma, ou o argumento '-R' deve ser usada para "
+"resolver os endereços externos automaticamente (se o cliente estiver atrás "
+"de uma NAT) ou o ciente deve conhecer o seu endereço IP externo e defini-lo "
+"através do argumento '-a'."
+
+msgid ""
+"Maximum age in seconds that an SPA packet will be accepted. defaults to 120 "
+"seconds"
+msgstr ""
+"Idade máxima, em segundos, que um pacote SPA será aceito. Padrão é 120 "
+"segundos."
+
+msgid "Normal Key"
+msgstr "Chave Normal"
+
+msgid "Specify the ethernet interface on which fwknopd will sniff packets."
+msgstr ""
+"Especifica o dispositivo ethernet no qual o fwknopd irá observar os pacotes."
+
+msgid "The base64 hmac key"
+msgstr "A chave de autenticação HMAC em formato base64"
+
+msgid "Use ANY for any source ip"
+msgstr "Use \"ANY\" para qualquer endereço IP de origem"
+
+msgid ""
+"When unchecked, the config files in /etc/fwknopd will be used as is, "
+"ignoring any settings here."
+msgstr ""
+"Quando desmarcado, os arquivos de configuração em /etc/fwknopd serão usados "
+"como estão, ignorando qualquer ajustes feitos aqui."
+
+msgid "access.conf stanzas"
+msgstr "Estâncias do access.conf"
+
+msgid "fwknopd.conf config options"
+msgstr "Opções do fwknopd.conf"
diff --git a/applications/luci-app-hd-idle/luasrc/controller/hd_idle.lua b/applications/luci-app-hd-idle/luasrc/controller/hd_idle.lua
index f273a551df..9a981acac3 100644
--- a/applications/luci-app-hd-idle/luasrc/controller/hd_idle.lua
+++ b/applications/luci-app-hd-idle/luasrc/controller/hd_idle.lua
@@ -10,6 +10,6 @@ function index()
local page
- page = entry({"admin", "services", "hd_idle"}, cbi("hd_idle"), _("hd-idle"), 60)
+ page = entry({"admin", "services", "hd_idle"}, cbi("hd_idle"), _("HDD Idle"), 60)
page.dependent = true
end
diff --git a/applications/luci-app-hd-idle/luasrc/model/cbi/hd_idle.lua b/applications/luci-app-hd-idle/luasrc/model/cbi/hd_idle.lua
index 70b04af909..c15fdc028a 100644
--- a/applications/luci-app-hd-idle/luasrc/model/cbi/hd_idle.lua
+++ b/applications/luci-app-hd-idle/luasrc/model/cbi/hd_idle.lua
@@ -3,8 +3,8 @@
require("nixio.fs")
-m = Map("hd-idle", "hd-idle",
- translate("hd-idle is a utility program for spinning-down external " ..
+m = Map("hd-idle", translate("HDD Idle"),
+ translate("HDD Idle is a utility program for spinning-down external " ..
"disks after a period of idle time."))
s = m:section(TypedSection, "hd-idle", translate("Settings"))
@@ -18,9 +18,9 @@ for dev in nixio.fs.glob("/dev/[sh]d[a-z]") do
disk:value(nixio.fs.basename(dev))
end
-s:option(Value, "idle_time_interval", translate("Idle-time")).default = 10
+s:option(Value, "idle_time_interval", translate("Idle time")).default = 10
s.rmempty = true
-unit = s:option(ListValue, "idle_time_unit", translate("Idle-time unit"))
+unit = s:option(ListValue, "idle_time_unit", translate("Idle time unit"))
unit.default = "minutes"
unit:value("minutes", translate("min"))
unit:value("hours", translate("h"))
diff --git a/applications/luci-app-hd-idle/po/ca/hd_idle.po b/applications/luci-app-hd-idle/po/ca/hd_idle.po
index 29618a8961..10ca4cd1cb 100644
--- a/applications/luci-app-hd-idle/po/ca/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/ca/hd_idle.po
@@ -21,10 +21,20 @@ msgstr "Disc"
msgid "Enable"
msgstr "Habilita"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle és un programa per ralentitzar els discos externs després d'un "
+"període de temps inactiu."
+
+msgid "Idle time"
msgstr "Temps d'inactivitat"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Unitat de temps d'inactivitat"
msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "Ajusts"
msgid "h"
msgstr "h"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle és un programa per ralentitzar els discos externs després d'un "
-"període de temps inactiu."
-
# Minutes (not minimum)
msgid "min"
msgstr "min"
diff --git a/applications/luci-app-hd-idle/po/cs/hd_idle.po b/applications/luci-app-hd-idle/po/cs/hd_idle.po
index e2deb9b20c..b77539278e 100644
--- a/applications/luci-app-hd-idle/po/cs/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/cs/hd_idle.po
@@ -21,10 +21,20 @@ msgstr "Disk"
msgid "Enable"
msgstr "Povolit"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle je utilita pro vypnutí externích pevných disků po urÄité dobÄ› "
+"neÄinnosti."
+
+msgid "Idle time"
msgstr "ÄŒas neÄinnosti"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "ÄŒas neÄinnosti - jednotka"
msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "Nastavení"
msgid "h"
msgstr "h"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle je utilita pro vypnutí externích pevných disků po urÄité dobÄ› "
-"neÄinnosti."
-
# Minut (ne minimum)
msgid "min"
msgstr "min"
diff --git a/applications/luci-app-hd-idle/po/de/hd_idle.po b/applications/luci-app-hd-idle/po/de/hd_idle.po
index fa54896571..79fa603f07 100644
--- a/applications/luci-app-hd-idle/po/de/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/de/hd_idle.po
@@ -19,10 +19,20 @@ msgstr "Festplatte"
msgid "Enable"
msgstr "Aktivieren"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle ist ein Hilfsprogramm um externe Festplatten nach einer "
+"festgelegten Leerlaufzeit herunter zu fahren."
+
+msgid "Idle time"
msgstr "Leerlaufzeit"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Leerlaufzeiteinheit"
msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Einstellungen"
msgid "h"
msgstr "Stunden"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle ist ein Hilfsprogramm um externe Festplatten nach einer festgelegten "
-"Leerlaufzeit herunter zu fahren."
-
# Minutes (not minimum)
msgid "min"
msgstr "Minuten"
diff --git a/applications/luci-app-hd-idle/po/el/hd_idle.po b/applications/luci-app-hd-idle/po/el/hd_idle.po
index 4d7c23dfa4..e4f006adf7 100644
--- a/applications/luci-app-hd-idle/po/el/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/el/hd_idle.po
@@ -19,10 +19,18 @@ msgstr "Δίσκος"
msgid "Enable"
msgstr "ΕνεÏγοποίηση"
-msgid "Idle-time"
+msgid "HDD Idle"
msgstr ""
-msgid "Idle-time unit"
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+
+msgid "Idle time"
+msgstr ""
+
+msgid "Idle time unit"
msgstr ""
msgid "Settings"
@@ -32,14 +40,6 @@ msgstr "Ρυθμίσεις"
msgid "h"
msgstr "ω"
-msgid "hd-idle"
-msgstr ""
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-
# Minutes (not minimum)
msgid "min"
msgstr "λεπτά"
diff --git a/applications/luci-app-hd-idle/po/en/hd_idle.po b/applications/luci-app-hd-idle/po/en/hd_idle.po
index 7aa4db5fe5..3ed519f182 100644
--- a/applications/luci-app-hd-idle/po/en/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/en/hd_idle.po
@@ -17,11 +17,21 @@ msgstr "Disk"
msgid "Enable"
msgstr "Enable"
-msgid "Idle-time"
-msgstr "Idle-time"
+msgid "HDD Idle"
+msgstr ""
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+
+msgid "Idle time"
+msgstr "Idle time"
-msgid "Idle-time unit"
-msgstr "Idle-time unit"
+msgid "Idle time unit"
+msgstr "Idle time unit"
msgid "Settings"
msgstr "Settings"
@@ -30,16 +40,6 @@ msgstr "Settings"
msgid "h"
msgstr "h"
-msgid "hd-idle"
-msgstr ""
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-
# Minutes (not minimum)
msgid "min"
msgstr "min"
diff --git a/applications/luci-app-hd-idle/po/es/hd_idle.po b/applications/luci-app-hd-idle/po/es/hd_idle.po
index d2bb017a05..09dd3b80d1 100644
--- a/applications/luci-app-hd-idle/po/es/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/es/hd_idle.po
@@ -19,10 +19,20 @@ msgstr "Disco"
msgid "Enable"
msgstr "Activar"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle es un programa que gestiona el reposo de discos externos tras un "
+"tiempo de inactividad."
+
+msgid "Idle time"
msgstr "Tiempo de inactividad"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Unidad de tiempo"
msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Configuración"
msgid "h"
msgstr "h"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle es un programa que gestiona el reposo de discos externos tras un "
-"tiempo de inactividad."
-
# Minutes (not minimum)
msgid "min"
msgstr "minutos"
diff --git a/applications/luci-app-hd-idle/po/fr/hd_idle.po b/applications/luci-app-hd-idle/po/fr/hd_idle.po
index 00c092d487..ea30bf192a 100644
--- a/applications/luci-app-hd-idle/po/fr/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/fr/hd_idle.po
@@ -19,10 +19,20 @@ msgstr "Disque"
msgid "Enable"
msgstr "Activer"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle est un utilitaire pour arrêter la rotation des disques externes "
+"après une période d'inactivité."
+
+msgid "Idle time"
msgstr "Temps d'inactivité"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Unité de temps"
msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Réglages"
msgid "h"
msgstr "h"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle est un utilitaire pour arrêter la rotation des disques externes "
-"après une période d'inactivité."
-
# Minutes (not minimum)
msgid "min"
msgstr "min"
diff --git a/applications/luci-app-hd-idle/po/he/hd_idle.po b/applications/luci-app-hd-idle/po/he/hd_idle.po
index 0ffde90453..8a73d5f9b8 100644
--- a/applications/luci-app-hd-idle/po/he/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/he/hd_idle.po
@@ -21,10 +21,20 @@ msgstr "כונן"
msgid "Enable"
msgstr "×פשר"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr ""
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle ×”×™× ×” תוכנת שירות שמטרתה להקטין ×ת מהירות הסיבוב של ×›×•× × ×™× ×—×™×¦×•× ×™×™× "
+"ל×חר זמן ×ž×¡×•×™× ×©×œ חוסר פעילות."
+
+msgid "Idle time"
msgstr "זמן חוסר פעילות"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "יחידת זמן חוסר פעילות"
msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "הגדרות"
msgid "h"
msgstr "ש'"
-msgid "hd-idle"
-msgstr ""
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle ×”×™× ×” תוכנת שירות שמטרתה להקטין ×ת מהירות הסיבוב של ×›×•× × ×™× ×—×™×¦×•× ×™×™× "
-"ל×חר זמן ×ž×¡×•×™× ×©×œ חוסר פעילות."
-
# Minutes (not minimum)
msgid "min"
msgstr "דק'"
diff --git a/applications/luci-app-hd-idle/po/hu/hd_idle.po b/applications/luci-app-hd-idle/po/hu/hd_idle.po
index 543a8fc2cc..d902ee0f83 100644
--- a/applications/luci-app-hd-idle/po/hu/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/hu/hd_idle.po
@@ -21,10 +21,20 @@ msgstr "Lemez"
msgid "Enable"
msgstr "Engedélyezés"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle egy a külső lemezek adott üresjárati idő után történő leállítására "
+"szolgáló segédprogram."
+
+msgid "Idle time"
msgstr "Üresjárati idő"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Üresjárati idő egysége"
msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "Beállítások"
msgid "h"
msgstr "óra"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle egy a külső lemezek adott üresjárati idő után történő leállítására "
-"szolgáló segédprogram."
-
# Minutes (not minimum)
msgid "min"
msgstr "perc"
diff --git a/applications/luci-app-hd-idle/po/it/hd_idle.po b/applications/luci-app-hd-idle/po/it/hd_idle.po
index ffd118dd13..63751c332c 100644
--- a/applications/luci-app-hd-idle/po/it/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/it/hd_idle.po
@@ -19,10 +19,20 @@ msgstr "Disco"
msgid "Enable"
msgstr "Abilita"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle è un programma per mettere in standby i dischi esterni dopo un "
+"periodo di inattività."
+
+msgid "Idle time"
msgstr "Tempo di inattività"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Unità di misura del tempo di inattività"
msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Opzioni"
msgid "h"
msgstr "ora/e"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"HD-idle è un programma per mettere in standby i dischi esterni dopo un "
-"periodo di inattività."
-
# Minutes (not minimum)
msgid "min"
msgstr "min"
diff --git a/applications/luci-app-hd-idle/po/ja/hd_idle.po b/applications/luci-app-hd-idle/po/ja/hd_idle.po
index 9e724ebeb5..6023778c8e 100644
--- a/applications/luci-app-hd-idle/po/ja/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/ja/hd_idle.po
@@ -19,10 +19,20 @@ msgstr "ディスク"
msgid "Enable"
msgstr "有効"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idleã¯ã‚¢ã‚¤ãƒ‰ãƒ«æ™‚ã«å¤–部ディスクをスピンダウンã•ã›ã‚‹ãŸã‚ã®ã€ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£"
+"プログラムã§ã™ã€‚"
+
+msgid "Idle time"
msgstr "アイドル時間"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "アイドル時間 (å˜ä½)"
msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "設定"
msgid "h"
msgstr "時"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idleã¯ã‚¢ã‚¤ãƒ‰ãƒ«æ™‚ã«å¤–部ディスクをスピンダウンã•ã›ã‚‹ãŸã‚ã®ã€ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ãƒ—"
-"ログラムã§ã™ã€‚"
-
# Minutes (not minimum)
msgid "min"
msgstr "分"
diff --git a/applications/luci-app-hd-idle/po/ms/hd_idle.po b/applications/luci-app-hd-idle/po/ms/hd_idle.po
index 45402b8c52..361f1ac54f 100644
--- a/applications/luci-app-hd-idle/po/ms/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/ms/hd_idle.po
@@ -18,25 +18,25 @@ msgstr ""
msgid "Enable"
msgstr ""
-msgid "Idle-time"
+msgid "HDD Idle"
msgstr ""
-msgid "Idle-time unit"
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
msgstr ""
-msgid "Settings"
+msgid "Idle time"
msgstr ""
-# Hours
-msgid "h"
+msgid "Idle time unit"
msgstr ""
-msgid "hd-idle"
+msgid "Settings"
msgstr ""
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
+# Hours
+msgid "h"
msgstr ""
# Minutes (not minimum)
diff --git a/applications/luci-app-hd-idle/po/no/hd_idle.po b/applications/luci-app-hd-idle/po/no/hd_idle.po
index dc0c2f8904..6482a291ee 100644
--- a/applications/luci-app-hd-idle/po/no/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/no/hd_idle.po
@@ -10,10 +10,20 @@ msgstr "Disk"
msgid "Enable"
msgstr "Aktiver"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle er et verktøy for å spinne ned eksterne disker etter en periode med "
+"inaktivitet."
+
+msgid "Idle time"
msgstr "Tid inaktiv"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Tidsenhet"
msgid "Settings"
@@ -22,16 +32,6 @@ msgstr "Innstillinger"
msgid "h"
msgstr "timer"
-msgid "hd-idle"
-msgstr "Hd-Idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle er et verktøy for å spinne ned eksterne disker etter en periode med "
-"inaktivitet."
-
msgid "min"
msgstr "minutter"
diff --git a/applications/luci-app-hd-idle/po/pl/hd_idle.po b/applications/luci-app-hd-idle/po/pl/hd_idle.po
index c6522c19c0..29c286f12c 100644
--- a/applications/luci-app-hd-idle/po/pl/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/pl/hd_idle.po
@@ -20,10 +20,20 @@ msgstr "Dysk"
msgid "Enable"
msgstr "WÅ‚Ä…cz"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle jest narzędziem do zwalniania obrotów zewnętrznych dysków po "
+"określonym czasie bezczynności."
+
+msgid "Idle time"
msgstr "Czas bezczynności"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Jednostka czasu bezczynności"
msgid "Settings"
@@ -33,16 +43,6 @@ msgstr "Ustawienia"
msgid "h"
msgstr "godz."
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle jest narzędziem do zwalniania obrotów zewnętrznych dysków po "
-"określonym czasie bezczynności."
-
# Minutes (not minimum)
msgid "min"
msgstr "min"
diff --git a/applications/luci-app-hd-idle/po/pt-br/hd_idle.po b/applications/luci-app-hd-idle/po/pt-br/hd_idle.po
index 0aaca9389a..adcf063dc6 100644
--- a/applications/luci-app-hd-idle/po/pt-br/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/pt-br/hd_idle.po
@@ -19,10 +19,20 @@ msgstr "Disco"
msgid "Enable"
msgstr "Habilitar"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle é um programa utilitário para ativar o modo \"economia de energia"
+"\" (spinning-down) de discos externos após um período de ociosidade."
+
+msgid "Idle time"
msgstr "Tempo de ociosidade"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Unidade do tempo da ociosidade"
msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Configurações"
msgid "h"
msgstr "horas"
-msgid "hd-idle"
-msgstr "Hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"Hd-idle é um programa utilitário para ativar o modo \"economia de energia"
-"\" (spinning-down) de discos externos após um período de ociosidade."
-
# Minutes (not minimum)
msgid "min"
msgstr "minutos"
diff --git a/applications/luci-app-hd-idle/po/pt/hd_idle.po b/applications/luci-app-hd-idle/po/pt/hd_idle.po
index 16cb085b10..81a6ae27e8 100644
--- a/applications/luci-app-hd-idle/po/pt/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/pt/hd_idle.po
@@ -19,10 +19,20 @@ msgstr "Disco"
msgid "Enable"
msgstr "Ativar"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle é um programa utilitário para activar o modo \"economia de energia"
+"\" (spinning-down) de discos externos após um período de ociosidade."
+
+msgid "Idle time"
msgstr "Tempo de ociosidade"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Unidade de tempo de ociosidade"
msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Configurações"
msgid "h"
msgstr "h"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle é um programa utilitário para activar o modo \"economia de energia"
-"\" (spinning-down) de discos externos após um período de ociosidade."
-
# Minutes (not minimum)
msgid "min"
msgstr "min"
diff --git a/applications/luci-app-hd-idle/po/ro/hd_idle.po b/applications/luci-app-hd-idle/po/ro/hd_idle.po
index ae6a8b0904..31311cec0f 100644
--- a/applications/luci-app-hd-idle/po/ro/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/ro/hd_idle.po
@@ -22,10 +22,20 @@ msgstr "Disc"
msgid "Enable"
msgstr "Activeaza"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle este un utilitar pentru a oprit din rotatie hard disc-urile externe "
+"dupa o anumita perioada de inactivitate."
+
+msgid "Idle time"
msgstr "Timp de inactivitate"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Unitatea de timp pentru masurarea inactivitatii"
msgid "Settings"
@@ -35,16 +45,6 @@ msgstr "Setari"
msgid "h"
msgstr "ore"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle este un utilitar pentru a oprit din rotatie hard disc-urile externe "
-"dupa o anumita perioada de inactivitate."
-
# Minutes (not minimum)
msgid "min"
msgstr "minute"
diff --git a/applications/luci-app-hd-idle/po/ru/hd_idle.po b/applications/luci-app-hd-idle/po/ru/hd_idle.po
index 45d4a519be..e58a32f1de 100644
--- a/applications/luci-app-hd-idle/po/ru/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/ru/hd_idle.po
@@ -21,10 +21,20 @@ msgstr "ДиÑк"
msgid "Enable"
msgstr "Включить"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"Утилита HDD Idle позволÑет замедлÑÑ‚ÑŒ внешние диÑки поÑле определённого "
+"времени бездейÑтвиÑ."
+
+msgid "Idle time"
msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð±ÐµÐ·Ð´ÐµÐ¹ÑтвиÑ"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Единицы времени бездейÑтвиÑ"
msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "ÐаÑтройки"
msgid "h"
msgstr "ч"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"Утилита hd-idle позволÑет замедлÑÑ‚ÑŒ внешние диÑки поÑле определённого "
-"времени бездейÑтвиÑ."
-
# Minutes (not minimum)
msgid "min"
msgstr "мин"
diff --git a/applications/luci-app-hd-idle/po/sk/hd_idle.po b/applications/luci-app-hd-idle/po/sk/hd_idle.po
index 0ae82d8f93..aa82e966b4 100644
--- a/applications/luci-app-hd-idle/po/sk/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/sk/hd_idle.po
@@ -14,24 +14,24 @@ msgstr ""
msgid "Enable"
msgstr ""
-msgid "Idle-time"
+msgid "HDD Idle"
msgstr ""
-msgid "Idle-time unit"
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
msgstr ""
-msgid "Settings"
+msgid "Idle time"
msgstr ""
-msgid "h"
+msgid "Idle time unit"
msgstr ""
-msgid "hd-idle"
+msgid "Settings"
msgstr ""
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
+msgid "h"
msgstr ""
msgid "min"
diff --git a/applications/luci-app-hd-idle/po/sv/hd_idle.po b/applications/luci-app-hd-idle/po/sv/hd_idle.po
index 1d63095c4f..f2ce8f1019 100644
--- a/applications/luci-app-hd-idle/po/sv/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/sv/hd_idle.po
@@ -15,24 +15,24 @@ msgstr ""
msgid "Enable"
msgstr ""
-msgid "Idle-time"
+msgid "HDD Idle"
msgstr ""
-msgid "Idle-time unit"
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
msgstr ""
-msgid "Settings"
+msgid "Idle time"
msgstr ""
-msgid "h"
+msgid "Idle time unit"
msgstr ""
-msgid "hd-idle"
+msgid "Settings"
msgstr ""
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
+msgid "h"
msgstr ""
msgid "min"
diff --git a/applications/luci-app-hd-idle/po/templates/hd_idle.pot b/applications/luci-app-hd-idle/po/templates/hd_idle.pot
index 56079ed2b5..b8aedcd37a 100644
--- a/applications/luci-app-hd-idle/po/templates/hd_idle.pot
+++ b/applications/luci-app-hd-idle/po/templates/hd_idle.pot
@@ -7,24 +7,24 @@ msgstr ""
msgid "Enable"
msgstr ""
-msgid "Idle-time"
+msgid "HDD Idle"
msgstr ""
-msgid "Idle-time unit"
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
msgstr ""
-msgid "Settings"
+msgid "Idle time"
msgstr ""
-msgid "h"
+msgid "Idle time unit"
msgstr ""
-msgid "hd-idle"
+msgid "Settings"
msgstr ""
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
+msgid "h"
msgstr ""
msgid "min"
diff --git a/applications/luci-app-hd-idle/po/tr/hd_idle.po b/applications/luci-app-hd-idle/po/tr/hd_idle.po
index f9ace872aa..aed11b6c89 100644
--- a/applications/luci-app-hd-idle/po/tr/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/tr/hd_idle.po
@@ -21,10 +21,20 @@ msgstr "Disk"
msgid "Enable"
msgstr "Kullanıma Aç"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "Harddisk-Park"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"Harddisk-Park belirli bir zaman sonra diskleri beklemeye alan bir yardımcı "
+"programdır"
+
+msgid "Idle time"
msgstr "Bekleme Zamanı"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "bekleme zamanı birimi"
msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "Ayarlar"
msgid "h"
msgstr "s"
-msgid "hd-idle"
-msgstr "Harddisk-Park"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"Harddisk-Park belirli bir zaman sonra diskleri beklemeye alan bir yardımcı "
-"programdır"
-
# Minutes (not minimum)
msgid "min"
msgstr "d"
diff --git a/applications/luci-app-hd-idle/po/uk/hd_idle.po b/applications/luci-app-hd-idle/po/uk/hd_idle.po
index 129fd7b4bc..3d8e45c91c 100644
--- a/applications/luci-app-hd-idle/po/uk/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/uk/hd_idle.po
@@ -22,10 +22,19 @@ msgstr "ДиÑк"
msgid "Enable"
msgstr "Ðктивувати"
-msgid "Idle-time"
+#, fuzzy
+msgid "HDD Idle"
+msgstr "HD-проÑтій"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+
+msgid "Idle time"
msgstr "Ð§Ð°Ñ Ð¿Ñ€Ð¾Ñтою"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr ""
msgid "Settings"
@@ -35,15 +44,6 @@ msgstr "ÐалаштуваннÑ"
msgid "h"
msgstr ""
-#, fuzzy
-msgid "hd-idle"
-msgstr "HD-проÑтій"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-
# Minutes (not minimum)
msgid "min"
msgstr "хв"
diff --git a/applications/luci-app-hd-idle/po/vi/hd_idle.po b/applications/luci-app-hd-idle/po/vi/hd_idle.po
index 03ee2c1baa..a5d4ffeead 100644
--- a/applications/luci-app-hd-idle/po/vi/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/vi/hd_idle.po
@@ -20,12 +20,22 @@ msgstr "á»” Ä‘Ä©a"
msgid "Enable"
msgstr "Kích hoạt debug"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle là một chương trình tiện ích để quay các đĩa ngoài sau một khoảng "
+"thá»i gian idle."
+
#, fuzzy
-msgid "Idle-time"
+msgid "Idle time"
msgstr "Thá»i gian Idle"
#, fuzzy
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "ÄÆ¡n vị thá»i gian Idle"
msgid "Settings"
@@ -35,16 +45,6 @@ msgstr "Sắp đặt"
msgid "h"
msgstr ""
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle là một chương trình tiện ích để quay các đĩa ngoài sau một khoảng "
-"thá»i gian idle."
-
# Minutes (not minimum)
msgid "min"
msgstr ""
diff --git a/applications/luci-app-hd-idle/po/zh-cn/hd_idle.po b/applications/luci-app-hd-idle/po/zh-cn/hd_idle.po
index 8bc14dcc8b..d67abfd593 100644
--- a/applications/luci-app-hd-idle/po/zh-cn/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/zh-cn/hd_idle.po
@@ -19,10 +19,18 @@ msgstr "硬盘"
msgid "Enable"
msgstr "å¼€å¯"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "硬盘休眠"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr "硬盘休眠是一个让硬盘在空闲一段时间åŽä¼‘眠的工具"
+
+msgid "Idle time"
msgstr "空闲时间"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "空闲时间å•ä½"
msgid "Settings"
@@ -32,14 +40,6 @@ msgstr "设置"
msgid "h"
msgstr "å°æ—¶"
-msgid "hd-idle"
-msgstr "硬盘休眠"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr "硬盘休眠是一个让硬盘在空闲一段时间åŽä¼‘眠的工具"
-
# Minutes (not minimum)
msgid "min"
msgstr "分钟"
diff --git a/applications/luci-app-hd-idle/po/zh-tw/hd_idle.po b/applications/luci-app-hd-idle/po/zh-tw/hd_idle.po
index bd69785e37..dee14cb089 100644
--- a/applications/luci-app-hd-idle/po/zh-tw/hd_idle.po
+++ b/applications/luci-app-hd-idle/po/zh-tw/hd_idle.po
@@ -17,10 +17,18 @@ msgstr "ç£ç¢Ÿ"
msgid "Enable"
msgstr "啟用"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "硬碟休眠"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr "硬碟休眠是控制當硬碟閒置一段時間後進入休眠模å¼çš„工具"
+
+msgid "Idle time"
msgstr "休眠時間"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "休眠時間單ä½"
msgid "Settings"
@@ -29,14 +37,6 @@ msgstr "設定"
msgid "h"
msgstr "å°æ™‚"
-msgid "hd-idle"
-msgstr "硬碟休眠"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr "硬碟休眠是控制當硬碟閒置一段時間後進入休眠模å¼çš„工具"
-
msgid "min"
msgstr "分é˜"
diff --git a/applications/luci-app-lxc/Makefile b/applications/luci-app-lxc/Makefile
new file mode 100644
index 0000000000..9f313dfb11
--- /dev/null
+++ b/applications/luci-app-lxc/Makefile
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2017 Dan Luedtke <mail@danrl.com>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LXC management Web UI
+LUCI_DEPENDS:=+luci-mod-admin-full +lxc +lxc-create +liblxc +rpcd-mod-lxc +getopt +xz
+LUCI_PKGARCH:=all
+
+PKG_MAINTAINER:=Petar Koretic <petar.koretic@sartura.hr>
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/green.gif b/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/green.gif
new file mode 100644
index 0000000000..d09febf127
--- /dev/null
+++ b/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/green.gif
Binary files differ
diff --git a/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/purple.gif b/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/purple.gif
new file mode 100644
index 0000000000..f0d68cc8b2
--- /dev/null
+++ b/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/purple.gif
Binary files differ
diff --git a/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/red.gif b/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/red.gif
new file mode 100644
index 0000000000..c1b39bbedb
--- /dev/null
+++ b/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/red.gif
Binary files differ
diff --git a/applications/luci-app-lxc/luasrc/controller/lxc.lua b/applications/luci-app-lxc/luasrc/controller/lxc.lua
new file mode 100644
index 0000000000..ea7adbafbb
--- /dev/null
+++ b/applications/luci-app-lxc/luasrc/controller/lxc.lua
@@ -0,0 +1,167 @@
+--[[
+
+LuCI LXC module
+
+Copyright (C) 2014, Cisco Systems, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Petar Koretic <petar.koretic@sartura.hr>
+
+]]--
+
+module("luci.controller.lxc", package.seeall)
+
+require "ubus"
+local conn = ubus.connect()
+if not conn then
+ error("Failed to connect to ubus")
+end
+
+
+function fork_exec(command)
+ local pid = nixio.fork()
+ if pid > 0 then
+ return
+ elseif pid == 0 then
+ -- change to root dir
+ nixio.chdir("/")
+
+ -- patch stdin, out, err to /dev/null
+ local null = nixio.open("/dev/null", "w+")
+ if null then
+ nixio.dup(null, nixio.stderr)
+ nixio.dup(null, nixio.stdout)
+ nixio.dup(null, nixio.stdin)
+ if null:fileno() > 2 then
+ null:close()
+ end
+ end
+
+ -- replace with target command
+ nixio.exec("/bin/sh", "-c", command)
+ end
+end
+
+function index()
+ page = node("admin", "services", "lxc")
+ page.target = cbi("lxc")
+ page.title = _("LXC Containers")
+ page.order = 70
+
+ page = entry({"admin", "services", "lxc_create"}, call("lxc_create"), nil)
+ page.leaf = true
+
+ page = entry({"admin", "services", "lxc_action"}, call("lxc_action"), nil)
+ page.leaf = true
+
+ page = entry({"admin", "services", "lxc_get_downloadable"}, call("lxc_get_downloadable"), nil)
+ page.leaf = true
+
+ page = entry({"admin", "services", "lxc_configuration_get"}, call("lxc_configuration_get"), nil)
+ page.leaf = true
+
+ page = entry({"admin", "services", "lxc_configuration_set"}, call("lxc_configuration_set"), nil)
+ page.leaf = true
+
+end
+
+function lxc_get_downloadable()
+ luci.http.prepare_content("application/json")
+
+ local f = io.popen('uname -m', 'r')
+ local target = f:read('*a')
+ f:close()
+ target = target:gsub("^%s*(.-)%s*$", "%1")
+
+ local templates = {}
+
+ local f = io.popen('lxc-create -n just_want_to_list_available_lxc_templates -t download -- --list', 'r')
+
+ for line in f:lines() do
+ local dist,version = line:match("^(%S+)%s+(%S+)%s+" .. target .. "%s+default%s+%S+$")
+ if dist~=nil and version~=nil then templates[#templates + 1] = dist .. ":" .. version end
+ end
+
+ f:close()
+ luci.http.write_json(templates)
+end
+
+function lxc_create(lxc_name, lxc_template)
+ luci.http.prepare_content("text/plain")
+
+ local uci = require("uci").cursor()
+
+ local url = uci:get("lxc", "lxc", "url")
+
+ if not pcall(dofile, "/etc/openwrt_release") then
+ return luci.http.write("1")
+ end
+
+ local f = io.popen('uname -m', 'r')
+ local target = f:read('*a')
+ f:close()
+ target = target:gsub("^%s*(.-)%s*$", "%1")
+
+ local lxc_dist = lxc_template:gsub("(.*):(.*)", '%1')
+ local lxc_release = lxc_template:gsub("(.*):(.*)", '%2')
+
+ local data = conn:call("lxc", "create", { name = lxc_name, template = "download", args = { "--server", url, "--no-validate", "--dist", lxc_dist, "--release", lxc_release, "--arch", target } } )
+
+ luci.http.write(data)
+end
+
+function lxc_action(lxc_action, lxc_name)
+ luci.http.prepare_content("application/json")
+
+ local data, ec = conn:call("lxc", lxc_action, lxc_name and { name = lxc_name} or {} )
+
+ luci.http.write_json(ec and {} or data)
+end
+
+function lxc_get_config_path()
+ local f = io.open("/etc/lxc/lxc.conf", "r")
+ local content = f:read("*all")
+ f:close()
+ local ret = content:match('^%s*lxc.lxcpath%s*=%s*([^%s]*)')
+ if ret then
+ return ret .. "/"
+ else
+ return "/srv/lxc/"
+ end
+end
+
+function lxc_configuration_get(lxc_name)
+ luci.http.prepare_content("text/plain")
+
+ local f = io.open(lxc_get_config_path() .. lxc_name .. "/config", "r")
+ local content = f:read("*all")
+ f:close()
+
+ luci.http.write(content)
+end
+
+function lxc_configuration_set(lxc_name)
+ luci.http.prepare_content("text/plain")
+
+ local lxc_configuration = luci.http.formvalue("lxc_configuration")
+
+ if lxc_configuration == nil then
+ return luci.http.write("1")
+ end
+
+ local f, err = io.open(lxc_get_config_path() .. lxc_name .. "/config","w+")
+ if not f then
+ return luci.http.write("2")
+ end
+
+ f:write(lxc_configuration)
+ f:close()
+
+ luci.http.write("0")
+end
+
diff --git a/applications/luci-app-lxc/luasrc/model/cbi/lxc.lua b/applications/luci-app-lxc/luasrc/model/cbi/lxc.lua
new file mode 100644
index 0000000000..ac0fdff332
--- /dev/null
+++ b/applications/luci-app-lxc/luasrc/model/cbi/lxc.lua
@@ -0,0 +1,31 @@
+--[[
+
+LuCI LXC module
+
+Copyright (C) 2014, Cisco Systems, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Petar Koretic <petar.koretic@sartura.hr>
+
+]]--
+
+local fs = require "nixio.fs"
+
+m = Map("lxc", translate("LXC Containers"))
+
+if fs.access("/etc/config/lxc") then
+ m:section(SimpleSection).template = "lxc"
+
+ s = m:section(TypedSection, "lxc", translate("Options"))
+ s.anonymous = true
+ s.addremove = false
+
+ s:option(Value, "url", translate("Containers URL"))
+end
+
+return m
diff --git a/applications/luci-app-lxc/luasrc/view/lxc.htm b/applications/luci-app-lxc/luasrc/view/lxc.htm
new file mode 100644
index 0000000000..edfff8e063
--- /dev/null
+++ b/applications/luci-app-lxc/luasrc/view/lxc.htm
@@ -0,0 +1,458 @@
+<%#
+
+LuCI LXC module
+
+Copyright (C) 2014, Cisco Systems, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Petar Koretic <petar.koretic@sartura.hr>
+
+-%>
+
+<fieldset class="cbi-section">
+ <legend><%:Available Containers%></legend>
+ <div class="cbi-section-node">
+ <table id="t_lxc_list" class="cbi-section-table">
+ <tr class="cbi-section-table-titles">
+ <th class="cbi-section-table-cell"><%:Name%></th>
+ <th class="cbi-section-table-cell"><%:Status%></th>
+ <th class="cbi-section-table-cell"><%:Actions%></th>
+ </tr>
+ </table>
+ </div>
+</fieldset>
+
+<fieldset class="cbi-section">
+ <span id="lxc-list-output"></span>
+</fieldset>
+
+<hr/>
+<fieldset class="cbi-section">
+ <legend><%:Create New Container%></legend>
+ <div class="cbi-section-node">
+ <table id="t_lxc_create" class="cbi-section-table">
+ <tr class="cbi-section-table-titles">
+ <th class="cbi-section-table-cell"><%:Name%></th>
+ <th class="cbi-section-table-cell"><%:Template%></th>
+ <th class="cbi-section-table-cell"><%:Actions%></th>
+ </tr>
+ <tr id="tr_holder">
+ <td>
+ <input type="text" id="tx_name" placeholder="<%:Enter new name%>" value='' />
+ </td>
+ <td>
+ <select id="s_template" class="cbi-input-select cbi-button">
+ </select>
+ </td>
+ <td>
+ <input type="button" id="bt_create" value="<%:Create%>" onclick="lxc_create(tr_holder)" class="cbi-button cbi-button-add" />
+ <span id="lxc-add-loader" style="display:inline-block; width:16px; height:16px; margin:0 5px"></span>
+ </td>
+ </tr>
+ </table>
+ </div>
+</fieldset>
+
+<fieldset class="cbi-section">
+ <span id="lxc-add-output"></span>
+</fieldset>
+
+<hr/>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+
+ window.img = { "red" : "<%=resource%>/cbi/red.gif", "green" : "<%=resource%>/cbi/green.gif", "purple" : "<%=resource%>/cbi/purple.gif" }
+ window.states = { "STOPPED" : "red", "RUNNING" : "green", "FROZEN" : "purple"}
+
+ var t_lxc_list = document.getElementById('t_lxc_list');
+ var loader_html = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" width="16" height="16" style="vertical-align:middle" /> ';
+ var timeout_msg = 0
+ var output_list = document.getElementById("lxc-list-output")
+ var output_add = document.getElementById("lxc-add-output")
+ var loader_add = document.getElementById("lxc-add-loader")
+
+ function lxc_create(tr)
+ {
+ var lxc_name = tr.querySelector("#tx_name").value.trim()
+ var lxc_template = tr.querySelector("#s_template").value
+ var bt_create = tr.querySelector("#bt_create")
+
+ if (t_lxc_list.querySelector("[data-id='" + lxc_name + "']") != null)
+ return info_message(output_add, "Container with that name already exists!", 4000)
+
+ bt_create.disabled = true
+ output_add.innerHTML = ''
+
+ if (!lxc_name || !lxc_name.length)
+ {
+ bt_create.disabled = false
+ return info_message(output_add, "Name cannot be empty!", 4000)
+ }
+
+ loading(loader_add)
+
+ new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_create/' + '%h/%h'.format(lxc_name, lxc_template) , null,
+ function(x)
+ {
+ bt_create.disabled = false
+ loading(loader_add, 0)
+
+ if (!x)
+ info_message(output_add, "Container creation failed!")
+ })
+ }
+
+ function lxc_create_template(lxc_name, lxc_state)
+ {
+ var info_row = t_lxc_list.querySelector("#empty")
+ if (info_row)
+ t_lxc_list.deleteRow(1)
+
+ var actions = ''
+ actions += '<input type="button" onclick="action_handler(this)" data-action="start" value="<%:Start%>" class="cbi-button cbi-button-apply" />'
+ actions+= '<input type="button" onclick="action_handler(this)" data-action="stop" value="<%:Stop%>" class="cbi-button cbi-button-reset" />'
+ actions+= '<input type="button" onclick="action_handler(this)" data-action="destroy" value="<%:Delete%>" class="cbi-button cbi-button-remove" />'
+ actions+= ' <select class="cbi-input-select cbi-button" onchange="action_more_handler(this)">\
+ <option selected disabled>more</option>\
+ <option>configure</option>\
+ <option>freeze</option>\
+ <option>unfreeze</option>\
+ <option>reboot</option>\
+ </select>'
+ actions+= '<span data-loader style="display:inline-block; width:16px; height:16px; margin:0 5px"></span>'
+
+ var row = t_lxc_list.insertRow(-1)
+ var cell = row.insertCell(-1)
+ cell.innerHTML = '%q%h%q'.format("<strong>", lxc_name, "</strong>")
+ cell.width = "30%"
+ cell.setAttribute("data-id", lxc_name)
+
+ cell = row.insertCell(-1)
+ cell.width = "20%"
+ cell.innerHTML = "<img src='"+window.img[lxc_state]+"'/>"
+
+ cell = row.insertCell(-1)
+ cell.width = "50%"
+ cell.innerHTML = actions
+ }
+
+ function action_handler(self)
+ {
+ var action = self.getAttribute("data-action");
+
+ var bt_action = self
+ var lxc_name = self.parentNode.parentNode.children[0].getAttribute('data-id')
+ var status_img = self.parentNode.parentNode.querySelector('img')
+ var loader = self.parentNode.querySelector('[data-loader]')
+
+ bt_action.disabled = true
+
+ if (action == "stop")
+ {
+ loading(loader)
+
+ new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(action, lxc_name), null,
+ function(x, ec)
+ {
+ loading(loader, 0)
+ bt_action.disabled = false
+
+ if (!x || ec)
+ return info_message(output_list,"Action failed!")
+
+ set_status(status_img, "red")
+
+ });
+ }
+
+ else if (action == "start")
+ {
+ loading(loader)
+
+ new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(action, lxc_name), null,
+ function(x, data)
+ {
+ loading(loader, 0)
+ bt_action.disabled = false
+
+ //FIXME: uncomment after fixing 'lxc-start'
+ if (!x /*|| ec */)
+ return info_message(output_list,"Action failed!")
+
+ //FIXME: uncomment after fixing 'lxc-start'
+ //set_status(status_img, "green")
+ });
+ }
+
+ else if (action == "destroy")
+ {
+ if (!confirm("This will completely remove LXC container from the disk. Are you sure? (container will be stopped if running)"))
+ return
+
+ loading(loader)
+
+ new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(action, lxc_name), null,
+ function(x, ec)
+ {
+ loading(loader, 0)
+ bt_action.disabled = false
+
+ if (!x || ec)
+ return info_message(output_list,"Action failed!")
+
+ var row = self.parentNode.parentNode
+ row.parentNode.removeChild(row)
+
+ });
+ }
+ }
+
+ function lxc_configure_handler(self)
+ {
+ var td = self.parentNode
+ var textarea = td.querySelector('[data-id]')
+ var lxc_name = textarea.getAttribute('data-id')
+ var lxc_configuration = textarea.value
+
+ new XHR().post('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_configuration_set/' + lxc_name, "lxc_configuration=" + encodeURIComponent(lxc_configuration) ,
+ function(x)
+ {
+ if (!x || x.responseText != "0")
+ return info_message(output_list,"Action failed!")
+
+ info_message(output_list,"LXC configuration updated")
+ var row = td.parentNode
+ row.parentNode.removeChild(row)
+ })
+ }
+
+ function lxc_rename_template(lxc_name)
+ {
+ var h = '\
+ <input data-id="'+ lxc_name + '" type="text" placeholder="Enter new name" /> \
+ <input data-id="bt_confirm" onclick="lxc_rename_handler(this)" type="button" class="cbi-button" value="Confirm" />'
+
+ return h
+ }
+
+ function lxc_configure_template(lxc_name, lxc_configuration)
+ {
+ var h = '\
+ <textarea data-id="'+ lxc_name + '" rows="20" style="width:100%">'+ lxc_configuration +'</textarea> \
+ <input data-id="bt_confirm" onclick="lxc_configure_handler(this)" type="button" class="cbi-button" value="Confirm" />'
+
+ return h
+ }
+
+ function action_more_handler(self)
+ {
+ var lxc_name = self.parentNode.parentNode.querySelector('[data-id]').getAttribute('data-id')
+ var loader = self.parentNode.parentNode.querySelector('[data-loader]')
+
+ var option = self.options[self.selectedIndex].text
+
+ self.value = "more"
+
+ switch (option)
+ {
+ case "configure":
+ var tr = document.createElement('tr')
+ var row = self.parentNode.parentNode
+ var next_row = row.nextSibling
+ if (next_row && next_row.getAttribute('data-action') !== null)
+ row.parentNode.removeChild(next_row)
+
+ new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_configuration_get/' + lxc_name, null,
+ function(x)
+ {
+ tr.innerHTML="<td colspan='" + row.cells.length + "'>" + lxc_configure_template(lxc_name, x.responseText) + "</td>"
+ tr.setAttribute('data-action','')
+ row.parentNode.insertBefore(tr, row.nextSibling)
+ })
+
+ break
+
+ case "freeze":
+ var tr = self.parentNode.parentNode
+ var img = tr.querySelector('img')
+ if(img.getAttribute('src') != window.img["green"])
+ return info_message(output_list,"Container is not running!")
+
+ loading(loader)
+ new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(option, lxc_name), null,
+ function(x, ec)
+ {
+ loading(loader, 0)
+ if (!x || ec)
+ return info_message(output_list,"Action failed!")
+
+ set_status(img, "purple")
+ })
+
+ break
+
+ case "unfreeze":
+ var tr = self.parentNode.parentNode
+ var img = tr.querySelector('img')
+
+ if(img.getAttribute('src') != window.img["purple"])
+ return info_message(output_list,"Container is not frozen!")
+
+ loading(loader)
+ new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(option, lxc_name), null,
+ function(x, ec)
+ {
+ loading(loader, 0)
+ if (!x || ec)
+ return info_message(output_list,"Action failed!")
+
+ set_status(img, "green")
+ })
+
+ break
+
+ case "reboot":
+ var tr = self.parentNode.parentNode
+ var img = tr.querySelector('img')
+ if(img.getAttribute('src') != window.img["green"])
+ return info_message(output_list,"Container is not running!")
+
+ if (!confirm("Are you sure?"))
+ return
+
+ loading(loader)
+ new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/' + '%h/%h'.format(option, lxc_name), null,
+ function(x, ec)
+ {
+ loading(loader, 0)
+ if (!x || ec)
+ return info_message(output_list,"Action failed!")
+
+ info_message(output_list,"LXC rebooted")
+ })
+ break
+ }
+
+ }
+
+ function set_empty(t_lxc_list)
+ {
+ if (document.getElementById('empty') !== null)
+ return
+
+ var row_count = t_lxc_list.rows.length;
+ while(--row_count) t_lxc_list.deleteRow(row_count);
+
+ var row = t_lxc_list.insertRow(-1);
+ row.id = 'empty'
+ var cell = row.insertCell(0);
+ cell.colSpan = 4;
+ cell.innerHTML = '<em><br />There are no containers available yet.</em>';
+ }
+
+ function lxc_list_update()
+ {
+ XHR.poll(4, '<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/list', null,
+ function(x, data)
+ {
+ if (!x) return;
+
+ var lxc_count = Object.keys(data).length
+ if (!data || !lxc_count)
+ return set_empty(t_lxc_list)
+
+ if (document.getElementById('empty') !== null)
+ t_lxc_list.deleteRow(1);
+
+ var lxcs = t_lxc_list.querySelectorAll('td[data-id]')
+ var lxc_name_table = {}
+ for (var i = 0, len = lxcs.length; i < len; i++)
+ {
+ var lxc_name = lxcs[i].getAttribute('data-id')
+ if (!(lxc_name in data))
+ {
+ var row = t_lxc_list.querySelector("[data-id='" + lxc_name + "']").parentNode
+ row.parentNode.removeChild(row)
+ continue
+ }
+
+ lxc_name_table[lxc_name] = lxcs[i].parentNode.querySelector('img')
+ }
+
+ for(var key in data)
+ {
+ var lxc_name = key
+ var state = window.states[data[key]]
+
+ if (!(lxc_name in lxc_name_table))
+ lxc_create_template(lxc_name, state)
+
+ else if (state != get_status(lxc_name_table[lxc_name]))
+ set_status(lxc_name_table[lxc_name], state)
+ }
+
+ })
+ }
+
+ function loading(elem, state)
+ {
+ state = (typeof state === 'undefined') ? 1 : state
+
+ if (state === 1)
+ elem.innerHTML = loader_html
+ else
+ setTimeout(function() { elem.innerHTML = ''}, 1000)
+ }
+
+ function set_status(elem, state)
+ {
+ state = (typeof state === 'undefined') ? 1 : state
+
+ setTimeout(function() { elem.setAttribute('src', window.img[state])}, 300)
+ }
+
+ function get_status(elem)
+ {
+ var src = elem.getAttribute('src')
+
+ for (var i in img)
+ {
+ if (img[i] == src)
+ return i
+ }
+ }
+
+ function info_message(output, msg, timeout)
+ {
+ timeout = timeout || 3000
+ output.innerHTML = msg
+ clearTimeout(timeout_msg)
+ timeout_msg = setTimeout(function(){ output.innerHTML=""}, timeout);
+ }
+
+ lxc_list_update()
+
+ new XHR().get('<%=luci.dispatcher.build_url("admin", "services")%>/lxc_get_downloadable', null,
+ function(x, data)
+ {
+ if (!x) return;
+
+ var lxc_count = Object.keys(data).length
+ if (!data || !lxc_count) return;
+ var select = document.getElementById("s_template");
+ for(var key in data)
+ {
+ var option = document.createElement('option');
+ option.value = data[key];
+ option.text = data[key].replace(/[_:]/g, ' ');
+ select.add(option, -1);
+ }
+ })
+
+//]]></script>
diff --git a/applications/luci-app-lxc/root/etc/config/lxc b/applications/luci-app-lxc/root/etc/config/lxc
new file mode 100644
index 0000000000..5572c735fa
--- /dev/null
+++ b/applications/luci-app-lxc/root/etc/config/lxc
@@ -0,0 +1,6 @@
+#
+# lxc uci configuration
+#
+
+config lxc 'lxc'
+ option url 'virtualwrt.org/containers/'
diff --git a/applications/luci-app-meshwizard/luasrc/model/cbi/freifunk/meshwizard.lua b/applications/luci-app-meshwizard/luasrc/model/cbi/freifunk/meshwizard.lua
index 68f7a5a257..62ce25effb 100644
--- a/applications/luci-app-meshwizard/luasrc/model/cbi/freifunk/meshwizard.lua
+++ b/applications/luci-app-meshwizard/luasrc/model/cbi/freifunk/meshwizard.lua
@@ -103,10 +103,7 @@ uci:foreach("wireless", "wifi-device", function(section)
-- Channel selection
- if hwtype == "atheros" then
- local cc = util.trim(sys.exec("grep -i '" .. syscc .. "' /lib/wifi/cc_translate.txt |cut -d ' ' -f 2")) or 0
- sys.exec('"echo " .. cc .. " > /proc/sys/dev/" .. device .. "/countrycode"')
- elseif hwtype == "mac80211" then
+ if hwtype == "mac80211" then
sys.exec("iw reg set " .. syscc)
elseif hwtype == "broadcom" then
sys.exec ("wlc country " .. syscc)
diff --git a/applications/luci-app-meshwizard/po/pt-br/meshwizard.po b/applications/luci-app-meshwizard/po/pt-br/meshwizard.po
index a2238e52e8..9421e02531 100644
--- a/applications/luci-app-meshwizard/po/pt-br/meshwizard.po
+++ b/applications/luci-app-meshwizard/po/pt-br/meshwizard.po
@@ -1,17 +1,17 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-10-11 00:23+0200\n"
-"PO-Revision-Date: 2014-03-17 10:01+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-02-20 18:00-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"Language-Team: \n"
msgid "Activate or deactivate IPv6 config globally."
msgstr "Habilita e desabilita a configuração IPv6 globalmente."
@@ -70,7 +70,6 @@ msgstr "Endereço IPv6 da rede em malha"
msgid "Mesh Wizard"
msgstr "Assistente de Configuração da Rede em Malha"
-#, fuzzy
msgid ""
"Note: this will set up this interface for mesh operation, i.e. add it to "
"zone 'freifunk' and enable olsr."
diff --git a/applications/luci-app-mjpg-streamer/po/pt-br/mjpg-streamer.po b/applications/luci-app-mjpg-streamer/po/pt-br/mjpg-streamer.po
new file mode 100644
index 0000000000..28bfa186b0
--- /dev/null
+++ b/applications/luci-app-mjpg-streamer/po/pt-br/mjpg-streamer.po
@@ -0,0 +1,172 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: pt_BR\n"
+
+msgid "Allow ringbuffer to exceed limit by this amount"
+msgstr "Permitir que o buffer em anel exceda o limite por essa quantidade"
+
+msgid "Ask for username and password on connect"
+msgstr "Pergunte por um usuário e senha na conexão"
+
+msgid "Authentication required"
+msgstr "Requer autenticação"
+
+msgid "Auto"
+msgstr "Automático"
+
+msgid "Automatic disabling of MJPEG mode"
+msgstr "Desativação automática do modo MJPEG"
+
+msgid "Blink"
+msgstr "Pisca"
+
+msgid "Check to save the stream to an mjpeg file"
+msgstr "Marque para salvar o fluxo em um arquivo MJPEG"
+
+msgid "Command to run"
+msgstr "Comando para executar:"
+
+msgid "Device"
+msgstr "Dispositivo"
+
+msgid "Do not initalize dynctrls of Linux-UVC driver"
+msgstr "Não inicie o dynctrls do driver do Linux-UVC"
+
+msgid "Don't initalize dynctrls"
+msgstr "Não inicia o dynctrls"
+
+msgid "Drop frames smaller then this limit"
+msgstr "Descarte quadros menores que este limite"
+
+msgid "Enable MJPG-streamer"
+msgstr "Ativa o MJPG-streamer"
+
+msgid "Enable YUYV format"
+msgstr "Ativar Formato YUYV"
+
+msgid "Enabled"
+msgstr "Habilitado"
+
+msgid "Exceed"
+msgstr "Ultrapassado"
+
+msgid ""
+"Execute command after saving picture. Mjpg-streamer parse the filename as "
+"first parameter to your script."
+msgstr ""
+"Execute o comando depois de salvar a imagem. Mjpg-streamer passa o nome do "
+"arquivo como primeiro parâmetro para o comando."
+
+msgid "File input"
+msgstr "Entrada do arquivo"
+
+msgid "File output"
+msgstr "Saída do arquivo"
+
+msgid "Folder"
+msgstr "Pasta"
+
+msgid "Folder that contains webpages"
+msgstr "Pasta que contém páginas web"
+
+msgid "Frames per second"
+msgstr "Quadros por segundos"
+
+msgid "General"
+msgstr "Geral"
+
+msgid "HTTP output"
+msgstr "Saída HTTP"
+
+msgid "Input plugin"
+msgstr "Plugins de entrada"
+
+msgid "Interval between saving pictures"
+msgstr "Intervalo entre o salvamento das imagens"
+
+msgid "JPEG compression quality"
+msgstr "Qualidade da compressão JPEG"
+
+msgid "Led control"
+msgstr "Controle de LED"
+
+msgid "MJPG-streamer"
+msgstr "MJPG-streamer"
+
+msgid "Max. number of pictures to hold"
+msgstr "Número máximo de imagens a serem mantidas"
+
+msgid "Mjpeg output"
+msgstr "Saída Mjpeg"
+
+msgid "Off"
+msgstr "Desligado"
+
+msgid "On"
+msgstr "Ligado"
+
+msgid "Output plugin"
+msgstr "Plugin de saída"
+
+msgid "Password"
+msgstr "Senha"
+
+msgid "Plugin settings"
+msgstr "Configurações do Plugin"
+
+msgid "Port"
+msgstr "Porta"
+
+msgid "Resolution"
+msgstr "Resolução"
+
+msgid "Ring buffer size"
+msgstr "Tamanho do buffer em anel"
+
+msgid "Set folder to save pictures"
+msgstr "Definir pasta para salvas as imagens"
+
+msgid "Set the inteval in millisecond"
+msgstr "Defina o intervalo em milisegundos"
+
+msgid ""
+"Set the minimum size if the webcam produces small-sized garbage frames. May "
+"happen under low light conditions"
+msgstr ""
+"Defina o tamanho mínimo se a webcam produz quadros lixo de tamanho pequeno. "
+"Pode acontecer sob condições de pouca luz"
+
+msgid ""
+"Set the quality in percent. This setting activates YUYV format, disables "
+"MJPEG"
+msgstr ""
+"Defina a qualidade em porcentagem. Esta definição ativa o formato YUYV, "
+"desativa MJPEG"
+
+msgid "TCP port for this HTTP server"
+msgstr "Porta TCP para este servidor HTTP"
+
+msgid "UVC input"
+msgstr "Dispositivo UVC de entrada"
+
+msgid "Username"
+msgstr "Usuário"
+
+msgid "WWW folder"
+msgstr "Pasta WWW"
+
+msgid ""
+"mjpg streamer is a streaming application for Linux-UVC compatible webcams"
+msgstr ""
+"Mjpg streamer é uma aplicação de streaming para webcams compatíveis com o "
+"Linux-UVC"
diff --git a/applications/luci-app-mwan3/Makefile b/applications/luci-app-mwan3/Makefile
new file mode 100644
index 0000000000..d65cd3af16
--- /dev/null
+++ b/applications/luci-app-mwan3/Makefile
@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2017 Dan Luedtke <mail@danrl.com>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LuCI support for the MWAN3 multiwan hotplug script
+LUCI_DEPENDS:=+mwan3 +luci-mod-admin-full +luci-app-firewall +luci-lib-nixio
+LUCI_PKGARCH:=all
+PKG_LICENSE:=GPLv2
+
+PKG_MAINTAINER:=Aedan Renner <chipdankly@gmail.com> \
+ Florian Eckert <fe@dev.tdt.de>
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-mwan3/luasrc/controller/mwan3.lua b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
new file mode 100644
index 0000000000..d3fd150692
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
@@ -0,0 +1,331 @@
+module("luci.controller.mwan3", package.seeall)
+
+sys = require "luci.sys"
+ut = require "luci.util"
+
+ip = "/usr/bin/ip -4 "
+
+function index()
+ if not nixio.fs.access("/etc/config/mwan3") then
+ return
+ end
+
+ entry({"admin", "network", "mwan"},
+ alias("admin", "network", "mwan", "overview"),
+ _("Load Balancing"), 600)
+
+ entry({"admin", "network", "mwan", "overview"},
+ alias("admin", "network", "mwan", "overview", "overview_interface"),
+ _("Overview"), 10)
+ entry({"admin", "network", "mwan", "overview", "overview_interface"},
+ template("mwan/overview_interface"))
+ entry({"admin", "network", "mwan", "overview", "interface_status"},
+ call("interfaceStatus"))
+ entry({"admin", "network", "mwan", "overview", "overview_detailed"},
+ template("mwan/overview_detailed"))
+ entry({"admin", "network", "mwan", "overview", "detailed_status"},
+ call("detailedStatus"))
+
+ entry({"admin", "network", "mwan", "configuration"},
+ alias("admin", "network", "mwan", "configuration", "interface"),
+ _("Configuration"), 20)
+ entry({"admin", "network", "mwan", "configuration", "interface"},
+ arcombine(cbi("mwan/interface"), cbi("mwan/interfaceconfig")),
+ _("Interfaces"), 10).leaf = true
+ entry({"admin", "network", "mwan", "configuration", "member"},
+ arcombine(cbi("mwan/member"), cbi("mwan/memberconfig")),
+ _("Members"), 20).leaf = true
+ entry({"admin", "network", "mwan", "configuration", "policy"},
+ arcombine(cbi("mwan/policy"), cbi("mwan/policyconfig")),
+ _("Policies"), 30).leaf = true
+ entry({"admin", "network", "mwan", "configuration", "rule"},
+ arcombine(cbi("mwan/rule"), cbi("mwan/ruleconfig")),
+ _("Rules"), 40).leaf = true
+
+ entry({"admin", "network", "mwan", "advanced"},
+ alias("admin", "network", "mwan", "advanced", "hotplugscript"),
+ _("Advanced"), 100)
+ entry({"admin", "network", "mwan", "advanced", "hotplugscript"},
+ form("mwan/advanced_hotplugscript"))
+ entry({"admin", "network", "mwan", "advanced", "mwanconfig"},
+ form("mwan/advanced_mwanconfig"))
+ entry({"admin", "network", "mwan", "advanced", "networkconfig"},
+ form("mwan/advanced_networkconfig"))
+ entry({"admin", "network", "mwan", "advanced", "wirelessconfig"},
+ form("mwan/advanced_wirelessconfig"))
+ entry({"admin", "network", "mwan", "advanced", "diagnostics"},
+ template("mwan/advanced_diagnostics"))
+ entry({"admin", "network", "mwan", "advanced", "diagnostics_display"},
+ call("diagnosticsData"), nil).leaf = true
+ entry({"admin", "network", "mwan", "advanced", "troubleshooting"},
+ template("mwan/advanced_troubleshooting"))
+ entry({"admin", "network", "mwan", "advanced", "troubleshooting_display"},
+ call("troubleshootingData"))
+end
+
+function getInterfaceStatus(ruleNumber, interfaceName)
+ if ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interfaceName .. ".enabled")) == "1" then
+ if ut.trim(sys.exec(ip .. "route list table " .. ruleNumber)) ~= "" then
+ if ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interfaceName .. ".track_ip")) ~= "" then
+ return "online"
+ else
+ return "notMonitored"
+ end
+ else
+ return "offline"
+ end
+ else
+ return "notEnabled"
+ end
+end
+
+function getInterfaceName()
+ local ruleNumber, status = 0, ""
+ uci.cursor():foreach("mwan3", "interface",
+ function (section)
+ ruleNumber = ruleNumber+1
+ status = status .. section[".name"] .. "[" .. getInterfaceStatus(ruleNumber, section[".name"]) .. "]"
+ end
+ )
+ return status
+end
+
+function interfaceStatus()
+ local ntm = require "luci.model.network".init()
+
+ local mArray = {}
+
+ -- overview status
+ local statusString = getInterfaceName()
+ if statusString ~= "" then
+ mArray.wans = {}
+ wansid = {}
+
+ for wanName, interfaceState in string.gfind(statusString, "([^%[]+)%[([^%]]+)%]") do
+ local wanInterfaceName = ut.trim(sys.exec("uci -q -p /var/state get network." .. wanName .. ".ifname"))
+ if wanInterfaceName == "" then
+ wanInterfaceName = "X"
+ end
+ local wanDeviceLink = ntm:get_interface(wanInterfaceName)
+ wanDeviceLink = wanDeviceLink and wanDeviceLink:get_network()
+ wanDeviceLink = wanDeviceLink and wanDeviceLink:adminlink() or "#"
+ wansid[wanName] = #mArray.wans + 1
+ mArray.wans[wansid[wanName]] = { name = wanName, link = wanDeviceLink, ifname = wanInterfaceName, status = interfaceState }
+ end
+ end
+
+ -- overview status log
+ local mwanLog = ut.trim(sys.exec("logread | grep mwan3 | tail -n 50 | sed 'x;1!H;$!d;x' 2>/dev/null"))
+ if mwanLog ~= "" then
+ mArray.mwanlog = { mwanLog }
+ end
+
+ luci.http.prepare_content("application/json")
+ luci.http.write_json(mArray)
+end
+
+function detailedStatus()
+ local mArray = {}
+
+ -- detailed mwan status
+ local detailStatusInfo = ut.trim(sys.exec("/usr/sbin/mwan3 status"))
+ if detailStatusInfo ~= "" then
+ mArray.mwandetail = { detailStatusInfo }
+ end
+
+ luci.http.prepare_content("application/json")
+ luci.http.write_json(mArray)
+end
+
+function diagnosticsData(interface, tool, task)
+ function getInterfaceNumber()
+ local number = 0
+ uci.cursor():foreach("mwan3", "interface",
+ function (section)
+ number = number+1
+ if section[".name"] == interface then
+ interfaceNumber = number
+ end
+ end
+ )
+ end
+
+ local mArray = {}
+
+ local results = ""
+ if tool == "service" then
+ os.execute("/usr/sbin/mwan3 " .. task)
+ if task == "restart" then
+ results = "MWAN3 restarted"
+ elseif task == "stop" then
+ results = "MWAN3 stopped"
+ else
+ results = "MWAN3 started"
+ end
+ else
+ local interfaceDevice = ut.trim(sys.exec("uci -q -p /var/state get network." .. interface .. ".ifname"))
+ if interfaceDevice ~= "" then
+ if tool == "ping" then
+ local gateway = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $2}'"))
+ if gateway ~= "" then
+ if task == "gateway" then
+ local pingCommand = "ping -c 3 -W 2 -I " .. interfaceDevice .. " " .. gateway
+ results = pingCommand .. "\n\n" .. sys.exec(pingCommand)
+ else
+ local tracked = ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interface .. ".track_ip"))
+ if tracked ~= "" then
+ for z in tracked:gmatch("[^ ]+") do
+ local pingCommand = "ping -c 3 -W 2 -I " .. interfaceDevice .. " " .. z
+ results = results .. pingCommand .. "\n\n" .. sys.exec(pingCommand) .. "\n\n"
+ end
+ else
+ results = "No tracking IP addresses configured on " .. interface
+ end
+ end
+ else
+ results = "No default gateway for " .. interface .. " found. Default route does not exist or is configured incorrectly"
+ end
+ elseif tool == "rulechk" then
+ getInterfaceNumber()
+ local rule1 = sys.exec(ip .. "rule | grep $(echo $((" .. interfaceNumber .. " + 1000)))")
+ local rule2 = sys.exec(ip .. "rule | grep $(echo $((" .. interfaceNumber .. " + 2000)))")
+ if rule1 ~= "" and rule2 ~= "" then
+ results = "All required interface IP rules found:\n\n" .. rule1 .. rule2
+ elseif rule1 ~= "" or rule2 ~= "" then
+ results = "Missing 1 of the 2 required interface IP rules\n\n\nRules found:\n\n" .. rule1 .. rule2
+ else
+ results = "Missing both of the required interface IP rules"
+ end
+ elseif tool == "routechk" then
+ getInterfaceNumber()
+ local routeTable = sys.exec(ip .. "route list table " .. interfaceNumber)
+ if routeTable ~= "" then
+ results = "Interface routing table " .. interfaceNumber .. " was found:\n\n" .. routeTable
+ else
+ results = "Missing required interface routing table " .. interfaceNumber
+ end
+ elseif tool == "hotplug" then
+ if task == "ifup" then
+ os.execute("/usr/sbin/mwan3 ifup " .. interface)
+ results = "Hotplug ifup sent to interface " .. interface .. "..."
+ else
+ os.execute("/usr/sbin/mwan3 ifdown " .. interface)
+ results = "Hotplug ifdown sent to interface " .. interface .. "..."
+ end
+ end
+ else
+ results = "Unable to perform diagnostic tests on " .. interface .. ". There is no physical or virtual device associated with this interface"
+ end
+ end
+ if results ~= "" then
+ results = ut.trim(results)
+ mArray.diagnostics = { results }
+ end
+
+ luci.http.prepare_content("application/json")
+ luci.http.write_json(mArray)
+end
+
+function troubleshootingData()
+ local ver = require "luci.version"
+
+ local mArray = {}
+
+ -- software versions
+ local wrtRelease = ut.trim(ver.distversion)
+ if wrtRelease ~= "" then
+ wrtRelease = "OpenWrt - " .. wrtRelease
+ else
+ wrtRelease = "OpenWrt - unknown"
+ end
+ local luciRelease = ut.trim(ver.luciversion)
+ if luciRelease ~= "" then
+ luciRelease = "\nLuCI - " .. luciRelease
+ else
+ luciRelease = "\nLuCI - unknown"
+ end
+ local mwanVersion = ut.trim(sys.exec("opkg info mwan3 | grep Version | awk '{print $2}'"))
+ if mwanVersion ~= "" then
+ mwanVersion = "\n\nmwan3 - " .. mwanVersion
+ else
+ mwanVersion = "\n\nmwan3 - unknown"
+ end
+ local mwanLuciVersion = ut.trim(sys.exec("opkg info luci-app-mwan3 | grep Version | awk '{print $2}'"))
+ if mwanLuciVersion ~= "" then
+ mwanLuciVersion = "\nmwan3-luci - " .. mwanLuciVersion
+ else
+ mwanLuciVersion = "\nmwan3-luci - unknown"
+ end
+ mArray.versions = { wrtRelease .. luciRelease .. mwanVersion .. mwanLuciVersion }
+
+ -- mwan config
+ local mwanConfig = ut.trim(sys.exec("cat /etc/config/mwan3"))
+ if mwanConfig == "" then
+ mwanConfig = "No data found"
+ end
+ mArray.mwanconfig = { mwanConfig }
+
+ -- network config
+ local networkConfig = ut.trim(sys.exec("cat /etc/config/network | sed -e 's/.*username.*/ USERNAME HIDDEN/' -e 's/.*password.*/ PASSWORD HIDDEN/'"))
+ if networkConfig == "" then
+ networkConfig = "No data found"
+ end
+ mArray.netconfig = { networkConfig }
+
+ -- wireless config
+ local wirelessConfig = ut.trim(sys.exec("cat /etc/config/wireless | sed -e 's/.*username.*/ USERNAME HIDDEN/' -e 's/.*password.*/ PASSWORD HIDDEN/' -e 's/.*key.*/ KEY HIDDEN/'"))
+ if wirelessConfig == "" then
+ wirelessConfig = "No data found"
+ end
+ mArray.wificonfig = { wirelessConfig }
+
+ -- ifconfig
+ local ifconfig = ut.trim(sys.exec("ifconfig"))
+ if ifconfig == "" then
+ ifconfig = "No data found"
+ end
+ mArray.ifconfig = { ifconfig }
+
+ -- route -n
+ local routeShow = ut.trim(sys.exec("route -n"))
+ if routeShow == "" then
+ routeShow = "No data found"
+ end
+ mArray.routeshow = { routeShow }
+
+ -- ip rule show
+ local ipRuleShow = ut.trim(sys.exec(ip .. "rule show"))
+ if ipRuleShow == "" then
+ ipRuleShow = "No data found"
+ end
+ mArray.iprule = { ipRuleShow }
+
+ -- ip route list table 1-250
+ local routeList, routeString = ut.trim(sys.exec(ip .. "rule | sed 's/://g' 2>/dev/null | awk '$1>=2001 && $1<=2250' | awk '{print $NF}'")), ""
+ if routeList ~= "" then
+ for line in routeList:gmatch("[^\r\n]+") do
+ routeString = routeString .. line .. "\n" .. sys.exec(ip .. "route list table " .. line)
+ end
+ routeString = ut.trim(routeString)
+ else
+ routeString = "No data found"
+ end
+ mArray.routelist = { routeString }
+
+ -- default firewall output policy
+ local firewallOut = ut.trim(sys.exec("uci -q -p /var/state get firewall.@defaults[0].output"))
+ if firewallOut == "" then
+ firewallOut = "No data found"
+ end
+ mArray.firewallout = { firewallOut }
+
+ -- iptables
+ local iptables = ut.trim(sys.exec("iptables -L -t mangle -v -n"))
+ if iptables == "" then
+ iptables = "No data found"
+ end
+ mArray.iptables = { iptables }
+
+ luci.http.prepare_content("application/json")
+ luci.http.write_json(mArray)
+end
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua
new file mode 100644
index 0000000000..0e7b8b11d0
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua
@@ -0,0 +1,55 @@
+-- ------ hotplug script configuration ------ --
+
+fs = require "nixio.fs"
+sys = require "luci.sys"
+ut = require "luci.util"
+
+script = "/etc/hotplug.d/iface/16-mwancustom"
+scriptBackup = "/etc/hotplug.d/iface/16-mwancustombak"
+
+if luci.http.formvalue("cbid.luci.1._restorebak") then -- restore button has been clicked
+ luci.http.redirect(luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript") .. "?restore=yes")
+elseif luci.http.formvalue("restore") == "yes" then -- restore script from backup
+ os.execute("cp -f " .. scriptBackup .. " " .. script)
+end
+
+
+m5 = SimpleForm("luci", nil)
+ m5:append(Template("mwan/advanced_hotplugscript")) -- highlight current tab
+
+f = m5:section(SimpleSection, nil,
+ translate("This section allows you to modify the contents of /etc/hotplug.d/iface/16-mwancustom<br />" ..
+ "This is useful for running system commands and/or scripts based on interface ifup or ifdown hotplug events<br /><br />" ..
+ "Notes:<br />" ..
+ "The first line of the script must be &#34;#!/bin/sh&#34; without quotes<br />" ..
+ "Lines beginning with # are comments and are not executed<br /><br />" ..
+ "Available variables:<br />" ..
+ "$ACTION is the hotplug event (ifup, ifdown)<br />" ..
+ "$INTERFACE is the interface name (wan1, wan2, etc.)<br />" ..
+ "$DEVICE is the device name attached to the interface (eth0.1, eth1, etc.)"))
+
+
+restore = f:option(Button, "_restorebak", translate("Restore default hotplug script"))
+ restore.inputtitle = translate("Restore...")
+ restore.inputstyle = "apply"
+
+t = f:option(TextValue, "lines")
+ t.rmempty = true
+ t.rows = 20
+
+ function t.cfgvalue()
+ local hps = fs.readfile(script)
+ if not hps or hps == "" then -- if script does not exist or is blank restore from backup
+ sys.call("cp -f " .. scriptBackup .. " " .. script)
+ return fs.readfile(script)
+ else
+ return hps
+ end
+ end
+
+ function t.write(self, section, data) -- format and write new data to script
+ return fs.writefile(script, ut.trim(data:gsub("\r\n", "\n")) .. "\n")
+ end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua
new file mode 100644
index 0000000000..e0a99e8366
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua
@@ -0,0 +1,32 @@
+-- ------ mwan configuration ------ --
+
+ut = require "luci.util"
+
+mwanConfig = "/etc/config/mwan3"
+
+
+m5 = SimpleForm("luci", nil)
+ m5:append(Template("mwan/advanced_mwanconfig")) -- highlight current tab
+
+
+f = m5:section(SimpleSection, nil,
+ translate("This section allows you to modify the contents of /etc/config/mwan3"))
+
+t = f:option(TextValue, "lines")
+ t.rmempty = true
+ t.rows = 20
+
+ function t.cfgvalue()
+ return nixio.fs.readfile(mwanConfig) or ""
+ end
+
+ function t.write(self, section, data) -- format and write new data to script
+ return nixio.fs.writefile(mwanConfig, "\n" .. ut.trim(data:gsub("\r\n", "\n")) .. "\n")
+ end
+
+ function f.handle(self, state, data)
+ return true
+ end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua
new file mode 100644
index 0000000000..b93d89751b
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua
@@ -0,0 +1,32 @@
+-- ------ network configuration ------ --
+
+ut = require "luci.util"
+
+networkConfig = "/etc/config/network"
+
+
+m5 = SimpleForm("networkconf", nil)
+ m5:append(Template("mwan/advanced_networkconfig")) -- highlight current tab
+
+
+f = m5:section(SimpleSection, nil,
+ translate("This section allows you to modify the contents of /etc/config/network"))
+
+t = f:option(TextValue, "lines")
+ t.rmempty = true
+ t.rows = 20
+
+ function t.cfgvalue()
+ return nixio.fs.readfile(networkConfig) or ""
+ end
+
+ function t.write(self, section, data) -- format and write new data to script
+ return nixio.fs.writefile(networkConfig, "\n" .. ut.trim(data:gsub("\r\n", "\n")) .. "\n")
+ end
+
+ function f.handle(self, state, data)
+ return true
+ end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua
new file mode 100644
index 0000000000..95e9f7c7e5
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua
@@ -0,0 +1,32 @@
+-- ------ wireless configuration ------ --
+
+ut = require "luci.util"
+
+wirelessConfig = "/etc/config/wireless"
+
+
+m5 = SimpleForm("wirelessconf", nil)
+ m5:append(Template("mwan/advanced_wirelessconfig")) -- highlight current tab
+
+
+f = m5:section(SimpleSection, nil,
+ translate("This section allows you to modify the contents of /etc/config/wireless"))
+
+t = f:option(TextValue, "lines")
+ t.rmempty = true
+ t.rows = 20
+
+ function t.cfgvalue()
+ return nixio.fs.readfile(wirelessConfig) or ""
+ end
+
+ function t.write(self, section, data) -- format and write new data to script
+ return nixio.fs.writefile(wirelessConfig, "\n" .. ut.trim(data:gsub("\r\n", "\n")) .. "\n")
+ end
+
+ function f.handle(self, state, data)
+ return true
+ end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua
new file mode 100644
index 0000000000..7e863a371f
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua
@@ -0,0 +1,266 @@
+-- ------ extra functions ------ --
+
+function interfaceCheck() -- find issues with too many interfaces, reliability and metric
+ uci.cursor():foreach("mwan3", "interface",
+ function (section)
+ local interfaceName = section[".name"]
+ interfaceNumber = interfaceNumber+1 -- count number of mwan interfaces configured
+ -- create list of metrics for none and duplicate checking
+ local metricValue = ut.trim(sys.exec("uci -p /var/state get network." .. interfaceName .. ".metric"))
+ if metricValue == "" then
+ errorFound = 1
+ errorNoMetricList = errorNoMetricList .. interfaceName .. " "
+ else
+ metricList = metricList .. interfaceName .. " " .. metricValue .. "\n"
+ end
+ -- check if any interfaces have a higher reliability requirement than tracking IPs configured
+ local trackingNumber = tonumber(ut.trim(sys.exec("echo $(uci -p /var/state get mwan3." .. interfaceName .. ".track_ip) | wc -w")))
+ if trackingNumber > 0 then
+ local reliabilityNumber = tonumber(ut.trim(sys.exec("uci -p /var/state get mwan3." .. interfaceName .. ".reliability")))
+ if reliabilityNumber and reliabilityNumber > trackingNumber then
+ errorFound = 1
+ errorReliabilityList = errorReliabilityList .. interfaceName .. " "
+ end
+ end
+ -- check if any interfaces are not properly configured in /etc/config/network or have no default route in main routing table
+ if ut.trim(sys.exec("uci -p /var/state get network." .. interfaceName)) == "interface" then
+ local interfaceDevice = ut.trim(sys.exec("uci -p /var/state get network." .. interfaceName .. ".ifname"))
+ if interfaceDevice == "uci: Entry not found" or interfaceDevice == "" then
+ errorFound = 1
+ errorNetConfigList = errorNetConfigList .. interfaceName .. " "
+ errorRouteList = errorRouteList .. interfaceName .. " "
+ else
+ local routeCheck = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $1}'"))
+ if routeCheck == "" then
+ errorFound = 1
+ errorRouteList = errorRouteList .. interfaceName .. " "
+ end
+ end
+ else
+ errorFound = 1
+ errorNetConfigList = errorNetConfigList .. interfaceName .. " "
+ errorRouteList = errorRouteList .. interfaceName .. " "
+ end
+ end
+ )
+ -- check if any interfaces have duplicate metrics
+ local metricDuplicateNumbers = sys.exec("echo '" .. metricList .. "' | awk '{print $2}' | uniq -d")
+ if metricDuplicateNumbers ~= "" then
+ errorFound = 1
+ local metricDuplicates = ""
+ for line in metricDuplicateNumbers:gmatch("[^\r\n]+") do
+ metricDuplicates = sys.exec("echo '" .. metricList .. "' | grep '" .. line .. "' | awk '{print $1}'")
+ errorDuplicateMetricList = errorDuplicateMetricList .. metricDuplicates
+ end
+ errorDuplicateMetricList = sys.exec("echo '" .. errorDuplicateMetricList .. "' | tr '\n' ' '")
+ end
+end
+
+function interfaceWarnings() -- display status and warning messages at the top of the page
+ local warnings = ""
+ if interfaceNumber <= 250 then
+ warnings = "<strong>" .. translatef("There are currently %d of 250 supported interfaces configured", interfaceNumber) .. "</strong>"
+ else
+ warnings = "<font color=\"ff0000\"><strong>" .. translatef("WARNING: %d interfaces are configured exceeding the maximum of 250!", interfaceNumber) .. "</strong></font>"
+ end
+ if errorReliabilityList ~= " " then
+ warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces have a higher reliability requirement than there are tracking IP addresses!") .. "</strong></font>"
+ end
+ if errorRouteList ~= " " then
+ warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces have no default route in the main routing table!") .. "</strong></font>"
+ end
+ if errorNetConfigList ~= " " then
+ warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces are configured incorrectly or not at all in /etc/config/network!") .. "</strong></font>"
+ end
+ if errorNoMetricList ~= " " then
+ warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces have no metric configured in /etc/config/network!") .. "</strong></font>"
+ end
+ if errorDuplicateMetricList ~= " " then
+ warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces have duplicate metrics configured in /etc/config/network!") .. "</strong></font>"
+ end
+ return warnings
+end
+
+-- ------ interface configuration ------ --
+
+dsp = require "luci.dispatcher"
+sys = require "luci.sys"
+ut = require "luci.util"
+
+interfaceNumber = 0
+metricList = ""
+errorFound = 0
+errorDuplicateMetricList = " "
+errorNetConfigList = " "
+errorNoMetricList = " "
+errorReliabilityList = " "
+errorRouteList = " "
+interfaceCheck()
+
+
+m5 = Map("mwan3", translate("MWAN Interface Configuration"),
+ interfaceWarnings())
+ m5:append(Template("mwan/config_css"))
+
+
+mwan_interface = m5:section(TypedSection, "interface", translate("Interfaces"),
+ translate("MWAN supports up to 250 physical and/or logical interfaces<br />" ..
+ "MWAN requires that all interfaces have a unique metric configured in /etc/config/network<br />" ..
+ "Names must match the interface name found in /etc/config/network (see advanced tab)<br />" ..
+ "Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />" ..
+ "Interfaces may not share the same name as configured members, policies or rules"))
+ mwan_interface.addremove = true
+ mwan_interface.dynamic = false
+ mwan_interface.sectionhead = "Interface"
+ mwan_interface.sortable = true
+ mwan_interface.template = "cbi/tblsection"
+ mwan_interface.extedit = dsp.build_url("admin", "network", "mwan", "configuration", "interface", "%s")
+ function mwan_interface.create(self, section)
+ TypedSection.create(self, section)
+ m5.uci:save("mwan3")
+ luci.http.redirect(dsp.build_url("admin", "network", "mwan", "configuration", "interface", section))
+ end
+
+
+enabled = mwan_interface:option(DummyValue, "enabled", translate("Enabled"))
+ enabled.rawhtml = true
+ function enabled.cfgvalue(self, s)
+ if self.map:get(s, "enabled") == "1" then
+ return "Yes"
+ else
+ return "No"
+ end
+ end
+
+track_ip = mwan_interface:option(DummyValue, "track_ip", translate("Tracking IP"))
+ track_ip.rawhtml = true
+ function track_ip.cfgvalue(self, s)
+ tracked = self.map:get(s, "track_ip")
+ if tracked then
+ local ipList = ""
+ for k,v in pairs(tracked) do
+ ipList = ipList .. v .. "<br />"
+ end
+ return ipList
+ else
+ return "&#8212;"
+ end
+ end
+
+reliability = mwan_interface:option(DummyValue, "reliability", translate("Tracking reliability"))
+ reliability.rawhtml = true
+ function reliability.cfgvalue(self, s)
+ if tracked then
+ return self.map:get(s, "reliability") or "&#8212;"
+ else
+ return "&#8212;"
+ end
+ end
+
+count = mwan_interface:option(DummyValue, "count", translate("Ping count"))
+ count.rawhtml = true
+ function count.cfgvalue(self, s)
+ if tracked then
+ return self.map:get(s, "count") or "&#8212;"
+ else
+ return "&#8212;"
+ end
+ end
+
+timeout = mwan_interface:option(DummyValue, "timeout", translate("Ping timeout"))
+ timeout.rawhtml = true
+ function timeout.cfgvalue(self, s)
+ if tracked then
+ local timeoutValue = self.map:get(s, "timeout")
+ if timeoutValue then
+ return timeoutValue .. "s"
+ else
+ return "&#8212;"
+ end
+ else
+ return "&#8212;"
+ end
+ end
+
+interval = mwan_interface:option(DummyValue, "interval", translate("Ping interval"))
+ interval.rawhtml = true
+ function interval.cfgvalue(self, s)
+ if tracked then
+ local intervalValue = self.map:get(s, "interval")
+ if intervalValue then
+ return intervalValue .. "s"
+ else
+ return "&#8212;"
+ end
+ else
+ return "&#8212;"
+ end
+ end
+
+down = mwan_interface:option(DummyValue, "down", translate("Interface down"))
+ down.rawhtml = true
+ function down.cfgvalue(self, s)
+ if tracked then
+ return self.map:get(s, "down") or "&#8212;"
+ else
+ return "&#8212;"
+ end
+ end
+
+up = mwan_interface:option(DummyValue, "up", translate("Interface up"))
+ up.rawhtml = true
+ function up.cfgvalue(self, s)
+ if tracked then
+ return self.map:get(s, "up") or "&#8212;"
+ else
+ return "&#8212;"
+ end
+ end
+
+metric = mwan_interface:option(DummyValue, "metric", translate("Metric"))
+ metric.rawhtml = true
+ function metric.cfgvalue(self, s)
+ local metricValue = sys.exec("uci -p /var/state get network." .. s .. ".metric")
+ if metricValue ~= "" then
+ return metricValue
+ else
+ return "&#8212;"
+ end
+ end
+
+errors = mwan_interface:option(DummyValue, "errors", translate("Errors"))
+ errors.rawhtml = true
+ function errors.cfgvalue(self, s)
+ if errorFound == 1 then
+ local mouseOver, lineBreak = "", ""
+ if string.find(errorReliabilityList, " " .. s .. " ") then
+ mouseOver = "Higher reliability requirement than there are tracking IP addresses"
+ lineBreak = "&#10;&#10;"
+ end
+ if string.find(errorRouteList, " " .. s .. " ") then
+ mouseOver = mouseOver .. lineBreak .. "No default route in the main routing table"
+ lineBreak = "&#10;&#10;"
+ end
+ if string.find(errorNetConfigList, " " .. s .. " ") then
+ mouseOver = mouseOver .. lineBreak .. "Configured incorrectly or not at all in /etc/config/network"
+ lineBreak = "&#10;&#10;"
+ end
+ if string.find(errorNoMetricList, " " .. s .. " ") then
+ mouseOver = mouseOver .. lineBreak .. "No metric configured in /etc/config/network"
+ lineBreak = "&#10;&#10;"
+ end
+ if string.find(errorDuplicateMetricList, " " .. s .. " ") then
+ mouseOver = mouseOver .. lineBreak .. "Duplicate metric configured in /etc/config/network"
+ end
+ if mouseOver == "" then
+ return ""
+ else
+ return "<span title=\"" .. mouseOver .. "\"><img src=\"/luci-static/resources/cbi/reset.gif\" alt=\"error\"></img></span>"
+ end
+ else
+ return ""
+ end
+ end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
new file mode 100644
index 0000000000..e7c16fdfdc
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
@@ -0,0 +1,250 @@
+-- ------ extra functions ------ --
+
+function interfaceCheck()
+ metricValue = ut.trim(sys.exec("uci -p /var/state get network." .. arg[1] .. ".metric"))
+ if metricValue == "" then -- no metric
+ errorNoMetric = 1
+ else -- if metric exists create list of interface metrics to compare against for duplicates
+ uci.cursor():foreach("mwan3", "interface",
+ function (section)
+ local metricValue = ut.trim(sys.exec("uci -p /var/state get network." .. section[".name"] .. ".metric"))
+ metricList = metricList .. section[".name"] .. " " .. metricValue .. "\n"
+ end
+ )
+ -- compare metric against list
+ local metricDuplicateNumbers, metricDuplicates = sys.exec("echo '" .. metricList .. "' | awk '{print $2}' | uniq -d"), ""
+ for line in metricDuplicateNumbers:gmatch("[^\r\n]+") do
+ metricDuplicates = sys.exec("echo '" .. metricList .. "' | grep '" .. line .. "' | awk '{print $1}'")
+ errorDuplicateMetricList = errorDuplicateMetricList .. metricDuplicates
+ end
+ if sys.exec("echo '" .. errorDuplicateMetricList .. "' | grep -w " .. arg[1]) ~= "" then
+ errorDuplicateMetric = 1
+ end
+ end
+ -- check if this interface has a higher reliability requirement than track IPs configured
+ local trackingNumber = tonumber(ut.trim(sys.exec("echo $(uci -p /var/state get mwan3." .. arg[1] .. ".track_ip) | wc -w")))
+ if trackingNumber > 0 then
+ local reliabilityNumber = tonumber(ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".reliability")))
+ if reliabilityNumber and reliabilityNumber > trackingNumber then
+ errorReliability = 1
+ end
+ end
+ -- check if any interfaces are not properly configured in /etc/config/network or have no default route in main routing table
+ if ut.trim(sys.exec("uci -p /var/state get network." .. arg[1])) == "interface" then
+ local interfaceDevice = ut.trim(sys.exec("uci -p /var/state get network." .. arg[1] .. ".ifname"))
+ if interfaceDevice == "uci: Entry not found" or interfaceDevice == "" then
+ errorNetConfig = 1
+ errorRoute = 1
+ else
+ local routeCheck = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $1}'"))
+ if routeCheck == "" then
+ errorRoute = 1
+ end
+ end
+ else
+ errorNetConfig = 1
+ errorRoute = 1
+ end
+end
+
+function interfaceWarnings() -- display warning messages at the top of the page
+ local warns, lineBreak = "", ""
+ if errorReliability == 1 then
+ warns = "<font color=\"ff0000\"><strong>" .. translate("WARNING: this interface has a higher reliability requirement than there are tracking IP addresses!") .. "</strong></font>"
+ lineBreak = "<br /><br />"
+ end
+ if errorRoute == 1 then
+ warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>" .. translate("WARNING: this interface has no default route in the main routing table!") .. "</strong></font>"
+ lineBreak = "<br /><br />"
+ end
+ if errorNetConfig == 1 then
+ warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>" .. translate("WARNING: this interface is configured incorrectly or not at all in /etc/config/network!") .. "</strong></font>"
+ lineBreak = "<br /><br />"
+ end
+ if errorNoMetric == 1 then
+ warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>" .. translate("WARNING: this interface has no metric configured in /etc/config/network!") .. "</strong></font>"
+ elseif errorDuplicateMetric == 1 then
+ warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>" .. translate("WARNING: this and other interfaces have duplicate metrics configured in /etc/config/network!") .. "</strong></font>"
+ end
+ return warns
+end
+
+-- ------ interface configuration ------ --
+
+dsp = require "luci.dispatcher"
+sys = require "luci.sys"
+ut = require "luci.util"
+arg[1] = arg[1] or ""
+
+metricValue = ""
+metricList = ""
+errorDuplicateMetricList = ""
+errorNoMetric = 0
+errorDuplicateMetric = 0
+errorRoute = 0
+errorNetConfig = 0
+errorReliability = 0
+interfaceCheck()
+
+
+m5 = Map("mwan3", translatef("MWAN Interface Configuration - %s", arg[1]),
+ interfaceWarnings())
+ m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "interface")
+
+
+mwan_interface = m5:section(NamedSection, arg[1], "interface", "")
+ mwan_interface.addremove = false
+ mwan_interface.dynamic = false
+
+
+enabled = mwan_interface:option(ListValue, "enabled", translate("Enabled"))
+ enabled.default = "1"
+ enabled:value("1", translate("Yes"))
+ enabled:value("0", translate("No"))
+
+family = mwan_interface:option(ListValue, "family", translate("Internet Protocol"))
+ family.default = "ipv4"
+ family:value("ipv4", translate("IPv4"))
+ family:value("ipv6", translate("IPv6"))
+
+track_ip = mwan_interface:option(DynamicList, "track_ip", translate("Tracking IP"),
+ translate("This IP address will be pinged to dermine if the link is up or down. Leave blank to assume interface is always online"))
+ track_ip.datatype = "ipaddr"
+
+reliability = mwan_interface:option(Value, "reliability", translate("Tracking reliability"),
+ translate("Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up"))
+ reliability.datatype = "range(1, 100)"
+ reliability.default = "1"
+
+count = mwan_interface:option(ListValue, "count", translate("Ping count"))
+ count.default = "1"
+ count:value("1")
+ count:value("2")
+ count:value("3")
+ count:value("4")
+ count:value("5")
+
+size = mwan_interface:option(Value, "size", translate("Ping size"))
+ size.default = "56"
+ size:value("8")
+ size:value("24")
+ size:value("56")
+ size:value("120")
+ size:value("248")
+ size:value("504")
+ size:value("1016")
+ size:value("1472")
+ size:value("2040")
+ size.datatype = "range(1, 65507)"
+ size.rmempty = false
+ size.optional = false
+
+timeout = mwan_interface:option(ListValue, "timeout", translate("Ping timeout"))
+ timeout.default = "2"
+ timeout:value("1", translatef("%d second", 1))
+ timeout:value("2", translatef("%d seconds", 2))
+ timeout:value("3", translatef("%d seconds", 3))
+ timeout:value("4", translatef("%d seconds", 4))
+ timeout:value("5", translatef("%d seconds", 5))
+ timeout:value("6", translatef("%d seconds", 6))
+ timeout:value("7", translatef("%d seconds", 7))
+ timeout:value("8", translatef("%d seconds", 8))
+ timeout:value("9", translatef("%d seconds", 9))
+ timeout:value("10", translatef("%d seconds", 10))
+
+interval = mwan_interface:option(ListValue, "interval", translate("Ping interval"))
+ interval.default = "5"
+ interval:value("1", translatef("%d second", 1))
+ interval:value("3", translatef("%d seconds", 3))
+ interval:value("5", translatef("%d seconds", 5))
+ interval:value("10", translatef("%d seconds", 10))
+ interval:value("20", translatef("%d seconds", 20))
+ interval:value("30", translatef("%d seconds", 30))
+ interval:value("60", translatef("%d minute", 1))
+ interval:value("300", translatef("%d minutes", 5))
+ interval:value("600", translatef("%d minutes", 10))
+ interval:value("900", translatef("%d minutes", 15))
+ interval:value("1800", translatef("%d minutes", 30))
+ interval:value("3600", translatef("%d hour", 1))
+
+failure = mwan_interface:option(Value, "failure_interval", translate("Failure interval"),
+ translate("Ping interval during failure detection"))
+ failure.default = "5"
+ failure:value("1", translatef("%d second", 1))
+ failure:value("3", translatef("%d seconds", 3))
+ failure:value("5", translatef("%d seconds", 5))
+ failure:value("10", translatef("%d seconds", 10))
+ failure:value("20", translatef("%d seconds", 20))
+ failure:value("30", translatef("%d seconds", 30))
+ failure:value("60", translatef("%d minute", 1))
+ failure:value("300", translatef("%d minutes", 5))
+ failure:value("600", translatef("%d minutes", 10))
+ failure:value("900", translatef("%d minutes", 15))
+ failure:value("1800", translatef("%d minutes", 30))
+ failure:value("3600", translatef("%d hour", 1))
+
+recovery = mwan_interface:option(Value, "recovery_interval", translate("Recovery interval"),
+ translate("Ping interval during failure recovering"))
+ recovery.default = "5"
+ recovery:value("1", translatef("%d second", 1))
+ recovery:value("3", translatef("%d seconds", 3))
+ recovery:value("5", translatef("%d seconds", 5))
+ recovery:value("10", translatef("%d seconds", 10))
+ recovery:value("20", translatef("%d seconds", 20))
+ recovery:value("30", translatef("%d seconds", 30))
+ recovery:value("60", translatef("%d minute", 1))
+ recovery:value("300", translatef("%d minutes", 5))
+ recovery:value("600", translatef("%d minutes", 10))
+ recovery:value("900", translatef("%d minutes", 15))
+ recovery:value("1800", translatef("%d minutes", 30))
+ recovery:value("3600", translatef("%d hour", 1))
+
+down = mwan_interface:option(ListValue, "down", translate("Interface down"),
+ translate("Interface will be deemed down after this many failed ping tests"))
+ down.default = "3"
+ down:value("1")
+ down:value("2")
+ down:value("3")
+ down:value("4")
+ down:value("5")
+ down:value("6")
+ down:value("7")
+ down:value("8")
+ down:value("9")
+ down:value("10")
+
+up = mwan_interface:option(ListValue, "up", translate("Interface up"),
+ translate("Downed interface will be deemed up after this many successful ping tests"))
+ up.default = "3"
+ up:value("1")
+ up:value("2")
+ up:value("3")
+ up:value("4")
+ up:value("5")
+ up:value("6")
+ up:value("7")
+ up:value("8")
+ up:value("9")
+ up:value("10")
+
+flush = mwan_interface:option(ListValue, "flush_conntrack", translate("Flush conntrack table"),
+ translate("Flush global firewall conntrack table on interface events"))
+ flush.default = "never"
+ flush:value("ifup", translate("ifup"))
+ flush:value("ifdown", translate("ifdown"))
+ flush:value("never", translate("never"))
+ flush:value("always", translate("always"))
+
+metric = mwan_interface:option(DummyValue, "metric", translate("Metric"),
+ translate("This displays the metric assigned to this interface in /etc/config/network"))
+ metric.rawhtml = true
+ function metric.cfgvalue(self, s)
+ if errorNoMetric == 0 then
+ return metricValue
+ else
+ return "&#8212;"
+ end
+ end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua
new file mode 100644
index 0000000000..3bccbd942f
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua
@@ -0,0 +1,46 @@
+-- ------ member configuration ------ --
+
+ds = require "luci.dispatcher"
+
+
+m5 = Map("mwan3", translate("MWAN Member Configuration"))
+ m5:append(Template("mwan/config_css"))
+
+
+mwan_member = m5:section(TypedSection, "member", translate("Members"),
+ translate("Members are profiles attaching a metric and weight to an MWAN interface<br />" ..
+ "Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />" ..
+ "Members may not share the same name as configured interfaces, policies or rules"))
+ mwan_member.addremove = true
+ mwan_member.dynamic = false
+ mwan_member.sectionhead = "Member"
+ mwan_member.sortable = true
+ mwan_member.template = "cbi/tblsection"
+ mwan_member.extedit = ds.build_url("admin", "network", "mwan", "configuration", "member", "%s")
+ function mwan_member.create(self, section)
+ TypedSection.create(self, section)
+ m5.uci:save("mwan3")
+ luci.http.redirect(ds.build_url("admin", "network", "mwan", "configuration", "member", section))
+ end
+
+
+interface = mwan_member:option(DummyValue, "interface", translate("Interface"))
+ interface.rawhtml = true
+ function interface.cfgvalue(self, s)
+ return self.map:get(s, "interface") or "&#8212;"
+ end
+
+metric = mwan_member:option(DummyValue, "metric", translate("Metric"))
+ metric.rawhtml = true
+ function metric.cfgvalue(self, s)
+ return self.map:get(s, "metric") or "1"
+ end
+
+weight = mwan_member:option(DummyValue, "weight", translate("Weight"))
+ weight.rawhtml = true
+ function weight.cfgvalue(self, s)
+ return self.map:get(s, "weight") or "1"
+ end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua
new file mode 100644
index 0000000000..eb6f417afe
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua
@@ -0,0 +1,47 @@
+-- ------ extra functions ------ --
+
+function cbi_add_interface(field)
+ uci.cursor():foreach("mwan3", "interface",
+ function (section)
+ field:value(section[".name"])
+ end
+ )
+end
+
+-- ------ member configuration ------ --
+
+dsp = require "luci.dispatcher"
+arg[1] = arg[1] or ""
+
+
+m5 = Map("mwan3", translatef("MWAN Member Configuration - %s", arg[1]))
+ m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "member")
+
+
+mwan_member = m5:section(NamedSection, arg[1], "member", "")
+ mwan_member.addremove = false
+ mwan_member.dynamic = false
+
+
+interface = mwan_member:option(Value, "interface", translate("Interface"))
+ cbi_add_interface(interface)
+
+metric = mwan_member:option(Value, "metric", translate("Metric"),
+ translate("Acceptable values: 1-1000. Defaults to 1 if not set"))
+ metric.datatype = "range(1, 1000)"
+
+weight = mwan_member:option(Value, "weight", translate("Weight"),
+ translate("Acceptable values: 1-1000. Defaults to 1 if not set"))
+ weight.datatype = "range(1, 1000)"
+
+
+-- ------ currently configured interfaces ------ --
+
+mwan_interface = m5:section(TypedSection, "interface", translate("Currently Configured Interfaces"))
+ mwan_interface.addremove = false
+ mwan_interface.dynamic = false
+ mwan_interface.sortable = false
+ mwan_interface.template = "cbi/tblsection"
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua
new file mode 100644
index 0000000000..08c3f69de6
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua
@@ -0,0 +1,95 @@
+-- ------ extra functions ------ --
+
+function policyCheck() -- check to see if any policy names exceed the maximum of 15 characters
+ uci.cursor():foreach("mwan3", "policy",
+ function (section)
+ if string.len(section[".name"]) > 15 then
+ nameTooLong = 1
+ err_name_list = err_name_list .. section[".name"] .. " "
+ end
+ end
+ )
+end
+
+function policyWarn() -- display status and warning messages at the top of the page
+ if nameTooLong == 1 then
+ return "<font color=\"ff0000\"><strong>" .. translate("WARNING: Some policies have names exceeding the maximum of 15 characters!") .. "</strong></font>"
+ else
+ return ""
+ end
+end
+
+-- ------ policy configuration ------ --
+
+ds = require "luci.dispatcher"
+sys = require "luci.sys"
+
+nameTooLong = 0
+err_name_list = " "
+policyCheck()
+
+
+m5 = Map("mwan3", translate("MWAN Policy Configuration"),
+ policyWarn())
+ m5:append(Template("mwan/config_css"))
+
+
+mwan_policy = m5:section(TypedSection, "policy", translate("Policies"),
+ translate("Policies are profiles grouping one or more members controlling how MWAN distributes traffic<br />" ..
+ "Member interfaces with lower metrics are used first. Interfaces with the same metric load-balance<br />" ..
+ "Load-balanced member interfaces distribute more traffic out those with higher weights<br />" ..
+ "Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be 15 characters or less<br />" ..
+ "Policies may not share the same name as configured interfaces, members or rules"))
+ mwan_policy.addremove = true
+ mwan_policy.dynamic = false
+ mwan_policy.sectionhead = "Policy"
+ mwan_policy.sortable = true
+ mwan_policy.template = "cbi/tblsection"
+ mwan_policy.extedit = ds.build_url("admin", "network", "mwan", "configuration", "policy", "%s")
+ function mwan_policy.create(self, section)
+ TypedSection.create(self, section)
+ m5.uci:save("mwan3")
+ luci.http.redirect(ds.build_url("admin", "network", "mwan", "configuration", "policy", section))
+ end
+
+
+use_member = mwan_policy:option(DummyValue, "use_member", translate("Members assigned"))
+ use_member.rawhtml = true
+ function use_member.cfgvalue(self, s)
+ local memberConfig, memberList = self.map:get(s, "use_member"), ""
+ if memberConfig then
+ for k,v in pairs(memberConfig) do
+ memberList = memberList .. v .. "<br />"
+ end
+ return memberList
+ else
+ return "&#8212;"
+ end
+
+ end
+
+last_resort = mwan_policy:option(DummyValue, "last_resort", translate("Last resort"))
+ last_resort.rawhtml = true
+ function last_resort.cfgvalue(self, s)
+ local action = self.map:get(s, "last_resort")
+ if action == "blackhole" then
+ return "blackhole (drop)"
+ elseif action == "default" then
+ return "default (use main routing table)"
+ else
+ return "unreachable (reject)"
+ end
+ end
+
+errors = mwan_policy:option(DummyValue, "errors", translate("Errors"))
+ errors.rawhtml = true
+ function errors.cfgvalue(self, s)
+ if not string.find(err_name_list, " " .. s .. " ") then
+ return ""
+ else
+ return "<span title=\"Name exceeds 15 characters\"><img src=\"/luci-static/resources/cbi/reset.gif\" alt=\"error\"></img></span>"
+ end
+ end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua
new file mode 100644
index 0000000000..06a0fec668
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua
@@ -0,0 +1,65 @@
+-- ------ extra functions ------ --
+
+function policyCheck() -- check to see if this policy's name exceed the maximum of 15 characters
+ policyNameLength = string.len(arg[1])
+ if policyNameLength > 15 then
+ nameTooLong = 1
+ end
+end
+
+function policyWarn() -- display status and warning messages at the top of the page
+ if nameTooLong == 1 then
+ return "<font color=\"ff0000\"><strong>" .. translatef("WARNING: this policy's name is %d characters exceeding the maximum of 15!", policyNameLength) .. "</strong></font>"
+ else
+ return ""
+ end
+end
+
+function cbiAddMember(field)
+ uci.cursor():foreach("mwan3", "member",
+ function (section)
+ field:value(section[".name"])
+ end
+ )
+end
+
+-- ------ policy configuration ------ --
+
+dsp = require "luci.dispatcher"
+arg[1] = arg[1] or ""
+
+nameTooLong = 0
+policyCheck()
+
+
+m5 = Map("mwan3", translatef("MWAN Policy Configuration - %s", arg[1]),
+ policyWarn())
+ m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "policy")
+
+
+mwan_policy = m5:section(NamedSection, arg[1], "policy", "")
+ mwan_policy.addremove = false
+ mwan_policy.dynamic = false
+
+
+use_member = mwan_policy:option(DynamicList, "use_member", translate("Member used"))
+ cbiAddMember(use_member)
+
+last_resort = mwan_policy:option(ListValue, "last_resort", translate("Last resort"),
+ translate("When all policy members are offline use this behavior for matched traffic"))
+ last_resort.default = "unreachable"
+ last_resort:value("unreachable", translate("unreachable (reject)"))
+ last_resort:value("blackhole", translate("blackhole (drop)"))
+ last_resort:value("default", translate("default (use main routing table)"))
+
+
+-- ------ currently configured members ------ --
+
+mwan_member = m5:section(TypedSection, "member", translate("Currently Configured Members"))
+ mwan_member.addremove = false
+ mwan_member.dynamic = false
+ mwan_member.sortable = false
+ mwan_member.template = "cbi/tblsection"
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua
new file mode 100644
index 0000000000..412f369eb0
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua
@@ -0,0 +1,141 @@
+-- ------ extra functions ------ --
+
+function ruleCheck() -- determine if rules needs a proper protocol configured
+ uci.cursor():foreach("mwan3", "rule",
+ function (section)
+ local sourcePort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. section[".name"] .. ".src_port"))
+ local destPort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. section[".name"] .. ".dest_port"))
+ if sourcePort ~= "" or destPort ~= "" then -- ports configured
+ local protocol = ut.trim(sys.exec("uci -p /var/state get mwan3." .. section[".name"] .. ".proto"))
+ if protocol == "" or protocol == "all" then -- no or improper protocol
+ error_protocol_list = error_protocol_list .. section[".name"] .. " "
+ end
+ end
+ end
+ )
+end
+
+function ruleWarn() -- display warning messages at the top of the page
+ if error_protocol_list ~= " " then
+ return "<font color=\"ff0000\"><strong>" .. translate("WARNING: some rules have a port configured with no or improper protocol specified! Please configure a specific protocol!") .. "</strong></font>"
+ else
+ return ""
+ end
+end
+
+-- ------ rule configuration ------ --
+
+dsp = require "luci.dispatcher"
+sys = require "luci.sys"
+ut = require "luci.util"
+
+error_protocol_list = " "
+ruleCheck()
+
+
+m5 = Map("mwan3", translate("MWAN Rule Configuration"),
+ ruleWarn())
+ m5:append(Template("mwan/config_css"))
+
+
+mwan_rule = m5:section(TypedSection, "rule", translate("Traffic Rules"),
+ translate("Rules specify which traffic will use a particular MWAN policy based on IP address, port or protocol<br />" ..
+ "Rules are matched from top to bottom. Rules below a matching rule are ignored. Traffic not matching any rule is routed using the main routing table<br />" ..
+ "Traffic destined for known (other than default) networks is handled by the main routing table. Traffic matching a rule, but all WAN interfaces for that policy are down will be blackholed<br />" ..
+ "Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />" ..
+ "Rules may not share the same name as configured interfaces, members or policies"))
+ mwan_rule.addremove = true
+ mwan_rule.anonymous = false
+ mwan_rule.dynamic = false
+ mwan_rule.sectionhead = "Rule"
+ mwan_rule.sortable = true
+ mwan_rule.template = "cbi/tblsection"
+ mwan_rule.extedit = dsp.build_url("admin", "network", "mwan", "configuration", "rule", "%s")
+ function mwan_rule.create(self, section)
+ TypedSection.create(self, section)
+ m5.uci:save("mwan3")
+ luci.http.redirect(dsp.build_url("admin", "network", "mwan", "configuration", "rule", section))
+ end
+
+
+src_ip = mwan_rule:option(DummyValue, "src_ip", translate("Source address"))
+ src_ip.rawhtml = true
+ function src_ip.cfgvalue(self, s)
+ return self.map:get(s, "src_ip") or "&#8212;"
+ end
+
+src_port = mwan_rule:option(DummyValue, "src_port", translate("Source port"))
+ src_port.rawhtml = true
+ function src_port.cfgvalue(self, s)
+ return self.map:get(s, "src_port") or "&#8212;"
+ end
+
+dest_ip = mwan_rule:option(DummyValue, "dest_ip", translate("Destination address"))
+ dest_ip.rawhtml = true
+ function dest_ip.cfgvalue(self, s)
+ return self.map:get(s, "dest_ip") or "&#8212;"
+ end
+
+dest_port = mwan_rule:option(DummyValue, "dest_port", translate("Destination port"))
+ dest_port.rawhtml = true
+ function dest_port.cfgvalue(self, s)
+ return self.map:get(s, "dest_port") or "&#8212;"
+ end
+
+proto = mwan_rule:option(DummyValue, "proto", translate("Protocol"))
+ proto.rawhtml = true
+ function proto.cfgvalue(self, s)
+ return self.map:get(s, "proto") or "all"
+ end
+
+sticky = mwan_rule:option(DummyValue, "sticky", translate("Sticky"))
+ sticky.rawhtml = true
+ function sticky.cfgvalue(self, s)
+ if self.map:get(s, "sticky") == "1" then
+ stickied = 1
+ return "Yes"
+ else
+ stickied = nil
+ return "No"
+ end
+ end
+
+timeout = mwan_rule:option(DummyValue, "timeout", translate("Sticky timeout"))
+ timeout.rawhtml = true
+ function timeout.cfgvalue(self, s)
+ if stickied then
+ local timeoutValue = self.map:get(s, "timeout")
+ if timeoutValue then
+ return timeoutValue .. "s"
+ else
+ return "600s"
+ end
+ else
+ return "&#8212;"
+ end
+ end
+
+ipset = mwan_rule:option(DummyValue, "ipset", translate("IPset"))
+ ipset.rawhtml = true
+ function ipset.cfgvalue(self, s)
+ return self.map:get(s, "ipset") or "&#8212;"
+ end
+
+use_policy = mwan_rule:option(DummyValue, "use_policy", translate("Policy assigned"))
+ use_policy.rawhtml = true
+ function use_policy.cfgvalue(self, s)
+ return self.map:get(s, "use_policy") or "&#8212;"
+ end
+
+errors = mwan_rule:option(DummyValue, "errors", translate("Errors"))
+ errors.rawhtml = true
+ function errors.cfgvalue(self, s)
+ if not string.find(error_protocol_list, " " .. s .. " ") then
+ return ""
+ else
+ return "<span title=\"No protocol specified\"><img src=\"/luci-static/resources/cbi/reset.gif\" alt=\"error\"></img></span>"
+ end
+ end
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua
new file mode 100644
index 0000000000..25a96f5c8f
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua
@@ -0,0 +1,113 @@
+-- ------ extra functions ------ --
+
+function ruleCheck() -- determine if rule needs a protocol specified
+ local sourcePort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".src_port"))
+ local destPort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".dest_port"))
+ if sourcePort ~= "" or destPort ~= "" then -- ports configured
+ local protocol = ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".proto"))
+ if protocol == "" or protocol == "all" then -- no or improper protocol
+ error_protocol = 1
+ end
+ end
+end
+
+function ruleWarn() -- display warning message at the top of the page
+ if error_protocol == 1 then
+ return "<font color=\"ff0000\"><strong>" .. translate("WARNING: this rule is incorrectly configured with no or improper protocol specified! Please configure a specific protocol!") .. "</strong></font>"
+ else
+ return ""
+ end
+end
+
+function cbiAddPolicy(field)
+ uci.cursor():foreach("mwan3", "policy",
+ function (section)
+ field:value(section[".name"])
+ end
+ )
+end
+
+function cbiAddProtocol(field)
+ local protocols = ut.trim(sys.exec("cat /etc/protocols | grep ' # ' | awk '{print $1}' | grep -vw -e 'ip' -e 'tcp' -e 'udp' -e 'icmp' -e 'esp' | grep -v 'ipv6' | sort | tr '\n' ' '"))
+ for p in string.gmatch(protocols, "%S+") do
+ field:value(p)
+ end
+end
+
+-- ------ rule configuration ------ --
+
+dsp = require "luci.dispatcher"
+sys = require "luci.sys"
+ut = require "luci.util"
+arg[1] = arg[1] or ""
+
+error_protocol = 0
+ruleCheck()
+
+
+m5 = Map("mwan3", translatef("MWAN Rule Configuration - %s", arg[1]),
+ ruleWarn())
+ m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "rule")
+
+
+mwan_rule = m5:section(NamedSection, arg[1], "rule", "")
+ mwan_rule.addremove = false
+ mwan_rule.dynamic = false
+
+
+src_ip = mwan_rule:option(Value, "src_ip", translate("Source address"),
+ translate("Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"))
+ src_ip.datatype = ipaddr
+
+src_port = mwan_rule:option(Value, "src_port", translate("Source port"),
+ translate("May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or as a portrange (eg \"1024:2048\") without quotes"))
+
+dest_ip = mwan_rule:option(Value, "dest_ip", translate("Destination address"),
+ translate("Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"))
+ dest_ip.datatype = ipaddr
+
+dest_port = mwan_rule:option(Value, "dest_port", translate("Destination port"),
+ translate("May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or as a portrange (eg \"1024:2048\") without quotes"))
+
+proto = mwan_rule:option(Value, "proto", translate("Protocol"),
+ translate("View the contents of /etc/protocols for protocol descriptions"))
+ proto.default = "all"
+ proto.rmempty = false
+ proto:value("all")
+ proto:value("ip")
+ proto:value("tcp")
+ proto:value("udp")
+ proto:value("icmp")
+ proto:value("esp")
+ cbiAddProtocol(proto)
+
+sticky = mwan_rule:option(ListValue, "sticky", translate("Sticky"),
+ translate("Traffic from the same source IP address that previously matched this rule within the sticky timeout period will use the same WAN interface"))
+ sticky.default = "0"
+ sticky:value("1", translate("Yes"))
+ sticky:value("0", translate("No"))
+
+timeout = mwan_rule:option(Value, "timeout", translate("Sticky timeout"),
+ translate("Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"))
+ timeout.datatype = "range(1, 1000000)"
+
+ipset = mwan_rule:option(Value, "ipset", translate("IPset"),
+ translate("Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/youtube.com/youtube\")"))
+
+use_policy = mwan_rule:option(Value, "use_policy", translate("Policy assigned"))
+ cbiAddPolicy(use_policy)
+ use_policy:value("unreachable", translate("unreachable (reject)"))
+ use_policy:value("blackhole", translate("blackhole (drop)"))
+ use_policy:value("default", translate("default (use main routing table)"))
+
+
+-- ------ currently configured policies ------ --
+
+mwan_policy = m5:section(TypedSection, "policy", translate("Currently Configured Policies"))
+ mwan_policy.addremove = false
+ mwan_policy.dynamic = false
+ mwan_policy.sortable = false
+ mwan_policy.template = "cbi/tblsection"
+
+
+return m5
diff --git a/applications/luci-app-mwan3/luasrc/view/admin_status/index/mwan.htm b/applications/luci-app-mwan3/luasrc/view/admin_status/index/mwan.htm
new file mode 100644
index 0000000000..53b997af90
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/view/admin_status/index/mwan.htm
@@ -0,0 +1 @@
+<%+mwan/openwrt_overview_status%>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm
new file mode 100644
index 0000000000..14d404bc7c
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm
@@ -0,0 +1,129 @@
+<%+header%>
+
+<ul class="cbi-tabmenu">
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
+ <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
+</ul>
+
+<%
+ local uci = require "luci.model.uci"
+
+ interfaceNames = ""
+ uci.cursor():foreach("mwan3", "interface",
+ function (section)
+ interfaceNames = interfaceNames .. section[".name"] .. " "
+ end
+ )
+%>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+ var stxhr = new XHR();
+
+ function update_status(tool, task)
+ {
+ var iface = document.getElementById('mwaniface').value;
+ var output = document.getElementById('diag_output');
+
+ if (tool == "service")
+ {
+ output.innerHTML =
+ '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="padding: 20px; vertical-align: middle;" /> ' +
+ "Waiting for MWAN to " + task + "..."
+ ;
+ }
+ else
+ {
+ output.innerHTML =
+ '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="padding: 20px; vertical-align: middle;" /> ' +
+ "Waiting for diagnostic results..."
+ ;
+ }
+
+ output.parentNode.style.display = 'block';
+ output.style.display = 'inline';
+
+ stxhr.get('<%=luci.dispatcher.build_url("admin", "network", "mwan", "advanced")%>/diagnostics_display' + '/' + iface + '/' + tool + '/' + task, null,
+ function(x, mArray)
+ {
+ if (mArray.diagnostics)
+ {
+ output.innerHTML = String.format('<pre id="diag_output_css">%h</pre>', mArray.diagnostics[0]);
+ }
+ else
+ {
+ output.innerHTML = '<pre id="diag_output_css"><strong>No diagnostic results returned</strong></pre>';
+ }
+ }
+ );
+ }
+//]]></script>
+
+<div id="mwan_diagnostics" class="cbi-map">
+ <fieldset id="diag_select" class="cbi-section">
+ <legend><%:MWAN Interface Diagnostics%></legend>
+ <select id="mwaniface">
+ <% for z in interfaceNames:gmatch("[^ ]+") do -%><option value="<%=z%>"><%=z%></option><%- end %>
+ </select>
+ <div id="buttoncss">
+ <input type="button" value="<%:Ping default gateway%>" class="cbi-button cbi-button-apply" onclick="update_status('ping', 'gateway')" />
+ <input type="button" value="<%:Ping tracking IP%>" class="cbi-button cbi-button-apply" onclick="update_status('ping', 'track_ip')" />
+ <input type="button" value="<%:Check IP rules%>" class="cbi-button cbi-button-apply" onclick="update_status('rulechk', null)" />
+ <input type="button" value="<%:Check routing table%>" class="cbi-button cbi-button-apply" onclick="update_status('routechk', null)" />
+ <input type="button" value="<%:Hotplug ifup%>" class="cbi-button cbi-button-apply" onclick="update_status('hotplug', 'ifup')" />
+ <input type="button" value="<%:Hotplug ifdown%>" class="cbi-button cbi-button-apply" onclick="update_status('hotplug', 'ifdown')" />
+ </div>
+ </fieldset>
+ <fieldset id="diag_select" class="cbi-section">
+ <legend><%:MWAN Service Control%></legend>
+ <div id="buttoncss">
+ <input type="button" value="<%:Restart MWAN%>" class="cbi-button cbi-button-apply" onclick="update_status('service', 'restart')" />
+ <input type="button" value="<%:Stop MWAN%>" class="cbi-button cbi-button-apply" onclick="update_status('service', 'stop')" />
+ <input type="button" value="<%:Start MWAN%>" class="cbi-button cbi-button-apply" onclick="update_status('service', 'start')" />
+ </div>
+ </fieldset>
+ <fieldset class="cbi-section" style="display:none">
+ <legend><%:Diagnostic Results%></legend>
+ <div id="diag_output"></div>
+ </fieldset>
+</div>
+
+<style type="text/css">
+ .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
+ max-width: none;
+ margin-left: 30px;
+ padding-right: 30px;
+ width: auto;
+ }
+ #mwan_diagnostics {
+ background-color: #FFFFFF;
+ border: 1px dotted #555555;
+ padding: 20px;
+ }
+ #diag_select {
+ padding: 12px 20px 20px 20px;
+ }
+ #mwaniface {
+ float: left;
+ margin: 8px 20px 0px 0px;
+ }
+ #buttoncss {
+ display: table;
+ float: left;
+ text-align: left;
+ }
+ .cbi-button {
+ margin: 8px 20px 0px 0px;
+ min-width: 153px;
+ }
+ #diag_output_css {
+ padding: 20px;
+ text-align: left;
+ }
+</style>
+
+<%+footer%>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm
new file mode 100644
index 0000000000..4c2a0dc208
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm
@@ -0,0 +1,24 @@
+<ul class="cbi-tabmenu">
+ <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
+</ul>
+
+<style type="text/css">
+ .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
+ max-width: none;
+ margin: 0px 0px 0px 30px;
+ padding-right: 30px;
+ width: auto;
+ }
+ .cbi-section-node {
+ margin-top: 20px;
+ }
+ .cbi-section {
+ border: 1px dotted #555555;
+ padding: 20px;
+ }
+</style>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm
new file mode 100644
index 0000000000..fba3fa6940
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm
@@ -0,0 +1,24 @@
+<ul class="cbi-tabmenu">
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
+ <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
+</ul>
+
+<style type="text/css">
+ .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
+ max-width: none;
+ margin: 0px 0px 0px 30px;
+ padding-right: 30px;
+ width: auto;
+ }
+ .cbi-section-node {
+ margin-top: 20px;
+ }
+ .cbi-section {
+ border: 1px dotted #555555;
+ padding: 20px;
+ }
+</style>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm
new file mode 100644
index 0000000000..cf90112078
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm
@@ -0,0 +1,24 @@
+<ul class="cbi-tabmenu">
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
+ <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
+</ul>
+
+<style type="text/css">
+ .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
+ max-width: none;
+ margin: 0px 0px 0px 30px;
+ padding-right: 30px;
+ width: auto;
+ }
+ .cbi-section-node {
+ margin-top: 20px;
+ }
+ .cbi-section {
+ border: 1px dotted #555555;
+ padding: 20px;
+ }
+</style>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm
new file mode 100644
index 0000000000..0a12496899
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm
@@ -0,0 +1,74 @@
+<%+header%>
+
+<ul class="cbi-tabmenu">
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
+ <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
+</ul>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+ XHR.poll(15, '<%=luci.dispatcher.build_url("admin", "network", "mwan", "advanced", "troubleshooting_display")%>', null,
+ function(x, mArray)
+ {
+ var tshoot = document.getElementById('troubleshoot_text');
+ if (mArray.versions)
+ {
+ var versions = '<span class="description">Software versions : </span><br /><br />';
+ var mwanConfig = '<br /><br /><span class="description">Output of &#34;cat /etc/config/mwan3&#34; : </span><br /><br />';
+ var netConfig = '<br /><br /><span class="description">Output of &#34;cat /etc/config/network&#34; : </span><br /><br />';
+ var wifiConfig = '<br /><br /><span class="description">Output of &#34;cat /etc/config/wireless&#34; : </span><br /><br />';
+ var ifconfig = '<br /><br /><span class="description">Output of &#34;ifconfig&#34; : </span><br /><br />';
+ var ipRoute = '<br /><br /><span class="description">Output of &#34;route -n&#34; : </span><br /><br />';
+ var ipRuleShow = '<br /><br /><span class="description">Output of &#34;ip rule show&#34; : </span><br /><br />';
+ var routeListTable = '<br /><br /><span class="description">Output of &#34;ip route list table 1-250&#34; : </span><br /><br />';
+ var firewallOut = '<br /><br /><span class="description">Firewall default output policy (must be ACCEPT) : </span><br /><br />';
+ var iptables = '<br /><br /><span class="description">Output of &#34;iptables -L -t mangle -v -n&#34; : </span><br /><br />';
+ tshoot.innerHTML = String.format(
+ '<pre>%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s</pre>',
+ versions, mArray.versions[0], mwanConfig, mArray.mwanconfig[0], netConfig, mArray.netconfig[0],
+ wifiConfig, mArray.wificonfig[0], ifconfig, mArray.ifconfig[0], ipRoute, mArray.routeshow[0],
+ ipRuleShow, mArray.iprule[0], routeListTable, mArray.routelist[0], firewallOut, mArray.firewallout[0],
+ iptables, mArray.iptables[0]
+ );
+ }
+ else
+ {
+ tshoot.innerHTML = '<strong>Error collecting troubleshooting information</strong>';
+ }
+ }
+ );
+//]]></script>
+
+<div id="troubleshoot">
+ <fieldset class="cbi-section">
+ <legend><%:Troubleshooting Data%></legend>
+ <div id="troubleshoot_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div>
+ </fieldset>
+</div>
+
+<style type="text/css">
+ .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
+ max-width: none;
+ margin-left: 30px;
+ padding-right: 30px;
+ width: auto;
+ }
+ #troubleshoot {
+ background-color: #FFFFFF;
+ border: 1px dotted #555555;
+ padding: 20px;
+ }
+ #troubleshoot_text {
+ padding: 20px;
+ text-align: left;
+ }
+ .description {
+ background-color: rgb(78, 186, 241);
+ }
+</style>
+
+<%+footer%>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm
new file mode 100644
index 0000000000..5077674185
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm
@@ -0,0 +1,24 @@
+<ul class="cbi-tabmenu">
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
+ <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
+</ul>
+
+<style type="text/css">
+ .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
+ max-width: none;
+ margin: 0px 0px 0px 30px;
+ padding-right: 30px;
+ width: auto;
+ }
+ .cbi-section-node {
+ margin-top: 20px;
+ }
+ .cbi-section {
+ border: 1px dotted #555555;
+ padding: 20px;
+ }
+</style>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm b/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm
new file mode 100644
index 0000000000..99da4875b0
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm
@@ -0,0 +1,34 @@
+<style type="text/css">
+ .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
+ max-width: none;
+ margin-left: 30px;
+ padding-right: 30px;
+ width: auto;
+ }
+ table td { /* cells showing the configuration values */
+ padding: 0px;
+ text-align: center;
+ vertical-align: middle;
+ }
+ table th { /* column for configuration section name */
+ padding: 0px;
+ text-align: center;
+ vertical-align: middle;
+ }
+ table tbody th { /* column for configuration section name */
+ padding: 0px;
+ vertical-align: middle;
+ }
+ .cbi-section-node table div { /* rows */
+ padding-top: 5px;
+ }
+ table.cbi-section-table td.cbi-section-table-cell { /* sort buttons column */
+ text-align: center;
+ }
+ .cbi-section h3 {
+ color: rgb(85, 85, 85);
+ font-family: Trebuchet MS,Verdana,sans-serif;
+ font-style: italic;
+ font-weight: normal;
+ }
+</style>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm b/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm
new file mode 100644
index 0000000000..9329b92735
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm
@@ -0,0 +1,83 @@
+<script type="text/javascript">//<![CDATA[
+ XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "mwan", "overview", "interface_status")%>', null,
+ function(x, mArray)
+ {
+ var status = document.getElementById('mwan_status_text');
+ if (mArray.wans)
+ {
+ var temp = '';
+ for ( var i = 0; i < mArray.wans.length; i++ )
+ {
+ var stat = '';
+ var cssc = '';
+ switch (mArray.wans[i].status)
+ {
+ case 'online':
+ stat = 'Online (tracking active)';
+ cssc = 'wanon';
+ break;
+ case 'notMonitored':
+ stat = 'Online (tracking off)';
+ cssc = 'wanon';
+ break;
+ case 'offline':
+ stat = 'Offline';
+ cssc = 'wanoff';
+ break;
+ case 'notEnabled':
+ stat = 'Disabled';
+ cssc = 'wanoff';
+ break;
+ }
+ temp += String.format(
+ '<span class="%s"><strong>%s (<a href="%q">%s</a>)</strong><br />%s</span>',
+ cssc, mArray.wans[i].name, mArray.wans[i].link, mArray.wans[i].ifname, stat
+ );
+ }
+ status.innerHTML = temp;
+ }
+ else
+ {
+ status.innerHTML = '<strong>No MWAN interfaces found</strong>';
+ }
+ }
+ );
+//]]></script>
+
+<fieldset id="interface_field" class="cbi-section">
+ <legend><%:MWAN Interface Live Status%></legend>
+ <div id="mwan_status_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div>
+</fieldset>
+
+<style type="text/css">
+ .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
+ max-width: 1044px;
+ }
+ #interface_field {
+ padding: 12px 20px 20px 20px;
+ }
+ #mwan_status_text {
+ display: table;
+ font-size: 14px;
+ margin: auto;
+ max-width: 1044px;
+ min-width: 246px;
+ width: 100%;
+ }
+ .wanon {
+ background-color: rgb(144, 240, 144);
+ }
+ .wanoff {
+ background-color: rgb(240, 144, 144);
+ }
+ .wanon, .wanoff {
+ border-radius: 60px;
+ box-shadow: 0px 2px 5px -3px;
+ float: left;
+ margin: 8px 3px 0px 3px;
+ min-height: 30px;
+ min-width: 235px;
+ padding: 5px 10px 8px 10px;
+ text-align: center;
+ }
+</style>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm b/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm
new file mode 100644
index 0000000000..b80b9f3acf
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm
@@ -0,0 +1,51 @@
+<%+header%>
+
+<ul class="cbi-tabmenu">
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/overview")%>"><%:Interface Status%></a></li>
+ <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/overview/overview_detailed")%>"><%:Detailed Status%></a></li>
+</ul>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+ XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "mwan", "overview", "detailed_status")%>', null,
+ function(x, mArray)
+ {
+ var status = document.getElementById('mwan_detail_text');
+ if (mArray.mwandetail)
+ {
+ status.innerHTML = String.format('<pre>%s</pre>', mArray.mwandetail[0]);
+ }
+ else
+ {
+ status.innerHTML = '<strong>No detailed status information available</strong>';
+ }
+ }
+ );
+//]]></script>
+
+<div id="mwan_detail_status">
+ <fieldset class="cbi-section">
+ <legend><%:MWAN Detailed Status%></legend>
+ <div id="mwan_detail_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div>
+ </fieldset>
+</div>
+
+<style type="text/css">
+ .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
+ max-width: none;
+ margin-left: 30px;
+ padding-right: 30px;
+ width: auto;
+ }
+ #mwan_detail_status {
+ border: 1px dotted #555555;
+ background-color: #FFFFFF;
+ padding: 20px;
+ }
+ #mwan_detail_text {
+ padding: 20px;
+ text-align: left;
+ }
+</style>
+
+<%+footer%>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm b/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm
new file mode 100644
index 0000000000..472c7ce7fc
--- /dev/null
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm
@@ -0,0 +1,122 @@
+<%+header%>
+
+<ul class="cbi-tabmenu">
+ <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/overview")%>"><%:Interface Status%></a></li>
+ <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/overview/overview_detailed")%>"><%:Detailed Status%></a></li>
+</ul>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+ XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "mwan", "overview", "interface_status")%>', null,
+ function(x, mArray)
+ {
+ var statusDiv = document.getElementById('mwan_status_text');
+ if (mArray.wans)
+ {
+ var interfaceStatus = '';
+ for ( var i = 0; i < mArray.wans.length; i++ )
+ {
+ var status = '';
+ var css = '';
+ switch (mArray.wans[i].status)
+ {
+ case 'online':
+ status = 'Online (tracking active)';
+ css = 'wanon';
+ break;
+ case 'notMonitored':
+ status = 'Online (tracking off)';
+ css = 'wanon';
+ break;
+ case 'offline':
+ status = 'Offline';
+ css = 'wanoff';
+ break;
+ case 'notEnabled':
+ status = 'Disabled';
+ css = 'wanoff';
+ break;
+ }
+ interfaceStatus += String.format(
+ '<span class="%s"><strong>%s (<a href="%q">%s</a>)</strong><br />%s</span>',
+ css, mArray.wans[i].name, mArray.wans[i].link, mArray.wans[i].ifname, status
+ );
+ }
+ statusDiv.innerHTML = interfaceStatus;
+ }
+ else
+ {
+ statusDiv.innerHTML = '<strong>No MWAN interfaces found</strong>';
+ }
+
+ var logs = document.getElementById('mwan_statuslog_text');
+ if (mArray.mwanlog)
+ {
+ var mwanLog = 'Last 50 MWAN systemlog entries. Newest entries sorted at the top :';
+ logs.innerHTML = String.format('<pre>%s<br /><br />%s</pre>', mwanLog, mArray.mwanlog[0]);
+ }
+ else
+ {
+ logs.innerHTML = '<strong>No MWAN systemlog history found</strong>';
+ }
+ }
+ );
+//]]></script>
+
+<div id="mwan_interface_status">
+ <fieldset id="interface_field" class="cbi-section">
+ <legend><%:MWAN Interface Live Status%></legend>
+ <div id="mwan_status_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div>
+ </fieldset>
+ <fieldset class="cbi-section">
+ <legend><%:MWAN Interface Systemlog%></legend>
+ <div id="mwan_statuslog_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> Collecting data...</div>
+ </fieldset>
+</div>
+
+<style type="text/css">
+ .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
+ max-width: none;
+ margin-left: 30px;
+ padding-right: 30px;
+ width: auto;
+ }
+ #mwan_interface_status {
+ background-color: #FFFFFF;
+ border: 1px dotted #555555;
+ padding: 20px;
+ }
+ #interface_field {
+ padding: 12px 20px 20px 20px;
+ }
+ #mwan_status_text {
+ display: table;
+ font-size: 14px;
+ margin: auto;
+ max-width: 1044px;
+ min-width: 246px;
+ width: 100%;
+ }
+ .wanon {
+ background-color: rgb(144, 240, 144);
+ }
+ .wanoff {
+ background-color: rgb(240, 144, 144);
+ }
+ .wanon, .wanoff {
+ border-radius: 60px;
+ box-shadow: 0px 2px 5px -3px;
+ float: left;
+ margin: 8px 3px 0px 3px;
+ min-height: 30px;
+ min-width: 235px;
+ padding: 5px 10px 8px 10px;
+ text-align: center;
+ }
+ #mwan_statuslog_text {
+ padding: 20px;
+ text-align: left;
+ }
+</style>
+
+<%+footer%>
diff --git a/applications/luci-app-mwan3/po/ja/mwan3.po b/applications/luci-app-mwan3/po/ja/mwan3.po
new file mode 100644
index 0000000000..cae45b8a2f
--- /dev/null
+++ b/applications/luci-app-mwan3/po/ja/mwan3.po
@@ -0,0 +1,562 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid "%d hour"
+msgstr "%d 時間"
+
+msgid "%d minute"
+msgstr "%d 分"
+
+msgid "%d minutes"
+msgstr "%d 分"
+
+msgid "%d second"
+msgstr "%d 秒"
+
+msgid "%d seconds"
+msgstr "%d 秒"
+
+msgid ""
+"Acceptable values: 1-100. This many Tracking IP addresses must respond for "
+"the link to be deemed up"
+msgstr ""
+"利用å¯èƒ½ãªå€¤: 1-100。上記ã®è¿½è·¡ IP ã®åˆè¨ˆå€‹æ•°ã®ã†ã¡ã€Up 状態ã¨åˆ¤å®šã™ã‚‹ãŸã‚ã«"
+"ã«å¿…è¦ãªã€ãƒ¬ã‚¹ãƒãƒ³ã‚¹ãŒè¿”ã•ã‚ŒãŸè¿½è·¡ IP アドレスã®å€‹æ•°ã§ã™ã€‚"
+
+msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
+msgstr "利用å¯èƒ½ãªå€¤: 1-1000。空欄ã®å ´åˆã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯1ã§ã™ã€‚"
+
+msgid "Advanced"
+msgstr "詳細設定"
+
+msgid "Check IP rules"
+msgstr "IP ルールã®ãƒã‚§ãƒƒã‚¯"
+
+msgid "Check routing table"
+msgstr "ルーティング テーブルã®ãƒã‚§ãƒƒã‚¯"
+
+msgid "Configuration"
+msgstr "設定"
+
+msgid "Currently Configured Interfaces"
+msgstr "設定済ã¿ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹"
+
+msgid "Currently Configured Members"
+msgstr "設定済ã¿ãƒ¡ãƒ³ãƒãƒ¼"
+
+msgid "Currently Configured Policies"
+msgstr "設定済ã¿ãƒãƒªã‚·ãƒ¼"
+
+msgid "Destination address"
+msgstr "宛先アドレス"
+
+msgid "Destination port"
+msgstr "宛先ãƒãƒ¼ãƒˆ"
+
+msgid "Detailed Status"
+msgstr "詳細ステータス"
+
+msgid "Diagnostic Results"
+msgstr "診断çµæžœ"
+
+msgid "Diagnostics"
+msgstr "診断機能"
+
+msgid ""
+"Downed interface will be deemed up after this many successful ping tests"
+msgstr ""
+"Down 状態ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ãŒ Up 状態ã¨åˆ¤æ–­ã•ã‚Œã‚‹ã¾ã§ã«è¦ã™ã‚‹ ping テストã®æˆ"
+"功回数ã§ã™ã€‚"
+
+msgid "Enabled"
+msgstr "有効"
+
+msgid "Errors"
+msgstr "エラー"
+
+msgid "Failure interval"
+msgstr "障害検出 インターãƒãƒ«"
+
+msgid "Flush conntrack table"
+msgstr ""
+
+msgid "Flush global firewall conntrack table on interface events"
+msgstr ""
+
+msgid "Hotplug Script"
+msgstr "ホットプラグ スクリプト"
+
+msgid "Hotplug ifdown"
+msgstr "ホットプラグ ifdown"
+
+msgid "Hotplug ifup"
+msgstr "ホットプラグ ifup"
+
+msgid "IPset"
+msgstr "IPset"
+
+msgid "IPv4"
+msgstr "IPv4"
+
+msgid "IPv6"
+msgstr "IPv6"
+
+msgid "Interface"
+msgstr "インターフェース"
+
+msgid "Interface Status"
+msgstr "インターフェース ステータス"
+
+msgid "Interface down"
+msgstr "インターフェース Down"
+
+msgid "Interface up"
+msgstr "インターフェース Up"
+
+msgid "Interface will be deemed down after this many failed ping tests"
+msgstr ""
+"インターフェース㌠Down 状態ã¨åˆ¤æ–­ã•ã‚Œã‚‹ã¾ã§ã«è¦ã™ã‚‹ ping テストã®å¤±æ•—回数ã§"
+"ã™ã€‚"
+
+msgid "Interfaces"
+msgstr "インターフェース"
+
+msgid "Internet Protocol"
+msgstr "インターãƒãƒƒãƒˆ プロトコル"
+
+msgid "Last resort"
+msgstr "最終手段"
+
+msgid "Load Balancing"
+msgstr "è² è·åˆ†æ•£"
+
+msgid "Loading"
+msgstr "読込中"
+
+msgid "MWAN Config"
+msgstr "MWAN 設定"
+
+msgid "MWAN Detailed Status"
+msgstr "MWAN 詳細ステータス"
+
+msgid "MWAN Interface Configuration"
+msgstr "MWAN インターフェース設定"
+
+msgid "MWAN Interface Configuration - %s"
+msgstr "MWAN インターフェース設定 - %s"
+
+msgid "MWAN Interface Diagnostics"
+msgstr "MWAN インターフェース診断"
+
+msgid "MWAN Interface Live Status"
+msgstr "MWAN インターフェース Live ステータス"
+
+msgid "MWAN Interface Systemlog"
+msgstr "MWAN インターフェース システムログ"
+
+msgid "MWAN Member Configuration"
+msgstr "MWAN メンãƒãƒ¼è¨­å®š"
+
+msgid "MWAN Member Configuration - %s"
+msgstr "MWAN メンãƒãƒ¼è¨­å®š - %s"
+
+msgid "MWAN Policy Configuration"
+msgstr "MWAN ãƒãƒªã‚·ãƒ¼è¨­å®š"
+
+msgid "MWAN Policy Configuration - %s"
+msgstr "MWAN ãƒãƒªã‚·ãƒ¼è¨­å®š - %s"
+
+msgid "MWAN Rule Configuration"
+msgstr "MWAN ルール設定"
+
+msgid "MWAN Rule Configuration - %s"
+msgstr "MWAN ルール設定 - %s"
+
+msgid "MWAN Service Control"
+msgstr "MWAN サービス コントロール"
+
+msgid ""
+"MWAN supports up to 250 physical and/or logical interfaces<br />MWAN "
+"requires that all interfaces have a unique metric configured in /etc/config/"
+"network<br />Names must match the interface name found in /etc/config/"
+"network (see advanced tab)<br />Names may contain characters A-Z, a-z, 0-9, "
+"_ and no spaces<br />Interfaces may not share the same name as configured "
+"members, policies or rules"
+msgstr ""
+"MWAN ã¯ã€250個ã¾ã§ã®ç‰©ç†ã¾ãŸã¯è«–ç†ã€ã‚ã‚‹ã„ã¯ä¸¡æ–¹ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã‚’サãƒãƒ¼ãƒˆ"
+"ã—ã¾ã™ã€‚<br />MWAN ã¯ã€å…¨ã¦ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ãŒ /etc/config/network ã§è¨­å®šã•"
+"れるユニークãªãƒ¡ãƒˆãƒªãƒƒã‚¯ã‚’æŒã¤ã“ã¨ã‚’å¿…è¦ã¨ã—ã¾ã™ã€‚<br />下記 \"インターフェー"
+"ス\" ã®åå‰ã¯ã€ /etc/config/network ã«å­˜åœ¨ã™ã‚‹ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹åã¨åŒã˜ã§ãªã‘"
+"ã‚Œã°ãªã‚Šã¾ã›ã‚“(詳細設定タブを確èªï¼‰ã€‚<br />åå‰ã¯ A-Z, a-z, 0-9, _ ã‚’å«ã‚€ã“"
+"ã¨ãŒã§ãã¾ã™ãŒã€ã‚¹ãƒšãƒ¼ã‚¹ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。<br />インターフェースã«ã¯ã€è¨­å®šæ¸ˆ"
+"ã¿ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚„ãƒãƒªã‚·ãƒ¼ã€ãƒ«ãƒ¼ãƒ«ã¨åŒã˜åå‰ã‚’使用ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
+
+msgid ""
+"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
+"as a portrange (eg \"1024:2048\") without quotes"
+msgstr ""
+"å˜ä¸€ã¾ãŸã¯è¤‡æ•°ã®ãƒãƒ¼ãƒˆï¼ˆä¾‹: \"22\" ã¾ãŸã¯ \"80,443\")ã€ã‚ã‚‹ã„ã¯ãƒãƒ¼ãƒˆã®ç¯„囲"
+"(例: \"1024:2048\")をã€ã‚¯ã‚ªãƒ¼ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ç„¡ã—ã§æŒ‡å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+msgid "Member used"
+msgstr "使用ã•ã‚Œã‚‹ãƒ¡ãƒ³ãƒãƒ¼"
+
+msgid "Members"
+msgstr "メンãƒãƒ¼"
+
+msgid ""
+"Members are profiles attaching a metric and weight to an MWAN interface<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Members "
+"may not share the same name as configured interfaces, policies or rules"
+msgstr ""
+"メンãƒãƒ¼ã¯ã€MWAN インターフェースã®ãƒ¡ãƒˆãƒªãƒƒã‚¯ãŠã‚ˆã³ã‚¦ã‚¨ã‚¤ãƒˆã‚’関連付ã‘ãŸãƒ—ロ"
+"ファイルã§ã™ã€‚<br />åå‰ã¯ A-Z, a-z, 0-9, _ ã‚’å«ã‚€ã“ã¨ãŒã§ãã¾ã™ãŒã€ã‚¹ãƒšãƒ¼ã‚¹"
+"ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。<br />メンãƒãƒ¼ã«ã¯ã€è¨­å®šæ¸ˆã¿ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã‚„ãƒãƒªã‚·ãƒ¼ã€"
+"ルールã¨åŒã˜åå‰ã‚’使用ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
+
+msgid "Members assigned"
+msgstr "アサイン済ã¿ãƒ¡ãƒ³ãƒãƒ¼"
+
+msgid "Metric"
+msgstr "メトリック"
+
+msgid ""
+"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")"
+msgstr ""
+"IPset ルールã®åå‰ã§ã™ã€‚ã“ã®ãƒ«ãƒ¼ãƒ«ã¯ã€ /etc/dnsmasq.conf ã§å¿…è¦ã§ã™ã€‚(例: "
+"\"ipset=/youtube.com/youtube\")"
+
+msgid "Network Config"
+msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯è¨­å®š"
+
+msgid "No"
+msgstr "ã„ã„ãˆ"
+
+msgid "Overview"
+msgstr "概è¦"
+
+msgid "Ping count"
+msgstr "Ping 回数"
+
+msgid "Ping default gateway"
+msgstr "Ping デフォルト ゲートウェイ"
+
+msgid "Ping interval"
+msgstr "Ping インターãƒãƒ«"
+
+msgid "Ping interval during failure detection"
+msgstr "障害検出動作中㮠Ping 実行間隔ã§ã™ã€‚"
+
+msgid "Ping interval during failure recovering"
+msgstr "障害復旧中㮠Ping 実行間隔ã§ã™ã€‚"
+
+msgid "Ping size"
+msgstr "Ping サイズ"
+
+msgid "Ping timeout"
+msgstr "Ping タイムアウト"
+
+msgid "Ping tracking IP"
+msgstr "Ping トラッキング IP"
+
+msgid "Policies"
+msgstr "ãƒãƒªã‚·ãƒ¼"
+
+msgid ""
+"Policies are profiles grouping one or more members controlling how MWAN "
+"distributes traffic<br />Member interfaces with lower metrics are used "
+"first. Interfaces with the same metric load-balance<br />Load-balanced "
+"member interfaces distribute more traffic out those with higher weights<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
+"15 characters or less<br />Policies may not share the same name as "
+"configured interfaces, members or rules"
+msgstr ""
+"ãƒãƒªã‚·ãƒ¼ã¯ã€MWANãŒã©ã®ã‚ˆã†ã«ãƒˆãƒ©ãƒ•ã‚£ãƒƒã‚¯ã®åˆ†é…ã‚’è¡Œã†ã‹ã‚’制御ã™ã‚‹ã€1ã¤ä»¥ä¸Šã®ãƒ¡"
+"ンãƒãƒ¼ã‚’グループ化ã™ã‚‹ãƒ—ロファイルã§ã™ã€‚<br />最å°ã®ãƒ¡ãƒˆãƒªãƒƒã‚¯ã‚’æŒã¤ãƒ¡ãƒ³ãƒãƒ¼ "
+"インターフェースãŒæœ€åˆã«ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚åŒã˜ãƒ¡ãƒˆãƒªãƒƒã‚¯ã‚’æŒã¤è¤‡æ•°ã®ã‚¤ãƒ³ã‚¿ãƒ¼"
+"フェースã§ã¯ã€è² è·åˆ†æ•£ã‚’è¡Œã„ã¾ã™ã€‚<br />è² è·åˆ†æ•£ã«è¨­å®šã•ã‚ŒãŸãƒ¡ãƒ³ãƒãƒ¼ インター"
+"フェースã§ã¯ã€ã‚¦ã‚§ã‚¤ãƒˆã®å€¤ãŒå¤§ãã„æ–¹ã«ã‚ˆã‚Šå¤šãã®ãƒˆãƒ©ãƒ•ã‚£ãƒƒã‚¯ã‚’分é…ã—ã¾ã™ã€‚"
+"<br />åå‰ã¯ A-Z, a-z, 0-9, _ ã‚’å«ã‚€ã“ã¨ãŒã§ãã¾ã™ãŒã€ã‚¹ãƒšãƒ¼ã‚¹ã¯ä½¿ç”¨ã§ãã¾ã›"
+"ん。ã¾ãŸã€15文字以内ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。<br />ãƒãƒªã‚·ãƒ¼ã§ã¯ã€è¨­å®šæ¸ˆã¿ã®ã‚¤ãƒ³"
+"ターフェースやメンãƒãƒ¼ã€ãƒ«ãƒ¼ãƒ«ã¨åŒã˜åå‰ã‚’使用ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
+
+msgid "Policy assigned"
+msgstr "アサイン済ã¿ãƒãƒªã‚·ãƒ¼"
+
+msgid "Protocol"
+msgstr "プロトコル"
+
+msgid "Recovery interval"
+msgstr "障害復旧 インターãƒãƒ«"
+
+msgid "Restart MWAN"
+msgstr "MWAN ã®å†èµ·å‹•"
+
+msgid "Restore default hotplug script"
+msgstr "デフォルトã®ãƒ›ãƒƒãƒˆãƒ—ラグ スクリプトã®å¾©å…ƒ"
+
+msgid "Restore..."
+msgstr "復元..."
+
+msgid "Rules"
+msgstr "ルール"
+
+msgid ""
+"Rules specify which traffic will use a particular MWAN policy based on IP "
+"address, port or protocol<br />Rules are matched from top to bottom. Rules "
+"below a matching rule are ignored. Traffic not matching any rule is routed "
+"using the main routing table<br />Traffic destined for known (other than "
+"default) networks is handled by the main routing table. Traffic matching a "
+"rule, but all WAN interfaces for that policy are down will be blackholed<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Rules may "
+"not share the same name as configured interfaces, members or policies"
+msgstr ""
+"ルール㯠IP アドレスやãƒãƒ¼ãƒˆã€ãƒ—ロトコルを基ã«ã€ãƒˆãƒ©ãƒ•ã‚£ãƒƒã‚¯ãŒã©ã® MWAN ãƒãƒª"
+"シーを使用ã™ã‚‹ã‹ã‚’設定ã—ã¾ã™ã€‚<br />ルールã¯ä¸Šã‹ã‚‰ä¸‹ã¸ãƒžãƒƒãƒãƒ³ã‚°ãŒè¡Œã‚ã‚Œã€åˆ"
+"致ã—ãŸãƒ«ãƒ¼ãƒ«ã‚ˆã‚Šä¸‹ã®ãƒ«ãƒ¼ãƒ«ã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚å…¨ã¦ã®ãƒ«ãƒ¼ãƒ«ã«åˆè‡´ã—ãªã„トラフィッ"
+"クã¯ã€ãƒ¡ã‚¤ãƒ³ã®ãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚° テーブルを使用ã—ã¦ãƒ«ãƒ¼ãƒˆãŒæ±ºå®šã•ã‚Œã¾ã™ã€‚<br />既知"
+"(デフォルト以外)ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã¸ã®ãƒˆãƒ©ãƒ•ã‚£ãƒƒã‚¯ã¯ã€ãƒ¡ã‚¤ãƒ³ã®ãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚° テー"
+"ブルã«ã‚ˆã£ã¦åˆ¶å¾¡ã•ã‚Œã¾ã™ã€‚ルールã«åˆè‡´ã—ãŸãƒˆãƒ©ãƒ•ã‚£ãƒƒã‚¯ã§ã‚‚ã€å½“該ãƒãƒªã‚·ãƒ¼ã®å…¨ "
+"WAN インターフェース㌠Down 状態ã®å ´åˆã¯ blackhole 状態ã¨ãªã‚Šã¾ã™ã€‚<br />åå‰"
+"㯠A-Z, a-z, 0-9, _ ã‚’å«ã‚€ã“ã¨ãŒã§ãã¾ã™ãŒã€ã‚¹ãƒšãƒ¼ã‚¹ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。<br />"
+"ルールã¯ã€è¨­å®šæ¸ˆã¿ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã‚„メンãƒãƒ¼ã€ãƒãƒªã‚·ãƒ¼ã¨åŒã˜åå‰ã‚’使用ã™ã‚‹"
+"ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
+
+msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
+msgstr "秒。利用å¯èƒ½ãªå€¤: 1-1000000。空欄ã®å ´åˆã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¯600ã§ã™ã€‚"
+
+msgid "Source address"
+msgstr "é€ä¿¡å…ƒã‚¢ãƒ‰ãƒ¬ã‚¹"
+
+msgid "Source port"
+msgstr "é€ä¿¡å…ƒãƒãƒ¼ãƒˆ"
+
+msgid "Start MWAN"
+msgstr "MWAN ã®èµ·å‹•"
+
+msgid "Sticky"
+msgstr "Sticky"
+
+msgid "Sticky timeout"
+msgstr "Sticky タイムアウト"
+
+msgid "Stop MWAN"
+msgstr "MWAN ã®åœæ­¢"
+
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgstr "CIDR 表記ã®ã‚µãƒãƒ¼ãƒˆï¼ˆä¾‹: \"192.168.100.0/24\")"
+
+msgid "There are currently %d of 250 supported interfaces configured"
+msgstr "ç¾åœ¨ã€250個中 %d 個ã®ã‚µãƒãƒ¼ãƒˆã•ã‚ŒãŸã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ãŒè¨­å®šæ¸ˆã¿ã§ã™ã€‚"
+
+msgid ""
+"This IP address will be pinged to dermine if the link is up or down. Leave "
+"blank to assume interface is always online"
+msgstr ""
+"ã“れらã¯ã€ãƒªãƒ³ã‚¯ã® Up ã¾ãŸã¯ Down を判定ã™ã‚‹ãŸã‚ã« Ping ãŒé€ä¿¡ã•ã‚Œã‚‹IP アドレ"
+"スã§ã™ã€‚常ã«ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã¨ã™ã‚‹å ´åˆã€ç©ºæ¬„ã®ã¾ã¾ã«ã—ã¾ã™ã€‚"
+
+msgid ""
+"This displays the metric assigned to this interface in /etc/config/network"
+msgstr ""
+"/etc/config/network ã§ã€ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸãƒ¡ãƒˆãƒªãƒƒã‚¯ã§ã™ã€‚"
+
+msgid "This section allows you to modify the contents of /etc/config/mwan3"
+msgstr ""
+"ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€ /etc/config/mwan3 ã®å†…容を変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+msgid "This section allows you to modify the contents of /etc/config/network"
+msgstr ""
+"ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€ /etc/config/network ã®å†…容を変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+msgid "This section allows you to modify the contents of /etc/config/wireless"
+msgstr ""
+"ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€ /etc/config/wireless ã®å†…容を変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+msgid ""
+"This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
+"mwancustom<br />This is useful for running system commands and/or scripts "
+"based on interface ifup or ifdown hotplug events<br /><br />Notes:<br />The "
+"first line of the script must be &#34;#!/bin/sh&#34; without quotes<br /"
+">Lines beginning with # are comments and are not executed<br /><br /"
+">Available variables:<br />$ACTION is the hotplug event (ifup, ifdown)<br />"
+"$INTERFACE is the interface name (wan1, wan2, etc.)<br />$DEVICE is the "
+"device name attached to the interface (eth0.1, eth1, etc.)"
+msgstr ""
+"ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€ /etc/hotplug.d/iface/16-mwancustom ã®å†…容を変更ã™ã‚‹ã“ã¨"
+"ãŒã§ãã¾ã™ã€‚<br />ã“ã‚Œã¯ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã® ifup ã¾ãŸã¯ ifdown ホットプラグ "
+"イベント時ã«ã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒžãƒ³ãƒ‰ã¾ãŸã¯ã‚¹ã‚¯ãƒªãƒ—トã€ã‚‚ã—ãã¯ãã®ä¸¡æ–¹ã‚’実行ã™ã‚‹ã“ã¨"
+"ã«å½¹ç«‹ã¡ã¾ã™ã€‚<br /><br />注æ„:<br />スクリプトã®1行目ã¯ã€&#34;#!bin/sh&#34; "
+"ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼ˆã‚¯ã‚ªãƒ¼ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ä¸è¦ï¼‰ã€‚<br /># ã§å§‹ã¾ã‚‹è¡Œã¯ã‚³ãƒ¡ãƒ³ãƒˆã¨"
+"ã—ã¦èªè­˜ã•ã‚Œã€å®Ÿè¡Œã•ã‚Œã¾ã›ã‚“。<br /><br />利用å¯èƒ½ãªå¤‰æ•°:<br />$ACTION - ホッ"
+"トプラグ イベント (ifup, ifdown)<br />$INTERFACE - インターフェースå(wan1, "
+"wan2, ãã®ä»–)<br />$DEVICE - インターフェースã«ã‚¢ã‚¿ãƒƒãƒã•ã‚ŒãŸãƒ‡ãƒã‚¤ã‚¹ã®åå‰"
+"(eth0.1, eth1, ãã®ä»–)"
+
+msgid "Tracking IP"
+msgstr "追跡 IP"
+
+msgid "Tracking reliability"
+msgstr "追跡ã®ä¿¡é ¼æ€§"
+
+msgid "Traffic Rules"
+msgstr "トラフィック ルール"
+
+msgid ""
+"Traffic from the same source IP address that previously matched this rule "
+"within the sticky timeout period will use the same WAN interface"
+msgstr ""
+"以å‰ã“ã®ãƒ«ãƒ¼ãƒ«ã«ãƒžãƒƒãƒã—ãŸåŒã˜ã‚¢ã‚¯ã‚»ã‚¹å…ƒ IP アドレスã‹ã‚‰ã®ãƒˆãƒ©ãƒ•ã‚£ãƒƒã‚¯ãŒã€å†"
+"度 Sticky 制é™æ™‚間内ã«ãƒžãƒƒãƒã—ãŸå ´åˆã«ã¯ã€åŒã˜ WAN インターフェースãŒä½¿ç”¨ã•ã‚Œ"
+"ã¾ã™ã€‚"
+
+msgid "Troubleshooting"
+msgstr "トラブルシューティング"
+
+msgid "Troubleshooting Data"
+msgstr "トラブルシューティング データ"
+
+msgid "View the contents of /etc/protocols for protocol descriptions"
+msgstr "プロトコルã®èª¬æ˜Žã«ã¤ã„ã¦ã¯ã€ /etc/protocols ã®å†…容を確èªã—ã¦ãã ã•ã„。"
+
+msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
+msgstr ""
+"警告: %d 個ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ãŒã€æœ€å¤§å€‹æ•°ã® 250個 を超ãˆã¦è¨­å®šã•ã‚Œã¦ã„ã¾ã™ï¼"
+
+msgid ""
+"WARNING: Some policies have names exceeding the maximum of 15 characters!"
+msgstr ""
+"警告: 最大文字数㮠15 文字を超ãˆã‚‹åå‰ãŒè¨­å®šã•ã‚Œã¦ã„ã‚‹ãƒãƒªã‚·ãƒ¼ãŒã‚ã‚Šã¾ã™ï¼"
+
+msgid ""
+"WARNING: some interfaces are configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+"警告: 設定を誤ã£ã¦ã„ã‚‹ã‹ã€ã‚‚ã—ãã¯å®Œå…¨ã«è¨­å®šã•ã‚Œã¦ã„ãªã„インターフェースãŒã‚"
+"ã‚Šã¾ã™ï¼"
+
+msgid ""
+"WARNING: some interfaces have a higher reliability requirement than there "
+"are tracking IP addresses!"
+msgstr ""
+"警告: 追跡 IP アドレスã®å€‹æ•°ã‚ˆã‚Šå¤§ãã„追跡信頼性ã®å€¤ãŒè¨­å®šã•ã‚ŒãŸã‚¤ãƒ³ã‚¿ãƒ¼"
+"フェースãŒã‚ã‚Šã¾ã™ï¼"
+
+msgid ""
+"WARNING: some interfaces have duplicate metrics configured in /etc/config/"
+"network!"
+msgstr ""
+"警告: /etc/config/network ã§ã€é‡è¤‡ã™ã‚‹ãƒ¡ãƒˆãƒªãƒƒã‚¯ã‚’設定ã•ã‚Œã¦ã„るインター"
+"フェースãŒã‚ã‚Šã¾ã™ï¼"
+
+msgid ""
+"WARNING: some interfaces have no default route in the main routing table!"
+msgstr ""
+"警告: メインã®ãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚° テーブルã§ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ ルートを設定ã•ã‚Œã¦ã„ãªã„イ"
+"ンターフェースãŒã‚ã‚Šã¾ã™ï¼"
+
+msgid ""
+"WARNING: some interfaces have no metric configured in /etc/config/network!"
+msgstr ""
+"警告: /etc/config/network ã§ã€ãƒ¡ãƒˆãƒªãƒƒã‚¯ã‚’設定ã•ã‚Œã¦ã„ãªã„インターフェースãŒ"
+"ã‚ã‚Šã¾ã™ï¼"
+
+msgid ""
+"WARNING: some rules have a port configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+"警告: ä¸é©åˆ‡ãªãƒ—ロトコルãŒæŒ‡å®šã•ã‚Œã¦ã„ã‚‹ã€ã¾ãŸã¯ä½•ã‚‚指定ã•ã‚Œã¦ã„ãªã„ãƒãƒ¼ãƒˆã‚’"
+"設定ã•ã‚ŒãŸãƒ«ãƒ¼ãƒ«ãŒã‚ã‚Šã¾ã™ï¼ãƒ—ロトコルを指定ã—ç›´ã—ã¦ãã ã•ã„ï¼"
+
+msgid ""
+"WARNING: this and other interfaces have duplicate metrics configured in /etc/"
+"config/network!"
+msgstr ""
+"警告: ã“ã‚Œã¨ä»–ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã§é‡è¤‡ã™ã‚‹ãƒ¡ãƒˆãƒªãƒƒã‚¯ãŒ /etc/config/network ã«"
+"設定ã•ã‚Œã¦ã„ã¾ã™ï¼"
+
+msgid ""
+"WARNING: this interface has a higher reliability requirement than there are "
+"tracking IP addresses!"
+msgstr ""
+"警告: ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã¯ã€è¿½è·¡ IP アドレスã®å€‹æ•°ã‚ˆã‚Šå¤§ãã„追跡信頼性ã®å€¤"
+"を設定ã•ã‚Œã¦ã„ã¾ã™ï¼"
+
+msgid "WARNING: this interface has no default route in the main routing table!"
+msgstr ""
+"警告: ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã¯ã€ãƒ¡ã‚¤ãƒ³ã®ãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚° テーブルã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ ルー"
+"トãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“ï¼"
+
+msgid ""
+"WARNING: this interface has no metric configured in /etc/config/network!"
+msgstr ""
+"警告: ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã¯ã€ /etc/config/network ã§ãƒ¡ãƒˆãƒªãƒƒã‚¯ãŒè¨­å®šã•ã‚Œã¦ã„"
+"ã¾ã›ã‚“ï¼"
+
+msgid ""
+"WARNING: this interface is configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+"警告: ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã¯ /etc/config/network ã§è¨­å®šãŒèª¤ã£ã¦ã„ã‚‹ã‹ã€ã‚‚ã—ã"
+"ã¯å®Œå…¨ã«è¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“ï¼"
+
+msgid ""
+"WARNING: this policy's name is %d characters exceeding the maximum of 15!"
+msgstr ""
+"警告: ã“ã®ãƒãƒªã‚·ãƒ¼ã®åå‰ã¯ã€æœ€å¤§æ–‡å­—æ•° 15 文字を超ãˆã‚‹ %d 文字ãŒè¨­å®šã•ã‚Œã¦ã„"
+"ã¾ã™ï¼"
+
+msgid ""
+"WARNING: this rule is incorrectly configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+"警告: ã“ã®ãƒ«ãƒ¼ãƒ«ã¯ä¸é©åˆ‡ãªãƒ—ロトコルãŒæŒ‡å®šã•ã‚Œã¦ã„ã‚‹ã‹ã€ã¾ãŸã¯ä½•ã‚‚指定ã•ã‚Œã¦"
+"ã„ã¾ã›ã‚“ï¼ãƒ—ロトコルを指定ã—ç›´ã—ã¦ãã ã•ã„ï¼"
+
+msgid "Weight"
+msgstr "ウエイト"
+
+msgid ""
+"When all policy members are offline use this behavior for matched traffic"
+msgstr ""
+"ãƒãƒªã‚·ãƒ¼ã®å…¨ãƒ¡ãƒ³ãƒãƒ¼ãŒã‚ªãƒ•ãƒ©ã‚¤ãƒ³ã®å ´åˆã€åˆè‡´ã—ãŸãƒˆãƒ©ãƒ•ã‚£ãƒƒã‚¯ã«å¯¾ã—ã¦ã“ã®ãµã‚‹"
+"ã¾ã„ãŒä½¿ç”¨ã•ã‚Œã¾ã™ã€‚"
+
+msgid "Wireless Config"
+msgstr "無線設定"
+
+msgid "Yes"
+msgstr "ã¯ã„"
+
+msgid "always"
+msgstr "always"
+
+msgid "blackhole (drop)"
+msgstr "blackhole (drop)"
+
+msgid "default (use main routing table)"
+msgstr "デフォルト(メインã®ãƒ«ãƒ¼ãƒ†ã‚£ãƒ³ã‚° テーブルを使用)"
+
+msgid "ifdown"
+msgstr "ifdown"
+
+msgid "ifup"
+msgstr "ifup"
+
+msgid "never"
+msgstr "never"
+
+msgid "unreachable (reject)"
+msgstr "unreachable (reject)"
diff --git a/applications/luci-app-mwan3/po/templates/mwan3.pot b/applications/luci-app-mwan3/po/templates/mwan3.pot
new file mode 100644
index 0000000000..0bda248fae
--- /dev/null
+++ b/applications/luci-app-mwan3/po/templates/mwan3.pot
@@ -0,0 +1,464 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "%d hour"
+msgstr ""
+
+msgid "%d minute"
+msgstr ""
+
+msgid "%d minutes"
+msgstr ""
+
+msgid "%d second"
+msgstr ""
+
+msgid "%d seconds"
+msgstr ""
+
+msgid ""
+"Acceptable values: 1-100. This many Tracking IP addresses must respond for "
+"the link to be deemed up"
+msgstr ""
+
+msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Check IP rules"
+msgstr ""
+
+msgid "Check routing table"
+msgstr ""
+
+msgid "Configuration"
+msgstr ""
+
+msgid "Currently Configured Interfaces"
+msgstr ""
+
+msgid "Currently Configured Members"
+msgstr ""
+
+msgid "Currently Configured Policies"
+msgstr ""
+
+msgid "Destination address"
+msgstr ""
+
+msgid "Destination port"
+msgstr ""
+
+msgid "Detailed Status"
+msgstr ""
+
+msgid "Diagnostic Results"
+msgstr ""
+
+msgid "Diagnostics"
+msgstr ""
+
+msgid ""
+"Downed interface will be deemed up after this many successful ping tests"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
+msgid "Errors"
+msgstr ""
+
+msgid "Failure interval"
+msgstr ""
+
+msgid "Flush conntrack table"
+msgstr ""
+
+msgid "Flush global firewall conntrack table on interface events"
+msgstr ""
+
+msgid "Hotplug Script"
+msgstr ""
+
+msgid "Hotplug ifdown"
+msgstr ""
+
+msgid "Hotplug ifup"
+msgstr ""
+
+msgid "IPset"
+msgstr ""
+
+msgid "IPv4"
+msgstr ""
+
+msgid "IPv6"
+msgstr ""
+
+msgid "Interface"
+msgstr ""
+
+msgid "Interface Status"
+msgstr ""
+
+msgid "Interface down"
+msgstr ""
+
+msgid "Interface up"
+msgstr ""
+
+msgid "Interface will be deemed down after this many failed ping tests"
+msgstr ""
+
+msgid "Interfaces"
+msgstr ""
+
+msgid "Internet Protocol"
+msgstr ""
+
+msgid "Last resort"
+msgstr ""
+
+msgid "Load Balancing"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "MWAN Config"
+msgstr ""
+
+msgid "MWAN Detailed Status"
+msgstr ""
+
+msgid "MWAN Interface Configuration"
+msgstr ""
+
+msgid "MWAN Interface Configuration - %s"
+msgstr ""
+
+msgid "MWAN Interface Diagnostics"
+msgstr ""
+
+msgid "MWAN Interface Live Status"
+msgstr ""
+
+msgid "MWAN Interface Systemlog"
+msgstr ""
+
+msgid "MWAN Member Configuration"
+msgstr ""
+
+msgid "MWAN Member Configuration - %s"
+msgstr ""
+
+msgid "MWAN Policy Configuration"
+msgstr ""
+
+msgid "MWAN Policy Configuration - %s"
+msgstr ""
+
+msgid "MWAN Rule Configuration"
+msgstr ""
+
+msgid "MWAN Rule Configuration - %s"
+msgstr ""
+
+msgid "MWAN Service Control"
+msgstr ""
+
+msgid ""
+"MWAN supports up to 250 physical and/or logical interfaces<br />MWAN "
+"requires that all interfaces have a unique metric configured in /etc/config/"
+"network<br />Names must match the interface name found in /etc/config/"
+"network (see advanced tab)<br />Names may contain characters A-Z, a-z, 0-9, "
+"_ and no spaces<br />Interfaces may not share the same name as configured "
+"members, policies or rules"
+msgstr ""
+
+msgid ""
+"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
+"as a portrange (eg \"1024:2048\") without quotes"
+msgstr ""
+
+msgid "Member used"
+msgstr ""
+
+msgid "Members"
+msgstr ""
+
+msgid ""
+"Members are profiles attaching a metric and weight to an MWAN interface<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Members "
+"may not share the same name as configured interfaces, policies or rules"
+msgstr ""
+
+msgid "Members assigned"
+msgstr ""
+
+msgid "Metric"
+msgstr ""
+
+msgid ""
+"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")"
+msgstr ""
+
+msgid "Network Config"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid "Ping count"
+msgstr ""
+
+msgid "Ping default gateway"
+msgstr ""
+
+msgid "Ping interval"
+msgstr ""
+
+msgid "Ping interval during failure detection"
+msgstr ""
+
+msgid "Ping interval during failure recovering"
+msgstr ""
+
+msgid "Ping size"
+msgstr ""
+
+msgid "Ping timeout"
+msgstr ""
+
+msgid "Ping tracking IP"
+msgstr ""
+
+msgid "Policies"
+msgstr ""
+
+msgid ""
+"Policies are profiles grouping one or more members controlling how MWAN "
+"distributes traffic<br />Member interfaces with lower metrics are used "
+"first. Interfaces with the same metric load-balance<br />Load-balanced "
+"member interfaces distribute more traffic out those with higher weights<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
+"15 characters or less<br />Policies may not share the same name as "
+"configured interfaces, members or rules"
+msgstr ""
+
+msgid "Policy assigned"
+msgstr ""
+
+msgid "Protocol"
+msgstr ""
+
+msgid "Recovery interval"
+msgstr ""
+
+msgid "Restart MWAN"
+msgstr ""
+
+msgid "Restore default hotplug script"
+msgstr ""
+
+msgid "Restore..."
+msgstr ""
+
+msgid "Rules"
+msgstr ""
+
+msgid ""
+"Rules specify which traffic will use a particular MWAN policy based on IP "
+"address, port or protocol<br />Rules are matched from top to bottom. Rules "
+"below a matching rule are ignored. Traffic not matching any rule is routed "
+"using the main routing table<br />Traffic destined for known (other than "
+"default) networks is handled by the main routing table. Traffic matching a "
+"rule, but all WAN interfaces for that policy are down will be blackholed<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Rules may "
+"not share the same name as configured interfaces, members or policies"
+msgstr ""
+
+msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
+msgstr ""
+
+msgid "Source address"
+msgstr ""
+
+msgid "Source port"
+msgstr ""
+
+msgid "Start MWAN"
+msgstr ""
+
+msgid "Sticky"
+msgstr ""
+
+msgid "Sticky timeout"
+msgstr ""
+
+msgid "Stop MWAN"
+msgstr ""
+
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgstr ""
+
+msgid "There are currently %d of 250 supported interfaces configured"
+msgstr ""
+
+msgid ""
+"This IP address will be pinged to dermine if the link is up or down. Leave "
+"blank to assume interface is always online"
+msgstr ""
+
+msgid ""
+"This displays the metric assigned to this interface in /etc/config/network"
+msgstr ""
+
+msgid "This section allows you to modify the contents of /etc/config/mwan3"
+msgstr ""
+
+msgid "This section allows you to modify the contents of /etc/config/network"
+msgstr ""
+
+msgid "This section allows you to modify the contents of /etc/config/wireless"
+msgstr ""
+
+msgid ""
+"This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
+"mwancustom<br />This is useful for running system commands and/or scripts "
+"based on interface ifup or ifdown hotplug events<br /><br />Notes:<br />The "
+"first line of the script must be &#34;#!/bin/sh&#34; without quotes<br /"
+">Lines beginning with # are comments and are not executed<br /><br /"
+">Available variables:<br />$ACTION is the hotplug event (ifup, ifdown)<br />"
+"$INTERFACE is the interface name (wan1, wan2, etc.)<br />$DEVICE is the "
+"device name attached to the interface (eth0.1, eth1, etc.)"
+msgstr ""
+
+msgid "Tracking IP"
+msgstr ""
+
+msgid "Tracking reliability"
+msgstr ""
+
+msgid "Traffic Rules"
+msgstr ""
+
+msgid ""
+"Traffic from the same source IP address that previously matched this rule "
+"within the sticky timeout period will use the same WAN interface"
+msgstr ""
+
+msgid "Troubleshooting"
+msgstr ""
+
+msgid "Troubleshooting Data"
+msgstr ""
+
+msgid "View the contents of /etc/protocols for protocol descriptions"
+msgstr ""
+
+msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
+msgstr ""
+
+msgid ""
+"WARNING: Some policies have names exceeding the maximum of 15 characters!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces are configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have a higher reliability requirement than there "
+"are tracking IP addresses!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have duplicate metrics configured in /etc/config/"
+"network!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have no default route in the main routing table!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have no metric configured in /etc/config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: some rules have a port configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+
+msgid ""
+"WARNING: this and other interfaces have duplicate metrics configured in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface has a higher reliability requirement than there are "
+"tracking IP addresses!"
+msgstr ""
+
+msgid "WARNING: this interface has no default route in the main routing table!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface has no metric configured in /etc/config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface is configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this policy's name is %d characters exceeding the maximum of 15!"
+msgstr ""
+
+msgid ""
+"WARNING: this rule is incorrectly configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid ""
+"When all policy members are offline use this behavior for matched traffic"
+msgstr ""
+
+msgid "Wireless Config"
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "always"
+msgstr ""
+
+msgid "blackhole (drop)"
+msgstr ""
+
+msgid "default (use main routing table)"
+msgstr ""
+
+msgid "ifdown"
+msgstr ""
+
+msgid "ifup"
+msgstr ""
+
+msgid "never"
+msgstr ""
+
+msgid "unreachable (reject)"
+msgstr ""
diff --git a/applications/luci-app-mwan3/po/zh-cn/mwan3.po b/applications/luci-app-mwan3/po/zh-cn/mwan3.po
new file mode 100644
index 0000000000..b8948b3163
--- /dev/null
+++ b/applications/luci-app-mwan3/po/zh-cn/mwan3.po
@@ -0,0 +1,510 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"Last-Translator: Hsing-Wang Liao <kuoruan@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: zh_CN\n"
+
+msgid "%d hour"
+msgstr "%d å°æ—¶"
+
+msgid "%d minute"
+msgstr "%d 分钟"
+
+msgid "%d minutes"
+msgstr "%d 分钟"
+
+msgid "%d second"
+msgstr "%d 秒"
+
+msgid "%d seconds"
+msgstr "%d 秒"
+
+msgid ""
+"Acceptable values: 1-100. This many Tracking IP addresses must respond for "
+"the link to be deemed up"
+msgstr ""
+"接å—的值: 1-100。这个设置项指定了当多少个IP地å€èƒ½å¤Ÿè¿žé€šæ—¶æŽ¥å£ä¼šè¢«è®¤ä¸ºåœ¨çº¿"
+
+msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
+msgstr "接å—的值: 1-100。如果ä¸å¡«å†™ï¼Œé»˜è®¤å€¼ä¸º 1"
+
+msgid "Advanced"
+msgstr "高级"
+
+msgid "Check IP rules"
+msgstr "检查IP规则"
+
+msgid "Check routing table"
+msgstr "检查路由表"
+
+msgid "Configuration"
+msgstr "é…ç½®"
+
+msgid "Currently Configured Interfaces"
+msgstr "当å‰é…置的接å£"
+
+msgid "Currently Configured Members"
+msgstr "当å‰é…置的æˆå‘˜"
+
+msgid "Currently Configured Policies"
+msgstr "当å‰é…置的策略"
+
+msgid "Destination address"
+msgstr "目标地å€"
+
+msgid "Destination port"
+msgstr "目标端å£"
+
+msgid "Detailed Status"
+msgstr "详细状æ€"
+
+msgid "Diagnostic Results"
+msgstr "诊断结果"
+
+msgid "Diagnostics"
+msgstr "诊断"
+
+msgid ""
+"Downed interface will be deemed up after this many successful ping tests"
+msgstr "当 Ping æˆåŠŸæ¬¡æ•°è¾¾åˆ°è¿™ä¸ªæ•°å€¼åŽï¼Œå·²ç»è¢«è®¤ä¸ºç¦»çº¿çš„接å£å°†ä¼šé‡æ–°ä¸Šçº¿"
+
+msgid "Enabled"
+msgstr "å¯ç”¨"
+
+msgid "Errors"
+msgstr "错误"
+
+msgid "Failure interval"
+msgstr "故障检测间隔"
+
+msgid "Flush conntrack table"
+msgstr "刷新连接跟踪表"
+
+msgid "Flush global firewall conntrack table on interface events"
+msgstr "在接å£äº‹ä»¶è§¦å‘时刷新全局防ç«å¢™è¿žæŽ¥è·Ÿè¸ªè¡¨"
+
+msgid "Hotplug Script"
+msgstr "Hotplug 脚本"
+
+msgid "Hotplug ifdown"
+msgstr "Hotplug ifdown"
+
+msgid "Hotplug ifup"
+msgstr "Hotplug ifup"
+
+msgid "IPset"
+msgstr "IPset"
+
+msgid "IPv4"
+msgstr "IPv4"
+
+msgid "IPv6"
+msgstr "IPv6"
+
+msgid "Interface"
+msgstr "接å£"
+
+msgid "Interface Status"
+msgstr "接å£çŠ¶æ€"
+
+msgid "Interface down"
+msgstr "接å£ç¦»çº¿"
+
+msgid "Interface up"
+msgstr "接å£ä¸Šçº¿"
+
+msgid "Interface will be deemed down after this many failed ping tests"
+msgstr "当 Ping 失败次数达到这个数值åŽæŽ¥å£ä¼šè¢«è®¤ä¸ºç¦»çº¿"
+
+msgid "Interfaces"
+msgstr "接å£"
+
+msgid "Internet Protocol"
+msgstr "互è”网åè®®"
+
+msgid "Last resort"
+msgstr "备用æˆå‘˜"
+
+msgid "Load Balancing"
+msgstr "è´Ÿè½½å‡è¡¡"
+
+msgid "Loading"
+msgstr "载入中"
+
+msgid "MWAN Config"
+msgstr "MWAN é…置文件"
+
+msgid "MWAN Detailed Status"
+msgstr "MWAN 详细状æ€"
+
+msgid "MWAN Interface Configuration"
+msgstr "MWAN 接å£é…ç½®"
+
+msgid "MWAN Interface Configuration - %s"
+msgstr "MWAN 接å£é…ç½® - %s"
+
+msgid "MWAN Interface Diagnostics"
+msgstr "MWAN 接å£è¯Šæ–­"
+
+msgid "MWAN Interface Live Status"
+msgstr "MWAN 接å£å®žæ—¶çŠ¶æ€"
+
+msgid "MWAN Interface Systemlog"
+msgstr "MWAN 接å£ç³»ç»Ÿæ—¥å¿—"
+
+msgid "MWAN Member Configuration"
+msgstr "MWAN æˆå‘˜é…ç½®"
+
+msgid "MWAN Member Configuration - %s"
+msgstr "MWAN æˆå‘˜é…ç½® - %s"
+
+msgid "MWAN Policy Configuration"
+msgstr "MWAN ç­–ç•¥é…ç½®"
+
+msgid "MWAN Policy Configuration - %s"
+msgstr "MWAN ç­–ç•¥é…ç½® - %s"
+
+msgid "MWAN Rule Configuration"
+msgstr "MWAN 规则é…ç½®"
+
+msgid "MWAN Rule Configuration - %s"
+msgstr "MWAN 规则é…ç½® - %s"
+
+msgid "MWAN Service Control"
+msgstr "MWAN æœåŠ¡æŽ§åˆ¶"
+
+msgid ""
+"MWAN supports up to 250 physical and/or logical interfaces<br />MWAN "
+"requires that all interfaces have a unique metric configured in /etc/config/"
+"network<br />Names must match the interface name found in /etc/config/"
+"network (see advanced tab)<br />Names may contain characters A-Z, a-z, 0-9, "
+"_ and no spaces<br />Interfaces may not share the same name as configured "
+"members, policies or rules"
+msgstr ""
+"MWAN 支æŒæœ€å¤š 250 个物ç†æˆ–逻辑接å£ã€‚<br />MWAN è¦æ±‚所有接å£å¿…须在 /etc/"
+"config/network 中设定唯一的网关跃点。<br />å称必须与 /etc/config/network 中"
+"的接å£å称匹é…。(å¯æŸ¥çœ‹â€œé«˜çº§â€é€‰é¡¹å¡)<br />å称å…许包括A-Zã€a-zã€0-9ã€_ 但是ä¸"
+"能有空格。<br />接å£ä¸åº”该与æˆå‘˜ã€ç­–ç•¥ã€è§„则中的任æ„一个设置项使用相åŒçš„å称"
+
+msgid ""
+"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
+"as a portrange (eg \"1024:2048\") without quotes"
+msgstr ""
+"å¯ä»¥è¾“å…¥ä¸€ä¸ªæˆ–å¤šä¸ªç«¯å£ (例如 \"22\" 或者 \"80,443\") 或者是一个端å£èŒƒå›´ (例"
+"如 \"1024:2048\") ä¸å«å¼•å·"
+
+msgid "Member used"
+msgstr "使用的æˆå‘˜"
+
+msgid "Members"
+msgstr "æˆå‘˜"
+
+msgid ""
+"Members are profiles attaching a metric and weight to an MWAN interface<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Members "
+"may not share the same name as configured interfaces, policies or rules"
+msgstr ""
+"“æˆå‘˜â€ç”¨æ¥è®¾ç½®æ¯ä¸€ä¸ª MWAN 接å£çš„跃点数 (å³æŽ¥å£ä¼˜å…ˆçº§) 和所å æ¯”é‡ã€‚<br />å称"
+"å…许包括 A-Z〠a-ã€0-9ã€_ 但是ä¸èƒ½æœ‰ç©ºæ ¼ã€‚<br />æˆå‘˜ä¸åº”该与接å£ã€ç­–ç•¥ã€è§„则"
+"中的任æ„一个设置项使用相åŒçš„å称"
+
+msgid "Members assigned"
+msgstr "分é…çš„æˆå‘˜"
+
+msgid "Metric"
+msgstr "跃点数"
+
+msgid ""
+"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")"
+msgstr ""
+"åŒ¹é… IPset 规则列表å称。需è¦å…ˆé…ç½® /etc/dnsmasq.conf 中的 IPset 规则 (例如: "
+"\"ipset=/youtube.com/youtube\")"
+
+msgid "Network Config"
+msgstr "网络é…置文件"
+
+msgid "No"
+msgstr "å¦"
+
+msgid "Overview"
+msgstr "概况"
+
+msgid "Ping count"
+msgstr "Ping 计数"
+
+msgid "Ping default gateway"
+msgstr "Ping 默认网关"
+
+msgid "Ping interval"
+msgstr "Ping é—´éš”"
+
+msgid "Ping interval during failure detection"
+msgstr "故障检测期间的 Ping 间隔"
+
+msgid "Ping interval during failure recovering"
+msgstr "æ•…éšœæ¢å¤æœŸé—´çš„ Ping é—´éš”"
+
+msgid "Ping size"
+msgstr "Ping 大å°"
+
+msgid "Ping timeout"
+msgstr "Ping 超时"
+
+msgid "Ping tracking IP"
+msgstr "Ping 跟踪 IP"
+
+msgid "Policies"
+msgstr "ç­–ç•¥"
+
+msgid ""
+"Policies are profiles grouping one or more members controlling how MWAN "
+"distributes traffic<br />Member interfaces with lower metrics are used "
+"first. Interfaces with the same metric load-balance<br />Load-balanced "
+"member interfaces distribute more traffic out those with higher weights<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
+"15 characters or less<br />Policies may not share the same name as "
+"configured interfaces, members or rules"
+msgstr ""
+"“策略â€æŠŠæˆå‘˜è¿›è¡Œåˆ†ç»„,告诉 MWAN 如何分é…“规则â€ä¸­ä½¿ç”¨è¿™ä¸€ç­–略的æµé‡<br />拥有"
+"较低跃点数的æˆå‘˜å°†ä¼šè¢«ä¼˜å…ˆä½¿ç”¨ã€‚拥有相åŒè·ƒç‚¹æ•°çš„æˆå‘˜æŠŠæµé‡è¿›è¡Œè´Ÿè½½å‡è¡¡ã€‚<br /"
+">进行负载å‡è¡¡çš„æˆå‘˜ä¹‹é—´æ‹¥æœ‰è¾ƒé«˜æ¯”é‡çš„æˆå‘˜å°†ä¼šè¢«åˆ†é…到更多æµé‡ã€‚<br />å称å…许"
+"包括A-Zã€a-zã€0-9ã€_ 但是ä¸èƒ½æœ‰ç©ºæ ¼ã€‚å称应该在 15 个字符以内<br />ç­–ç•¥ä¸åº”该"
+"与接å£ã€æˆå‘˜ã€è§„则中的任æ„一个设置项使用相åŒçš„å称"
+
+msgid "Policy assigned"
+msgstr "分é…çš„ç­–ç•¥"
+
+msgid "Protocol"
+msgstr "通信åè®®"
+
+msgid "Recovery interval"
+msgstr "æ•…éšœæ¢å¤é—´éš”"
+
+msgid "Restart MWAN"
+msgstr "é‡å¯ MWAN"
+
+msgid "Restore default hotplug script"
+msgstr "æ¢å¤é»˜è®¤çš„ hotplug 脚本"
+
+msgid "Restore..."
+msgstr "æ¢å¤..."
+
+msgid "Rules"
+msgstr "规则"
+
+msgid ""
+"Rules specify which traffic will use a particular MWAN policy based on IP "
+"address, port or protocol<br />Rules are matched from top to bottom. Rules "
+"below a matching rule are ignored. Traffic not matching any rule is routed "
+"using the main routing table<br />Traffic destined for known (other than "
+"default) networks is handled by the main routing table. Traffic matching a "
+"rule, but all WAN interfaces for that policy are down will be blackholed<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Rules may "
+"not share the same name as configured interfaces, members or policies"
+msgstr ""
+"“规则â€åŸºäºŽ IP 地å€ã€åè®®ã€ç«¯å£æŠŠæµé‡åˆ’分到指定的“策略â€ä¸­ã€‚<br />规则按照从上"
+"到下的顺åºè¿›è¡ŒåŒ¹é…。除了第一æ¡èƒ½å¤ŸåŒ¹é…一次通信的规则以外,其它规则将被忽略。"
+"ä¸åŒ¹é…任何规则的通信将会由系统默认路由表进行。<br />æ¥è‡ªå·²çŸ¥çš„网络的转å‘æµé‡"
+"ç”±ç³»ç»Ÿé»˜è®¤è·¯ç”±è¡¨æŽ¥æ‰‹ï¼Œç„¶åŽ MWAN 从中匹é…出相应的æµé‡å¹¶è½¬ç§»åˆ° MWAN 自己的路由"
+"表。但是所有被划分到一个无法使用的策略的æµé‡å°†ä¼šæ— æ³•æ­£å¸¸è¿›è¡Œè·¯ç”±ã€‚<br />å称"
+"å…许包括A-Zã€a-zã€0-9ã€_ 但是ä¸èƒ½æœ‰ç©ºæ ¼ã€‚<br />规则ä¸åº”该与接å£ã€æˆå‘˜ã€ç­–略中"
+"çš„ä»»æ„一个设置项使用相åŒçš„å称"
+
+msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
+msgstr "å•ä½ä¸ºç§’。接å—的值: 1-1000000。留空则使用默认值 600 秒"
+
+msgid "Source address"
+msgstr "æºåœ°å€"
+
+msgid "Source port"
+msgstr "æºç«¯å£"
+
+msgid "Start MWAN"
+msgstr "å¯åŠ¨ MWAN"
+
+msgid "Sticky"
+msgstr "粘滞模å¼"
+
+msgid "Sticky timeout"
+msgstr "粘滞超时"
+
+msgid "Stop MWAN"
+msgstr "åœæ­¢ MWAN"
+
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgstr "æ”¯æŒ CIDR 记法 (例如: \"192.168.100.0/24\") ä¸å«å¼•å·"
+
+msgid "There are currently %d of 250 supported interfaces configured"
+msgstr ""
+
+msgid ""
+"This IP address will be pinged to dermine if the link is up or down. Leave "
+"blank to assume interface is always online"
+msgstr ""
+"MWAN 将会通过 Ping 这些 IP 地å€æ¥ç¡®å®šæŽ¥å£æ˜¯å¦ä¸Šçº¿ã€‚如果留空,则 MWAN 认为该接"
+"å£æ°¸è¿œåœ¨çº¿"
+
+msgid ""
+"This displays the metric assigned to this interface in /etc/config/network"
+msgstr "这里显示了这个接å£åœ¨ /etc/config/network 中é…置的跃点数"
+
+msgid "This section allows you to modify the contents of /etc/config/mwan3"
+msgstr "这里å…许你修改 /etc/config/mwan3 的内容"
+
+msgid "This section allows you to modify the contents of /etc/config/network"
+msgstr "这里å…许你修改 /etc/config/network 的内容"
+
+msgid "This section allows you to modify the contents of /etc/config/wireless"
+msgstr "这里å…许你修改 /etc/config/wireless 的内容"
+
+msgid ""
+"This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
+"mwancustom<br />This is useful for running system commands and/or scripts "
+"based on interface ifup or ifdown hotplug events<br /><br />Notes:<br />The "
+"first line of the script must be &#34;#!/bin/sh&#34; without quotes<br /"
+">Lines beginning with # are comments and are not executed<br /><br /"
+">Available variables:<br />$ACTION is the hotplug event (ifup, ifdown)<br />"
+"$INTERFACE is the interface name (wan1, wan2, etc.)<br />$DEVICE is the "
+"device name attached to the interface (eth0.1, eth1, etc.)"
+msgstr ""
+"这里å…许你修改/etc/hotplug.d/iface/16-mwancustom 的内容<br />è¿™å¯ä»¥åœ¨æŽ¥å£ "
+"ifup 或 ifdown Hotplug 事件时è¿è¡Œç³»ç»Ÿå‘½ä»¤æˆ–脚本<br /><br />注æ„:<br />脚本的"
+"第一行必须是 &#34;#!/bin/sh&#34; ä¸å«å¼•å·<br />以#开头的行是注释,ä¸ä¼šæ‰§è¡Œ"
+"<br /><br />å¯ç”¨å˜é‡:<br />$ACTION 是 Hotplug 事件 (ifup, ifdown)<br />"
+"$INTERFACE 是接å£å称 (wan1ã€wan2 ç­‰)<br />$DEVICE 是连接到接å£çš„设备å称 "
+"(eth0.1ã€eth1 ç­‰)"
+
+msgid "Tracking IP"
+msgstr "跟踪的 IP"
+
+msgid "Tracking reliability"
+msgstr "跟踪å¯é æ€§"
+
+msgid "Traffic Rules"
+msgstr "æµé‡è§„则"
+
+msgid ""
+"Traffic from the same source IP address that previously matched this rule "
+"within the sticky timeout period will use the same WAN interface"
+msgstr ""
+"æ¥è‡ªç›¸åŒæº IP çš„æµé‡ï¼Œå¦‚果已ç»åŒ¹é…过此规则并且在粘滞超时时间内,将会使用相åŒ"
+"çš„ WAN 接å£"
+
+msgid "Troubleshooting"
+msgstr "故障排除"
+
+msgid "Troubleshooting Data"
+msgstr "故障排除数æ®"
+
+msgid "View the contents of /etc/protocols for protocol descriptions"
+msgstr "请查看 /etc/protocols 获å–å¯é€‰å议详情"
+
+msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
+msgstr ""
+
+msgid ""
+"WARNING: Some policies have names exceeding the maximum of 15 characters!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces are configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have a higher reliability requirement than there "
+"are tracking IP addresses!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have duplicate metrics configured in /etc/config/"
+"network!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have no default route in the main routing table!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have no metric configured in /etc/config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: some rules have a port configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+
+msgid ""
+"WARNING: this and other interfaces have duplicate metrics configured in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface has a higher reliability requirement than there are "
+"tracking IP addresses!"
+msgstr ""
+
+msgid "WARNING: this interface has no default route in the main routing table!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface has no metric configured in /etc/config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface is configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this policy's name is %d characters exceeding the maximum of 15!"
+msgstr ""
+
+msgid ""
+"WARNING: this rule is incorrectly configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+
+msgid "Weight"
+msgstr "比é‡"
+
+msgid ""
+"When all policy members are offline use this behavior for matched traffic"
+msgstr "当所有策略æˆå‘˜éƒ½æ— æ³•ä½¿ç”¨çš„时候,对使用该策略的æµé‡ä½¿ç”¨è¿™ä¸ªæ“作"
+
+msgid "Wireless Config"
+msgstr "无线é…ç½®"
+
+msgid "Yes"
+msgstr "是"
+
+msgid "always"
+msgstr "总是"
+
+msgid "blackhole (drop)"
+msgstr "黑洞 (丢弃)"
+
+msgid "default (use main routing table)"
+msgstr "默认 (使用主路由表)"
+
+msgid "ifdown"
+msgstr "ifdown"
+
+msgid "ifup"
+msgstr "ifup"
+
+msgid "never"
+msgstr "从ä¸"
+
+msgid "unreachable (reject)"
+msgstr "ä¸å¯è¾¾ (æ‹’ç»)"
diff --git a/applications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak b/applications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak
new file mode 100755
index 0000000000..6e2875e3de
--- /dev/null
+++ b/applications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+# to enable this script uncomment the case loop at the bottom
+# to report mwan status on interface hotplug ifup/ifdown events modify the lines in the send_alert function
+
+send_alert()
+{
+ # variable "$1" stores the MWAN status information
+ # insert your code here to send the contents of "$1"
+ echo "$1"
+}
+
+gather_event_info()
+{
+ # create event information message
+ local EVENT_INFO="Interface [ "$INTERFACE" ($DEVICE) ] on router [ "$(uci -p /var/state get system.@system[0].hostname)" ] has triggered a hotplug [ "$ACTION" ] event on "$(date +"%a %b %d %Y %T %Z")""
+
+ # get current interface, policy and rule status
+ local CURRENT_STATUS="$(/usr/sbin/mwan3 status)"
+
+ # get last 50 MWAN systemlog messages
+ local MWAN_LOG="$(echo -e "Last 50 MWAN systemlog entries. Newest entries sorted at the top:\n$(logread | grep mwan3 | tail -n 50 | sed 'x;1!H;$!d;x')")"
+
+ # pass event info to send_alert function
+ send_alert "$(echo -e "$EVENT_INFO\n\n$CURRENT_STATUS\n\n$MWAN_LOG")"
+}
+
+#case "$ACTION" in
+# ifup)
+# gather_event_info
+# ;;
+#
+# ifdown)
+# gather_event_info
+# ;;
+#esac
+
+exit 0
diff --git a/applications/luci-app-mwan3/root/etc/uci-defaults/60_luci-mwan3 b/applications/luci-app-mwan3/root/etc/uci-defaults/60_luci-mwan3
new file mode 100755
index 0000000000..ff9a229edd
--- /dev/null
+++ b/applications/luci-app-mwan3/root/etc/uci-defaults/60_luci-mwan3
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# replace existing mwan ucitrack entry
+uci -q batch <<-EOF >/dev/null
+ del ucitrack.@mwan3[-1]
+ add ucitrack mwan3
+ set ucitrack.@mwan3[-1].exec="/usr/sbin/mwan3 restart"
+ commit ucitrack
+EOF
+
+# remove LuCI cache
+rm -rf /tmp/luci-indexcache /tmp/luci-modulecache
+
+exit 0
diff --git a/applications/luci-app-olsr/po/pt-br/olsr.po b/applications/luci-app-olsr/po/pt-br/olsr.po
index 1461c1dd8b..499176c16b 100644
--- a/applications/luci-app-olsr/po/pt-br/olsr.po
+++ b/applications/luci-app-olsr/po/pt-br/olsr.po
@@ -1,17 +1,17 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2014-06-21 19:36+0200\n"
-"Last-Translator: Éder <eder.grigorio@openmailbox.org>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-02-20 18:01-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"Language-Team: \n"
msgid "Active MID announcements"
msgstr ""
@@ -59,7 +59,6 @@ msgstr ""
"Somente pode ser um endereço IPv4 ou IPv6 válidos ou um endereço 'padrão'"
# 20140621: edersg: tradução
-#, fuzzy
msgid "Can only be a valid IPv6 address or 'default'"
msgstr ""
"Somente pode ser um endereço IPv4 ou IPv6 válidos ou um endereço 'padrão'"
@@ -173,7 +172,6 @@ msgstr ""
"Validade do <abbr title=\"Host and network association, Associação de "
"equipamentos e redes\">HNA</abbr>"
-#, fuzzy
msgid "HNA6 Announcements"
msgstr ""
"Anúncios do <abbr title=\"Host and network association, Associação de "
@@ -215,7 +213,6 @@ msgstr ""
"Equipamentos em uma rede roteada por OLSR podem anunciar conectividade para "
"redes externas usando mensagens HNA."
-#, fuzzy
msgid ""
"Hosts in a OLSR routed network can announce connecitivity to external "
"networks using HNA6 messages."
@@ -496,7 +493,6 @@ msgstr ""
"> reduzir LQ para todos os nós nesta interface em 20%: padrão 0.8"
# 20140621: edersg: tradução
-#, fuzzy
msgid ""
"Multiply routes with the factor given here. Allowed values are between 0.01 "
"and 1.0. It is only used when LQ-Level is greater than 0. Examples:<br /"
@@ -551,7 +547,6 @@ msgstr ""
"OLSR - Anúncios <abbr title=\"Host and network association, Associação de "
"equipamentos e redes\">HNA</abbr>"
-#, fuzzy
msgid "OLSR - HNA6-Announcements"
msgstr ""
"OLSR - Anúncios <abbr title=\"Host and network association, Associação de "
@@ -654,7 +649,6 @@ msgstr ""
"durante o funcionamento do olsrd. O padrão é 0.0.0.0, que faz com que o "
"endereço da primeira interface seja usado."
-#, fuzzy
msgid ""
"Sets the main IP (originator ip) of the router. This IP will NEVER change "
"during the uptime of olsrd. Default is ::, which triggers usage of the IP of "
@@ -857,7 +851,6 @@ msgstr ""
"and network association, Associação de equipamentos e redes\">HNA</abbr> "
"local de 0.0.0.0/0, ::ffff:0:0/96 ou 2000::/3. O padrão é \"ambos\"."
-#, fuzzy
msgid ""
"Which kind of uplink is exported to the other mesh nodes. An uplink is "
"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default "
diff --git a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua
index 1bbee83c35..7865881cb6 100644
--- a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua
+++ b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua
@@ -7,192 +7,721 @@ require("luci.model.uci")
local knownParams = {
--
- -- Widget Name Default(s) Description Option(s)
- --
+ --Widget
+ -- Name
+ -- Default(s)
+ -- Description
+ -- Option(s)
{ "Service", {
- -- initialisation and daemon options
- { ListValue, "verb", { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }, translate("Set output verbosity") },
- { Flag, "mlock", 0, translate("Disable Paging") },
- { Flag, "disable_occ", 0, translate("Disable options consistency check") },
- -- { Value, "user", "root", translate("Set UID to user") },
- -- { Value, "group", "root", translate("Set GID to group") },
- { Value, "cd", "/etc/openvpn", translate("Change to directory before initialization") },
- { Value, "chroot", "/var/run", translate("Chroot to directory after initialization") },
- -- { Value, "daemon", "Instance-Name", translate("Daemonize after initialization") },
- -- { Value, "syslog", "Instance-Name", translate("Output to syslog and do not daemonize") },
- { Flag, "passtos", 0, translate("TOS passthrough (applies to IPv4 only)") },
- -- { Value, "inetd", "nowait Instance-Name", translate("Run as an inetd or xinetd server") },
- { Value, "log", "/var/log/openvpn.log", translate("Write log to file") },
- { Value, "log_append", "/var/log/openvpn.log", translate("Append log to file") },
- { Flag, "suppress_timestamps", 0, translate("Don't log timestamps") },
- -- { Value, "writepid", "/var/run/openvpn.pid", translate("Write process ID to file") },
- { Value, "nice", 0, translate("Change process priority") },
- { Flag, "fast_io", 0, translate("Optimize TUN/TAP/UDP writes") },
- { Value, "echo", "some params echoed to log", translate("Echo parameters to log") },
- { ListValue, "remap_usr1", { "SIGHUP", "SIGTERM" }, translate("Remap SIGUSR1 signals") },
- { Value, "status", "/var/run/openvpn.status 5", translate("Write status to file every n seconds") },
- { Value, "status_version", { 1, 2 }, translate("Status file format version") }, -- status
- { Value, "mute", 5, translate("Limit repeated log messages") },
-
- { Value, "up", "/usr/bin/ovpn-up", translate("Shell cmd to execute after tun device open") },
- { Value, "up_delay", 5, translate("Delay tun/tap open and up script execution") },
- { Value, "down", "/usr/bin/ovpn-down", translate("Shell cmd to run after tun device close") },
- { Flag, "down_pre", 0, translate("Call down cmd/script before TUN/TAP close") },
- { Flag, "up_restart", 0, translate("Run up/down scripts for all restarts") },
- { Value, "route_up", "/usr/bin/ovpn-routeup", translate("Execute shell cmd after routes are added") },
- { Value, "ipchange", "/usr/bin/ovpn-ipchange", translate("Execute shell command on remote ip change"), { mode="p2p" } },
- { DynamicList, "setenv", { "VAR1 value1", "VAR2 value2" }, translate("Pass environment variables to script") },
- { Value, "tls_verify", "/usr/bin/ovpn-tlsverify", translate("Shell command to verify X509 name") },
- { Value, "client_connect", "/usr/bin/ovpn-clientconnect", translate("Run script cmd on client connection") },
- { Flag, "client_disconnect", 0, translate("Run script cmd on client disconnection") },
- { Value, "learn_address", "/usr/bin/ovpn-learnaddress", translate("Executed in server mode whenever an IPv4 address/route or MAC address is added to OpenVPN's internal routing table") },
- { Value, "auth_user_pass_verify", "/usr/bin/ovpn-userpass via-env", translate("Executed in server mode on new client connections, when the client is still untrusted") },
- { ListValue, "script_security", { 0, 1, 2, 3 }, translate("Policy level over usage of external programs and scripts") },
+ -- initialisation and daemon options
+ { ListValue,
+ "verb",
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },
+ translate("Set output verbosity") },
+ { Flag,
+ "mlock",
+ 0,
+ translate("Disable Paging") },
+ { Flag,
+ "disable_occ",
+ 0,
+ translate("Disable options consistency check") },
+ -- { Value,
+ -- "user",
+ -- "root",
+ -- translate("Set UID to user") },
+ -- { Value,
+ -- "group",
+ -- "root",
+ -- translate("Set GID to group") },
+ { Value,
+ "cd",
+ "/etc/openvpn",
+ translate("Change to directory before initialization") },
+ { Value,
+ "chroot",
+ "/var/run",
+ translate("Chroot to directory after initialization") },
+ -- { Value,
+ -- "daemon",
+ -- "Instance-Name",
+ -- translate("Daemonize after initialization") },
+ -- { Value,
+ -- "syslog",
+ -- "Instance-Name",
+ -- translate("Output to syslog and do not daemonize") },
+ { Flag,
+ "passtos",
+ 0,
+ translate("TOS passthrough (applies to IPv4 only)") },
+ -- { Value,
+ -- "inetd",
+ -- "nowait Instance-Name",
+ -- translate("Run as an inetd or xinetd server") },
+ { Value,
+ "log",
+ "/var/log/openvpn.log",
+ translate("Write log to file") },
+ { Value,
+ "log_append",
+ "/var/log/openvpn.log",
+ translate("Append log to file") },
+ { Flag,
+ "suppress_timestamps",
+ 0,
+ translate("Don't log timestamps") },
+ -- { Value,
+ -- "writepid",
+ -- "/var/run/openvpn.pid",
+ -- translate("Write process ID to file") },
+ { Value,
+ "nice",
+ 0,
+ translate("Change process priority") },
+ { Flag,
+ "fast_io",
+ 0,
+ translate("Optimize TUN/TAP/UDP writes") },
+ { Value,
+ "echo",
+ "some params echoed to log",
+ translate("Echo parameters to log") },
+ { ListValue,
+ "remap_usr1",
+ { "SIGHUP", "SIGTERM" },
+ translate("Remap SIGUSR1 signals") },
+ { Value,
+ "status",
+ "/var/run/openvpn.status 5",
+ translate("Write status to file every n seconds") },
+ { Value,
+ "status_version",
+ { 1, 2 },
+ translate("Status file format version") }, -- status
+ { Value,
+ "mute",
+ 5,
+ translate("Limit repeated log messages") },
+ { Value,
+ "up",
+ "/usr/bin/ovpn-up",
+ translate("Shell cmd to execute after tun device open") },
+ { Value,
+ "up_delay",
+ 5,
+ translate("Delay tun/tap open and up script execution") },
+ { Value,
+ "down",
+ "/usr/bin/ovpn-down",
+ translate("Shell cmd to run after tun device close") },
+ { Flag,
+ "down_pre",
+ 0,
+ translate("Call down cmd/script before TUN/TAP close") },
+ { Flag,
+ "up_restart",
+ 0,
+ translate("Run up/down scripts for all restarts") },
+ { Value,
+ "route_up",
+ "/usr/bin/ovpn-routeup",
+ translate("Execute shell cmd after routes are added") },
+ { Value,
+ "ipchange",
+ "/usr/bin/ovpn-ipchange",
+ translate("Execute shell command on remote ip change"),
+ { mode="p2p" } },
+ { DynamicList,
+ "setenv",
+ { "VAR1 value1", "VAR2 value2" },
+ translate("Pass environment variables to script") },
+ { Value,
+ "tls_verify",
+ "/usr/bin/ovpn-tlsverify",
+ translate("Shell command to verify X509 name") },
+ { Value,
+ "client_connect",
+ "/usr/bin/ovpn-clientconnect",
+ translate("Run script cmd on client connection") },
+ { Flag,
+ "client_disconnect",
+ 0,
+ translate("Run script cmd on client disconnection") },
+ { Value,
+ "learn_address",
+ "/usr/bin/ovpn-learnaddress",
+ translate("Executed in server mode whenever an IPv4 address/route or MAC address is added to OpenVPN's internal routing table") },
+ { Value,
+ "auth_user_pass_verify",
+ "/usr/bin/ovpn-userpass via-env",
+ translate("Executed in server mode on new client connections, when the client is still untrusted") },
+ { ListValue,
+ "script_security",
+ { 0, 1, 2, 3 },
+ translate("Policy level over usage of external programs and scripts") },
} },
{ "Networking", {
- -- socket config
- { ListValue, "mode", { "p2p", "server" }, translate("Major mode") },
- { Value, "local", "0.0.0.0", translate("Local host name or ip address") },
- { Value, "port", 1194, translate("TCP/UDP port # for both local and remote") },
- { Value, "lport", 1194, translate("TCP/UDP port # for local (default=1194)") },
- { Value, "rport", 1194, translate("TCP/UDP port # for remote (default=1194)") },
- { Flag, "float", 0, translate("Allow remote to change its IP or port") },
- { Flag, "nobind", 0, translate("Do not bind to local address and port") },
-
- { Value, "dev", "tun0", translate("tun/tap device") },
- { ListValue, "dev_type", { "tun", "tap" }, translate("Type of used device") },
- { Value, "dev_node", "/dev/net/tun", translate("Use tun/tap device node") },
- { Flag, "tun_ipv6", 0, translate("Make tun device IPv6 capable") },
-
- { Value, "ifconfig", "10.200.200.3 10.200.200.1", translate("Set tun/tap adapter parameters") },
- { Flag, "ifconfig_noexec", 0, translate("Don't actually execute ifconfig") },
- { Flag, "ifconfig_nowarn", 0, translate("Don't warn on ifconfig inconsistencies") },
-
- { DynamicList, "route", "10.123.0.0 255.255.0.0", translate("Add route after establishing connection") },
- { Value, "route_gateway", "10.234.1.1", translate("Specify a default gateway for routes") },
- { Value, "route_delay", 0, translate("Delay n seconds after connection") },
- { Flag, "route_noexec", 0, translate("Don't add routes automatically") },
- { Flag, "route_nopull", 0, translate("Don't pull routes automatically") },
-
- { ListValue, "mtu_disc", { "yes", "maybe", "no" }, translate("Enable Path MTU discovery") },
- { Flag, "mtu_test", 0, translate("Empirically measure MTU") },
- { ListValue, "comp_lzo", { "yes", "no", "adaptive" }, translate("Use fast LZO compression") },
- { Flag, "comp_noadapt", 0, translate("Don't use adaptive lzo compression"), { comp_lzo=1 } },
- { Value, "link_mtu", 1500, translate("Set TCP/UDP MTU") },
- { Value, "tun_mtu", 1500, translate("Set tun/tap device MTU") },
- { Value, "tun_mtu_extra", 1500, translate("Set tun/tap device overhead") },
- { Value, "fragment", 1500, translate("Enable internal datagram fragmentation"), { proto="udp" } },
- { Value, "mssfix", 1500, translate("Set upper bound on TCP MSS"), { proto="udp" } },
- { Value, "sndbuf", 65536, translate("Set the TCP/UDP send buffer size") },
- { Value, "rcvbuf", 65536, translate("Set the TCP/UDP receive buffer size") },
- { Value, "txqueuelen", 100, translate("Set tun/tap TX queue length") },
- { Value, "shaper", 10240, translate("Shaping for peer bandwidth") },
-
- { Value, "inactive", 240, translate("tun/tap inactivity timeout") },
- { Value, "keepalive", "10 60", translate("Helper directive to simplify the expression of --ping and --ping-restart in server mode configurations") },
- { Value, "ping", 30, translate("Ping remote every n seconds over TCP/UDP port") },
- { Value, "ping_exit", 120, translate("Remote ping timeout") },
- { Value, "ping_restart", 60, translate("Restart after remote ping timeout") },
- { Flag, "ping_timer_rem", 0, translate("Only process ping timeouts if routes exist") },
-
- { Flag, "persist_tun", 0, translate("Keep tun/tap device open on restart") },
- { Flag, "persist_key", 0, translate("Don't re-read key on restart") },
- { Flag, "persist_local_ip", 0, translate("Keep local IP address on restart") },
- { Flag, "persist_remote_ip", 0, translate("Keep remote IP address on restart") },
-
- -- management channel
- { Value, "management", "127.0.0.1 31194 /etc/openvpn/mngmt-pwds", translate("Enable management interface on <em>IP</em> <em>port</em>") },
- { Flag, "management_query_passwords", 0, translate("Query management channel for private key") }, -- management
- { Flag, "management_hold", 0, translate("Start OpenVPN in a hibernating state") }, -- management
- { Value, "management_log_cache", 100, translate("Number of lines for log file history") }, -- management
- { ListValue, "topology", { "net30", "p2p", "subnet" }, translate("'net30', 'p2p', or 'subnet'"), {dev_type="tun" } },
+ -- socket config
+ { ListValue,
+ "mode",
+ { "p2p", "server" },
+ translate("Major mode") },
+ { Value,
+ "local",
+ "0.0.0.0",
+ translate("Local host name or ip address") },
+ { Value,
+ "port",
+ 1194,
+ translate("TCP/UDP port # for both local and remote") },
+ { Value,
+ "lport",
+ 1194,
+ translate("TCP/UDP port # for local (default=1194)") },
+ { Value,
+ "rport",
+ 1194,
+ translate("TCP/UDP port # for remote (default=1194)") },
+ { Flag,
+ "float",
+ 0,
+ translate("Allow remote to change its IP or port") },
+ { Flag,
+ "nobind",
+ 0,
+ translate("Do not bind to local address and port") },
+ { Value,
+ "dev",
+ "tun0",
+ translate("tun/tap device") },
+ { ListValue,
+ "dev_type",
+ { "tun", "tap" },
+ translate("Type of used device") },
+ { Value,
+ "dev_node",
+ "/dev/net/tun",
+ translate("Use tun/tap device node") },
+ { Flag,
+ "tun_ipv6",
+ 0,
+ translate("Make tun device IPv6 capable") },
+ { Value,
+ "ifconfig",
+ "10.200.200.3 10.200.200.1",
+ translate("Set tun/tap adapter parameters") },
+ { Flag,
+ "ifconfig_noexec",
+ 0,
+ translate("Don't actually execute ifconfig") },
+ { Flag,
+ "ifconfig_nowarn",
+ 0,
+ translate("Don't warn on ifconfig inconsistencies") },
+ { DynamicList,
+ "route",
+ "10.123.0.0 255.255.0.0",
+ translate("Add route after establishing connection") },
+ { Value,
+ "route_gateway",
+ "10.234.1.1",
+ translate("Specify a default gateway for routes") },
+ { Value,
+ "route_delay",
+ 0,
+ translate("Delay n seconds after connection") },
+ { Flag,
+ "route_noexec",
+ 0,
+ translate("Don't add routes automatically") },
+ { Flag,
+ "route_nopull",
+ 0,
+ translate("Don't pull routes automatically") },
+ { ListValue,
+ "mtu_disc",
+ { "yes", "maybe", "no" },
+ translate("Enable Path MTU discovery") },
+ { Flag,
+ "mtu_test",
+ 0,
+ translate("Empirically measure MTU") },
+ { ListValue,
+ "comp_lzo",
+ { "yes", "no", "adaptive" },
+ translate("Use fast LZO compression") },
+ { Flag,
+ "comp_noadapt",
+ 0,
+ translate("Don't use adaptive lzo compression"),
+ { comp_lzo=1 } },
+ { Value,
+ "link_mtu",
+ 1500,
+ translate("Set TCP/UDP MTU") },
+ { Value,
+ "tun_mtu",
+ 1500,
+ translate("Set tun/tap device MTU") },
+ { Value,
+ "tun_mtu_extra",
+ 1500,
+ translate("Set tun/tap device overhead") },
+ { Value,
+ "fragment",
+ 1500,
+ translate("Enable internal datagram fragmentation"),
+ { proto="udp" } },
+ { Value,
+ "mssfix",
+ 1500,
+ translate("Set upper bound on TCP MSS"),
+ { proto="udp" } },
+ { Value,
+ "sndbuf",
+ 65536,
+ translate("Set the TCP/UDP send buffer size") },
+ { Value,
+ "rcvbuf",
+ 65536,
+ translate("Set the TCP/UDP receive buffer size") },
+ { Value,
+ "txqueuelen",
+ 100,
+ translate("Set tun/tap TX queue length") },
+ { Value,
+ "shaper",
+ 10240,
+ translate("Shaping for peer bandwidth") },
+ { Value,
+ "inactive",
+ 240,
+ translate("tun/tap inactivity timeout") },
+ { Value,
+ "keepalive",
+ "10 60",
+ translate("Helper directive to simplify the expression of --ping and --ping-restart in server mode configurations") },
+ { Value,
+ "ping",
+ 30,
+ translate("Ping remote every n seconds over TCP/UDP port") },
+ { Value,
+ "ping_exit",
+ 120,
+ translate("Remote ping timeout") },
+ { Value,
+ "ping_restart",
+ 60,
+ translate("Restart after remote ping timeout") },
+ { Flag,
+ "ping_timer_rem",
+ 0,
+ translate("Only process ping timeouts if routes exist") },
+ { Flag,
+ "persist_tun",
+ 0,
+ translate("Keep tun/tap device open on restart") },
+ { Flag,
+ "persist_key",
+ 0,
+ translate("Don't re-read key on restart") },
+ { Flag,
+ "persist_local_ip",
+ 0,
+ translate("Keep local IP address on restart") },
+ { Flag,
+ "persist_remote_ip",
+ 0,
+ translate("Keep remote IP address on restart") },
+ -- management channel
+ { Value,
+ "management",
+ "127.0.0.1 31194 /etc/openvpn/mngmt-pwds",
+ translate("Enable management interface on <em>IP</em> <em>port</em>") },
+ -- management
+ { Flag,
+ "management_query_passwords",
+ 0,
+ translate("Query management channel for private key") },
+ -- management
+ { Flag,
+ "management_hold",
+ 0,
+ translate("Start OpenVPN in a hibernating state") },
+ -- management
+ { Value,
+ "management_log_cache",
+ 100,
+ translate("Number of lines for log file history") },
+ { ListValue,
+ "topology",
+ { "net30", "p2p", "subnet" },
+ translate("'net30', 'p2p', or 'subnet'"),
+ {dev_type="tun" } },
} },
{ "VPN", {
- { Value, "server", "10.200.200.0 255.255.255.0", translate("Configure server mode"), { server_mode="1" } },
- { Value, "server_bridge", "10.200.200.1 255.255.255.0 10.200.200.200 10.200.200.250", translate("Configure server bridge"), { server_mode="1" } },
- { DynamicList, "push", { "redirect-gateway", "comp-lzo" }, translate("Push options to peer"), { server_mode="1" } },
- { Flag, "push_reset", 0, translate("Don't inherit global push options"), { server_mode="1" } },
- { Flag, "disable", 0, translate("Client is disabled"), { server_mode="1" } },
- { Value, "ifconfig_pool", "10.200.200.100 10.200.200.150 255.255.255.0", translate("Set aside a pool of subnets"), { server_mode="1" } },
- { Value, "ifconfig_pool_persist", "/etc/openvpn/ipp.txt 600", translate("Persist/unpersist ifconfig-pool"), { server_mode="1" } },
--- { Flag, "ifconfig_pool_linear", 0, translate("Use individual addresses rather than /30 subnets"), { server_mode="1" } }, -- deprecated and replaced by --topology p2p
- { Value, "ifconfig_push", "10.200.200.1 255.255.255.255", translate("Push an ifconfig option to remote"), { server_mode="1" } },
- { Value, "iroute", "10.200.200.0 255.255.255.0", translate("Route subnet to client"), { server_mode="1" } },
- { Flag, "client_to_client", 0, translate("Allow client-to-client traffic"), { server_mode="1" } },
- { Flag, "duplicate_cn", 0, translate("Allow multiple clients with same certificate"), { server_mode="1" } },
- { Value, "client_config_dir", "/etc/openvpn/ccd", translate("Directory for custom client config files"), { server_mode="1" } },
- { Flag, "ccd_exclusive", 0, translate("Refuse connection if no custom client config"), { server_mode="1" } },
- { Value, "tmp_dir", "/var/run/openvpn", translate("Temporary directory for client-connect return file"), { server_mode="1" } },
- { Value, "hash_size", "256 256", translate("Set size of real and virtual address hash tables"), { server_mode="1" } },
- { Value, "bcast_buffers", 256, translate("Number of allocated broadcast buffers"), { server_mode="1" } },
- { Value, "tcp_queue_limit", 64, translate("Maximum number of queued TCP output packets"), { server_mode="1" } },
- { Value, "max_clients", 10, translate("Allowed maximum of connected clients"), { server_mode="1" } },
- { Value, "max_routes_per_client", 256, translate("Allowed maximum of internal"), { server_mode="1" } },
- { Value, "connect_freq", "3 10", translate("Allowed maximum of new connections"), { server_mode="1" } },
- { Flag, "client_cert_not_required", 0, translate("Don't require client certificate"), { server_mode="1" } },
- { Flag, "username_as_common_name", 0, translate("Use username as common name"), { server_mode="1" } },
- { Flag, "client", 0, translate("Configure client mode"), { server_mode="0" }, { server_mode="" } },
- { Flag, "pull", 0, translate("Accept options pushed from server"), { client="1" } },
- { Value, "auth_user_pass", "/etc/openvpn/userpass.txt", translate("Authenticate using username/password"), { client="1" } },
- { ListValue, "auth_retry", { "none", "nointeract", "interact" }, translate("Handling of authentication failures"), { client="1" } },
- { Value, "explicit_exit_notify", 1, translate("Send notification to peer on disconnect"), { client="1" } },
- { DynamicList, "remote", "1.2.3.4", translate("Remote host name or ip address"), { client="1" } },
- { Flag, "remote_random", 1, translate("Randomly choose remote server"), { client="1" } },
- { ListValue, "proto", { "udp", "tcp-client", "tcp-server" }, translate("Use protocol"), { client="1" } },
- { Value, "connect_retry", 5, translate("Connection retry interval"), { proto="tcp-client" }, { client="1" } },
- { Value, "http_proxy", "192.168.1.100 8080", translate("Connect to remote host through an HTTP proxy"), { client="1" } },
- { Flag, "http_proxy_retry", 0, translate("Retry indefinitely on HTTP proxy errors"), { client="1" } },
- { Value, "http_proxy_timeout", 5, translate("Proxy timeout in seconds"), { client="1" } },
- { DynamicList, "http_proxy_option", { "VERSION 1.0", "AGENT OpenVPN/2.0.9" }, translate("Set extended HTTP proxy options"), { client="1" } },
- { Value, "socks_proxy", "192.168.1.200 1080", translate("Connect through Socks5 proxy"), { client="1" } },
- { Value, "socks_proxy_retry", 5, translate("Retry indefinitely on Socks proxy errors"), { client="1" } }, -- client && socks_proxy
- { Value, "resolv_retry", "infinite", translate("If hostname resolve fails, retry"), { client="1" } },
- { ListValue, "redirect_gateway", { "", "local", "def1", "local def1" }, translate("Automatically redirect default route"), { client="1" } },
+ { Value,
+ "server",
+ "10.200.200.0 255.255.255.0",
+ translate("Configure server mode"),
+ { client="0" }, { client="" } },
+ { Value,
+ "server_bridge",
+ "10.200.200.1 255.255.255.0 10.200.200.200 10.200.200.250",
+ translate("Configure server bridge"),
+ { client="0" }, { client="" } },
+ { DynamicList,
+ "push",
+ { "redirect-gateway", "comp-lzo" },
+ translate("Push options to peer"),
+ { client="0" }, { client="" } },
+ { Flag,
+ "push_reset",
+ 0,
+ translate("Don't inherit global push options"),
+ { client="0" }, { client="" } },
+ { Flag,
+ "disable",
+ 0,
+ translate("Client is disabled"),
+ { client="0" }, { client="" } },
+ { Value,
+ "ifconfig_pool",
+ "10.200.200.100 10.200.200.150 255.255.255.0",
+ translate("Set aside a pool of subnets"),
+ { client="0" }, { client="" } },
+ { Value,
+ "ifconfig_pool_persist",
+ "/etc/openvpn/ipp.txt 600",
+ translate("Persist/unpersist ifconfig-pool"),
+ { client="0" }, { client="" } },
+ -- deprecated and replaced by --topology p2p
+ -- { Flag,
+ -- "ifconfig_pool_linear",
+ -- 0,
+ -- translate("Use individual addresses rather than /30 subnets"),
+ -- { client="0" }, { client="" } },
+ { Value,
+ "ifconfig_push",
+ "10.200.200.1 255.255.255.255",
+ translate("Push an ifconfig option to remote"),
+ { client="0" }, { client="" } },
+ { Value,
+ "iroute",
+ "10.200.200.0 255.255.255.0",
+ translate("Route subnet to client"),
+ { client="0" }, { client="" } },
+ { Flag,
+ "client_to_client",
+ 0,
+ translate("Allow client-to-client traffic"),
+ { client="0" }, { client="" } },
+ { Flag,
+ "duplicate_cn",
+ 0,
+ translate("Allow multiple clients with same certificate"),
+ { client="0" }, { client="" } },
+ { Value,
+ "client_config_dir",
+ "/etc/openvpn/ccd",
+ translate("Directory for custom client config files"),
+ { client="0" }, { client="" } },
+ { Flag,
+ "ccd_exclusive",
+ 0,
+ translate("Refuse connection if no custom client config"),
+ { client="0" }, { client="" } },
+ { Value,
+ "tmp_dir",
+ "/var/run/openvpn",
+ translate("Temporary directory for client-connect return file"),
+ { client="0" }, { client="" } },
+ { Value,
+ "hash_size",
+ "256 256",
+ translate("Set size of real and virtual address hash tables"),
+ { client="0" }, { client="" } },
+ { Value,
+ "bcast_buffers",
+ 256,
+ translate("Number of allocated broadcast buffers"),
+ { client="0" }, { client="" } },
+ { Value,
+ "tcp_queue_limit",
+ 64,
+ translate("Maximum number of queued TCP output packets"),
+ { client="0" }, { client="" } },
+ { Value,
+ "max_clients",
+ 10,
+ translate("Allowed maximum of connected clients"),
+ { client="0" }, { client="" } },
+ { Value,
+ "max_routes_per_client",
+ 256,
+ translate("Allowed maximum of internal"),
+ { client="0" }, { client="" } },
+ { Value,
+ "connect_freq",
+ "3 10",
+ translate("Allowed maximum of new connections"),
+ { client="0" }, { client="" } },
+ { Flag,
+ "client_cert_not_required",
+ 0,
+ translate("Don't require client certificate"),
+ { client="0" }, { client="" } },
+ { Flag,
+ "username_as_common_name",
+ 0,
+ translate("Use username as common name"),
+ { client="0" }, { client="" } },
+ { Flag,
+ "client",
+ 0,
+ translate("Configure client mode") },
+ { Flag,
+ "pull",
+ 0,
+ translate("Accept options pushed from server"),
+ { client="1" } },
+ { Value,
+ "auth_user_pass",
+ "/etc/openvpn/userpass.txt",
+ translate("Authenticate using username/password"),
+ { client="1" } },
+ { ListValue,
+ "auth_retry",
+ { "none", "nointeract", "interact" },
+ translate("Handling of authentication failures"),
+ { client="1" } },
+ { Value,
+ "explicit_exit_notify",
+ 1,
+ translate("Send notification to peer on disconnect"),
+ { client="1" } },
+ { DynamicList,
+ "remote",
+ "1.2.3.4",
+ translate("Remote host name or ip address"),
+ { client="1" } },
+ { Flag,
+ "remote_random",
+ 0,
+ translate("Randomly choose remote server"),
+ { client="1" } },
+ { ListValue,
+ "proto",
+ { "udp", "tcp-client", "tcp-server" },
+ translate("Use protocol"),
+ { client="1" } },
+ { Value,
+ "connect_retry",
+ 5,
+ translate("Connection retry interval"),
+ { proto="tcp-client" }, { client="1" } },
+ { Value,
+ "http_proxy",
+ "192.168.1.100 8080",
+ translate("Connect to remote host through an HTTP proxy"),
+ { client="1" } },
+ { Flag,
+ "http_proxy_retry",
+ 0,
+ translate("Retry indefinitely on HTTP proxy errors"),
+ { client="1" } },
+ { Value,
+ "http_proxy_timeout",
+ 5,
+ translate("Proxy timeout in seconds"),
+ { client="1" } },
+ { DynamicList,
+ "http_proxy_option",
+ { "VERSION 1.0", "AGENT OpenVPN/2.0.9" },
+ translate("Set extended HTTP proxy options"),
+ { client="1" } },
+ { Value,
+ "socks_proxy",
+ "192.168.1.200 1080",
+ translate("Connect through Socks5 proxy"),
+ { client="1" } },
+ -- client && socks_proxy
+ { Value,
+ "socks_proxy_retry",
+ 5,
+ translate("Retry indefinitely on Socks proxy errors"),
+ { client="1" } },
+ { Value,
+ "resolv_retry",
+ "infinite",
+ translate("If hostname resolve fails, retry"),
+ { client="1" } },
+ { ListValue,
+ "redirect_gateway",
+ { "", "local", "def1", "local def1" },
+ translate("Automatically redirect default route"),
+ { client="1" } },
} },
{ "Cryptography", {
- { FileUpload, "secret", "/etc/openvpn/secret.key", translate("Enable Static Key encryption mode (non-TLS)") },
- { Value, "auth", "SHA1", translate("HMAC authentication for packets") }, -- parse
- { Value, "cipher", "BF-CBC", translate("Encryption cipher for packets") }, -- parse
- { Value, "keysize", 1024, translate("Size of cipher key") }, -- parse
- { Value, "engine", "dynamic", translate("Enable OpenSSL hardware crypto engines") }, -- parse
- { Flag, "no_replay", 0, translate("Disable replay protection") },
- { Value, "replay_window", "64 15", translate("Replay protection sliding window size") },
- { Flag, "mute_replay_warnings", 0, translate("Silence the output of replay warnings") },
- { Value, "replay_persist", "/var/run/openvpn-replay-state", translate("Persist replay-protection state") },
- { Flag, "no_iv", 0, translate("Disable cipher initialisation vector") },
- { Flag, "tls_server", 0, translate("Enable TLS and assume server role"), { tls_client="" }, { tls_client="0" } },
- { Flag, "tls_client", 0, translate("Enable TLS and assume client role"), { tls_server="" }, { tls_server="0" } },
- { FileUpload, "ca", "/etc/easy-rsa/keys/ca.crt", translate("Certificate authority") },
- { FileUpload, "dh", "/etc/easy-rsa/keys/dh1024.pem", translate("Diffie Hellman parameters") },
- { FileUpload, "cert", "/etc/easy-rsa/keys/some-client.crt", translate("Local certificate") },
- { FileUpload, "key", "/etc/easy-rsa/keys/some-client.key", translate("Local private key") },
- { FileUpload, "pkcs12", "/etc/easy-rsa/keys/some-client.pk12", translate("PKCS#12 file containing keys") },
- { ListValue, "key_method", { 1, 2 }, translate("Enable TLS and assume client role") },
- { Value, "tls_cipher", "DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:DES-CBC3-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:AES128-SHA:RC4-SHA:RC4-MD5:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DES-CBC-SHA:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA:EXP-RC2-CBC-MD5:EXP-RC4-MD5",
- translate("TLS cipher") },
- { Value, "tls_timeout", 2, translate("Retransmit timeout on TLS control channel") },
- { Value, "reneg_bytes", 1024, translate("Renegotiate data chan. key after bytes") },
- { Value, "reneg_pkts", 100, translate("Renegotiate data chan. key after packets") },
- { Value, "reneg_sec", 3600, translate("Renegotiate data chan. key after seconds") },
- { Value, "hand_window", 60, translate("Timeframe for key exchange") },
- { Value, "tran_window", 3600, translate("Key transition window") },
- { Flag, "single_session", 0, translate("Allow only one session") },
- { Flag, "tls_exit", 0, translate("Exit on TLS negotiation failure") },
- { Value, "tls_auth", "/etc/openvpn/tlsauth.key", translate("Additional authentication over TLS") },
- --{ Value, "askpass", "[file]", translate("Get PEM password from controlling tty before we daemonize") },
- { Flag, "auth_nocache", 0, translate("Don't cache --askpass or --auth-user-pass passwords") },
- { Value, "tls_remote", "remote_x509_name", translate("Only accept connections from given X509 name") },
- { ListValue, "ns_cert_type", { "client", "server" }, translate("Require explicit designation on certificate") },
- { ListValue, "remote_cert_tls", { "client", "server" }, translate("Require explicit key usage on certificate") },
- { Value, "crl_verify", "/etc/easy-rsa/keys/crl.pem", translate("Check peer certificate against a CRL") },
- { Value, "tls_version_min", "1.0", translate("The lowest supported TLS version") },
- { Value, "tls_version_max", "1.2", translate("The highest supported TLS version") },
- { Value, "key_direction", "1", translate("The key direction for 'tls-auth' and 'secret' options") },
- } }
+ { FileUpload,
+ "secret",
+ "/etc/openvpn/secret.key",
+ translate("Enable Static Key encryption mode (non-TLS)") },
+ -- parse
+ { Value,
+ "auth",
+ "SHA1",
+ translate("HMAC authentication for packets") },
+ -- parse
+ { Value,
+ "cipher",
+ "BF-CBC",
+ translate("Encryption cipher for packets") },
+ -- parse
+ { Value,
+ "keysize",
+ 1024,
+ translate("Size of cipher key") },
+ -- parse
+ { Value,
+ "engine",
+ "dynamic",
+ translate("Enable OpenSSL hardware crypto engines") },
+ { Flag,
+ "no_replay",
+ 0,
+ translate("Disable replay protection") },
+ { Value,
+ "replay_window",
+ "64 15",
+ translate("Replay protection sliding window size") },
+ { Flag,
+ "mute_replay_warnings",
+ 0,
+ translate("Silence the output of replay warnings") },
+ { Value,
+ "replay_persist",
+ "/var/run/openvpn-replay-state",
+ translate("Persist replay-protection state") },
+ { Flag,
+ "no_iv",
+ 0,
+ translate("Disable cipher initialisation vector") },
+ { Flag,
+ "tls_server",
+ 0,
+ translate("Enable TLS and assume server role"),
+ { tls_client="" }, { tls_client="0" } },
+ { Flag,
+ "tls_client",
+ 0,
+ translate("Enable TLS and assume client role"),
+ { tls_server="" }, { tls_server="0" } },
+ { FileUpload,
+ "ca",
+ "/etc/easy-rsa/keys/ca.crt",
+ translate("Certificate authority") },
+ { FileUpload,
+ "dh",
+ "/etc/easy-rsa/keys/dh1024.pem",
+ translate("Diffie Hellman parameters") },
+ { FileUpload,
+ "cert",
+ "/etc/easy-rsa/keys/some-client.crt",
+ translate("Local certificate") },
+ { FileUpload,
+ "key",
+ "/etc/easy-rsa/keys/some-client.key",
+ translate("Local private key") },
+ { FileUpload,
+ "pkcs12",
+ "/etc/easy-rsa/keys/some-client.pk12",
+ translate("PKCS#12 file containing keys") },
+ { ListValue,
+ "key_method",
+ { 1, 2 },
+ translate("Enable TLS and assume client role") },
+ { Value,
+ "tls_cipher",
+ "DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:DES-CBC3-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:AES128-SHA:RC4-SHA:RC4-MD5:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DES-CBC-SHA:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA:EXP-RC2-CBC-MD5:EXP-RC4-MD5",
+ translate("TLS cipher") },
+ { Value,
+ "tls_timeout",
+ 2,
+ translate("Retransmit timeout on TLS control channel") },
+ { Value,
+ "reneg_bytes",
+ 1024,
+ translate("Renegotiate data chan. key after bytes") },
+ { Value,
+ "reneg_pkts",
+ 100,
+ translate("Renegotiate data chan. key after packets") },
+ { Value,
+ "reneg_sec",
+ 3600,
+ translate("Renegotiate data chan. key after seconds") },
+ { Value,
+ "hand_window",
+ 60,
+ translate("Timeframe for key exchange") },
+ { Value,
+ "tran_window",
+ 3600,
+ translate("Key transition window") },
+ { Flag,
+ "single_session",
+ 0,
+ translate("Allow only one session") },
+ { Flag,
+ "tls_exit",
+ 0,
+ translate("Exit on TLS negotiation failure") },
+ { Value,
+ "tls_auth",
+ "/etc/openvpn/tlsauth.key",
+ translate("Additional authentication over TLS") },
+ -- { Value,
+ -- "askpass",
+ -- "[file]",
+ -- translate("Get PEM password from controlling tty before we daemonize") },
+ { Flag,
+ "auth_nocache",
+ 0,
+ translate("Don't cache --askpass or --auth-user-pass passwords") },
+ { Value,
+ "tls_remote",
+ "remote_x509_name",
+ translate("Only accept connections from given X509 name") },
+ { ListValue,
+ "ns_cert_type",
+ { "client", "server" },
+ translate("Require explicit designation on certificate") },
+ { ListValue,
+ "remote_cert_tls",
+ { "client", "server" },
+ translate("Require explicit key usage on certificate") },
+ { Value,
+ "crl_verify",
+ "/etc/easy-rsa/keys/crl.pem",
+ translate("Check peer certificate against a CRL") },
+ { Value,
+ "tls_version_min",
+ "1.0",
+ translate("The lowest supported TLS version") },
+ { Value,
+ "tls_version_max",
+ "1.2",
+ translate("The highest supported TLS version") },
+ { Value,
+ "key_direction",
+ "1",
+ translate("The key direction for 'tls-auth' and 'secret' options") },
+ } }
}
diff --git a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua
index aaa1979c41..3f651c0ada 100644
--- a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua
+++ b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua
@@ -24,7 +24,7 @@ local basicParams = {
{ ListValue,"comp_lzo",{"yes","no","adaptive"}, translate("Use fast LZO compression") },
{ Value,"keepalive","10 60", translate("Helper directive to simplify the expression of --ping and --ping-restart in server mode configurations") },
- { ListValue,"proto",{ "udp", "udp6", "tcp", "tcp6" }, translate("Use protocol") },
+ { ListValue,"proto",{ "udp", "tcp-client", "tcp-server" }, translate("Use protocol") },
{ Flag,"client",0, translate("Configure client mode") },
{ Flag,"client_to_client",0, translate("Allow client-to-client traffic") },
diff --git a/applications/luci-app-openvpn/po/pt-br/openvpn.po b/applications/luci-app-openvpn/po/pt-br/openvpn.po
index 916370e7f9..84b0540581 100644
--- a/applications/luci-app-openvpn/po/pt-br/openvpn.po
+++ b/applications/luci-app-openvpn/po/pt-br/openvpn.po
@@ -1,17 +1,17 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2014-03-29 23:19+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-02-20 18:04-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"Language-Team: \n"
msgid "%s"
msgstr "%s"
@@ -154,7 +154,7 @@ msgid "Don't log timestamps"
msgstr "Não registar a data/hora"
msgid "Don't pull routes automatically"
-msgstr ""
+msgstr "Não puxe as rotas automaticamente"
msgid "Don't re-read key on restart"
msgstr "Não reler a chave entre os reinícios"
@@ -505,13 +505,13 @@ msgid "Temporary directory for client-connect return file"
msgstr "Diretório temporário para arquivo de retorno de conexão-cliente"
msgid "The highest supported TLS version"
-msgstr ""
+msgstr "A mais alta versão suporta do TLS"
msgid "The key direction for 'tls-auth' and 'secret' options"
-msgstr ""
+msgstr "A direção da chave para as opções 'tls-auth' e 'secret'"
msgid "The lowest supported TLS version"
-msgstr ""
+msgstr "A mais baixa versão suporta do TLS"
msgid "Timeframe for key exchange"
msgstr "Janela temporal para troca de chaves"
diff --git a/applications/luci-app-openvpn/po/zh-cn/openvpn.po b/applications/luci-app-openvpn/po/zh-cn/openvpn.po
index 899b4d2388..3904ac4bf8 100644
--- a/applications/luci-app-openvpn/po/zh-cn/openvpn.po
+++ b/applications/luci-app-openvpn/po/zh-cn/openvpn.po
@@ -1,17 +1,17 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-05-19 19:35+0200\n"
-"PO-Revision-Date: 2013-10-10 06:09+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
+"PO-Revision-Date: 2017-04-14 17:26-0600\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
"Language-Team: QQ Group 75543259 <axishero@foxmail.com>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 2.0.1\n"
msgid "%s"
msgstr "%s"
@@ -498,13 +498,13 @@ msgid "Temporary directory for client-connect return file"
msgstr "客户端连接返回文件的临时目录"
msgid "The highest supported TLS version"
-msgstr ""
+msgstr "最高支æŒçš„ TLS 版本"
msgid "The key direction for 'tls-auth' and 'secret' options"
msgstr ""
msgid "The lowest supported TLS version"
-msgstr ""
+msgstr "最低支æŒçš„ TLS 版本"
msgid "Timeframe for key exchange"
msgstr "密钥交æ¢æ—¶é—´è¡¨"
diff --git a/applications/luci-app-privoxy/po/pt-br/privoxy.po b/applications/luci-app-privoxy/po/pt-br/privoxy.po
new file mode 100644
index 0000000000..8d3eee20d5
--- /dev/null
+++ b/applications/luci-app-privoxy/po/pt-br/privoxy.po
@@ -0,0 +1,516 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: pt_BR\n"
+
+msgid ""
+"A URL to be displayed in the error page that users will see if access to an "
+"untrusted page is denied."
+msgstr ""
+"A URL a ser exibida na página de erro que os usuários verão se o acesso a "
+"uma página não confiável é negado."
+
+msgid ""
+"A URL to documentation about the local Privoxy setup, configuration or "
+"policies."
+msgstr ""
+"A URL para a documentação sobre o Privoxy local, configuração ou políticas."
+
+msgid "A directory where Privoxy can create temporary files."
+msgstr "Um diretório onde Privoxy pode criar arquivos temporários."
+
+msgid "Access Control"
+msgstr "Controle de Acesso"
+
+msgid "Actions that are applied to all sites and maybe overruled later on."
+msgstr ""
+"Ações que são aplicadas a todos as páginas e talvez descartado mais tarde."
+
+msgid "An alternative directory where the templates are loaded from."
+msgstr "Um diretório alternativo de onde os modelos são carregados."
+
+msgid "An email address to reach the Privoxy administrator."
+msgstr "Um endereço de e-mail para alcançar o administrador do Privoxy."
+
+msgid ""
+"Assumed server-side keep-alive timeout (in seconds) if not specified by the "
+"server."
+msgstr ""
+"Tempo limite, em segundos, da manutenção da conexão (keep-alive) do servidor "
+"se não for especificado."
+
+msgid "Boot delay"
+msgstr "Atraso de iniciação"
+
+msgid "CGI user interface"
+msgstr "Interface de usuário CGI"
+
+msgid "Common Log Format"
+msgstr "Formato de registros (log) comum"
+
+msgid ""
+"Configure here the routing of HTTP requests through a chain of multiple "
+"proxies. Note that parent proxies can severely decrease your privacy level. "
+"Also specified here are SOCKS proxies."
+msgstr ""
+"Configure aqui o encaminhamento de pedidos HTTP através de uma cadeia de "
+"múltiplos proxies. Note-se que proxies pai pode diminuir muito o nível de "
+"privacidade. Também serão aceitos proxies SOCKS."
+
+msgid "Debug GIF de-animation"
+msgstr "Depurar de-animação GIF"
+
+msgid "Debug force feature"
+msgstr "Recurso de depuração forçado"
+
+msgid "Debug redirects"
+msgstr "Redirecionamentos de depuração"
+
+msgid "Debug regular expression filters"
+msgstr "Depuração de filtros de expressão regular"
+
+msgid "Delay (in seconds) during system boot before Privoxy start"
+msgstr ""
+"Atraso (em segundos) durante a inicialização do sistema antes do Privoxy "
+"iniciar"
+
+msgid "Directory does not exist!"
+msgstr "O diretório não existe!"
+
+msgid "Disabled == Transparent Proxy Mode"
+msgstr "Desativado == Modo Proxy Transparente"
+
+msgid "Documentation"
+msgstr "Documentação"
+
+msgid "During delay ifup-events are not monitored !"
+msgstr "Durante a espera, eventos ifup não serão monitorados!"
+
+msgid "Enable proxy authentication forwarding"
+msgstr "Habilitar o encaminhamento de autenticação de proxy"
+
+msgid ""
+"Enable/Disable autostart of Privoxy on system startup and interface events"
+msgstr ""
+"Ativar/Desativar a iniciação automática do Privoxy junto com a iniciação do "
+"sistema ou eventos de interface"
+
+msgid "Enable/Disable filtering when Privoxy starts."
+msgstr "Ativar / Desativar filtragem quando Privoxy iniciar."
+
+msgid "Enabled"
+msgstr "Habilitado"
+
+msgid ""
+"Enabling this option is NOT recommended if there is no parent proxy that "
+"requires authentication!"
+msgstr ""
+"A ativação dessa opção não é recomendado se não houver nenhum proxy pai que "
+"requer autenticação!"
+
+msgid "File '%s' not found inside Configuration Directory"
+msgstr "O arquivo '%s' não foi encontrado dentro do Diretório de Configuração"
+
+msgid "File not found or empty"
+msgstr "Arquivo não encontrado ou vazio"
+
+msgid "Files and Directories"
+msgstr "Arquivos e diretórios"
+
+msgid "For help use link at the relevant option"
+msgstr "Para ajuda, use o link na respectiva opção"
+
+msgid "Forwarding"
+msgstr "Encaminhando"
+
+msgid ""
+"If enabled, Privoxy hides the 'go there anyway' link. The user obviously "
+"should not be able to bypass any blocks."
+msgstr ""
+"Se ativado, Privoxy esconde o link \"ir lá de qualquer maneira\". O usuário, "
+"obviamente, não deve ser capaz de contornar qualquer bloqueio."
+
+msgid ""
+"If you intend to operate Privoxy for more users than just yourself, it might "
+"be a good idea to let them know how to reach you, what you block and why you "
+"do that, your policies, etc."
+msgstr ""
+"Se você pretende operar Privoxy para mais usuários do que apenas a si mesmo, "
+"pode ser uma boa ideia para que eles saibam como falar com você, o que você "
+"bloquear e por que você faz isso, as suas políticas, etc."
+
+msgid "Invalid email address"
+msgstr "Endereço de e-mail inválido"
+
+msgid "It is NOT recommended for the casual user."
+msgstr "Não é recomendado para o usuário casual."
+
+msgid "Location of the Privoxy User Manual."
+msgstr "Localização do Manual do Usuário do Privoxy."
+
+msgid "Log File Viewer"
+msgstr "Visualizador de arquivo de registros (log)"
+
+msgid "Log all data read from the network"
+msgstr "Registrar todos os dados lidos da rede"
+
+msgid "Log all data written to the network"
+msgstr "Registrar todos os dados gravados na rede"
+
+msgid "Log the applying actions"
+msgstr "Registrar as ações aplicadas"
+
+msgid ""
+"Log the destination for each request Privoxy let through. See also 'Debug "
+"1024'."
+msgstr ""
+"Registrar o destino para cada pedido que o Privoxy deixou passar. Consulte "
+"também 'Debug 1024'."
+
+msgid ""
+"Log the destination for requests Privoxy didn't let through, and the reason "
+"why."
+msgstr ""
+"Registrar o destino para os pedidos que o Privoxy não deixou passar, e a "
+"razão pela qual."
+
+msgid "Logging"
+msgstr "Registrando (logging)"
+
+msgid "Main actions file"
+msgstr "Arquivo principal de ações"
+
+msgid "Mandatory Input: No Data given!"
+msgstr "Entrada obrigatória: Dados não foram informados!"
+
+msgid "Mandatory Input: No Directory given!"
+msgstr "Entrada obrigatória: Nenhum Diretório foi informado!"
+
+msgid "Mandatory Input: No File given!"
+msgstr "Entrada obrigatória: Nenhum Arquivo foi informado!"
+
+msgid "Mandatory Input: No Port given!"
+msgstr "Entrada obrigatória: Nenhuma Porta foi informado!"
+
+msgid "Mandatory Input: No files given!"
+msgstr "Entrada obrigatória: Nenhum Arquivo foi informado!"
+
+msgid "Mandatory Input: No valid IPv4 address or host given!"
+msgstr ""
+"Entrada obrigatória: Nenhum endereço IPv4 ou nome de equipamento válido foi "
+"fornecido!"
+
+msgid "Mandatory Input: No valid IPv6 address given!"
+msgstr "Entrada obrigatória: Nenhum endereço IPv6 válido foi informado!"
+
+msgid "Mandatory Input: No valid Port given!"
+msgstr "Entrada obrigatória: Nenhuma porta válida foi informada!"
+
+msgid "Maximum number of client connections that will be served."
+msgstr "O número máximo de conexões de cliente que será aceito."
+
+msgid "Maximum size (in KB) of the buffer for content filtering."
+msgstr "Tamanho máximo (em KB) do buffer para filtragem de conteúdo."
+
+msgid "Miscellaneous"
+msgstr "Diversos"
+
+msgid "NOT installed"
+msgstr "NÃO instalado"
+
+msgid "No trailing '/', please."
+msgstr "Sem '/' final, por favor."
+
+msgid "Non-fatal errors - *we highly recommended enabling this*"
+msgstr "Erros não fatais - *é altamente recomendado ativar isto*"
+
+msgid ""
+"Number of seconds after which a socket times out if no data is received."
+msgstr ""
+"Número de segundos após o qual uma conexão expira se nenhum dado for "
+"recebido."
+
+msgid ""
+"Number of seconds after which an open connection will no longer be reused."
+msgstr ""
+"Número de segundos após o qual uma conexão aberta deixará de ser reutilizada."
+
+msgid ""
+"Only when using 'external filters', Privoxy has to create temporary files."
+msgstr ""
+"Somente quando for usado os \"filtros externos\". O Privoxy tem que criar "
+"arquivos temporários."
+
+msgid "Please install current version !"
+msgstr "Por favor, instale a versão atual!"
+
+msgid "Please press [Read] button"
+msgstr "Por favor, pressione o botão [Ler]"
+
+msgid "Please read Privoxy manual for details!"
+msgstr "Por favor, leia o manual do Privoxy para mais detalhes!"
+
+msgid "Please update to the current version!"
+msgstr "Por favor, atualize para a versão atual!"
+
+msgid "Privoxy WEB proxy"
+msgstr "Privoxy Web Proxy"
+
+msgid ""
+"Privoxy can (and normally does) use a number of other files for additional "
+"configuration, help and logging. This section of the configuration file "
+"tells Privoxy where to find those other files."
+msgstr ""
+"Privoxy pode (e normalmente o faz) utilizar uma série de outros arquivos de "
+"configuração, ajuda e de registros. Esta seção do arquivo de configuração "
+"informa o Privoxy onde encontrar os outros arquivos."
+
+msgid ""
+"Privoxy is a non-caching web proxy with advanced filtering capabilities for "
+"enhancing privacy, modifying web page data and HTTP headers, controlling "
+"access, and removing ads and other obnoxious Internet junk."
+msgstr ""
+"Privoxy é um proxy web sem cache com capacidades avançadas de filtragem para "
+"aumentar a privacidade, modificar dados de páginas web e cabeçalhos HTTP, "
+"controlar o acesso e remover anúncios e outras porcarias detestável da "
+"Internet."
+
+msgid "Read / Reread log file"
+msgstr "Ler / Ler novamente o arquivo de registros (log)"
+
+msgid "Show I/O status"
+msgstr "Mostrar status de Entrada/Saída"
+
+msgid "Show each connection status"
+msgstr "Mostrar cada estado de conexão"
+
+msgid "Show header parsing"
+msgstr "Mostrar análise do cabeçalho"
+
+msgid "Software package '%s' is not installed."
+msgstr "O pacote de software '%s' não está instalado."
+
+msgid "Software package '%s' is outdated."
+msgstr "O pacote '%' está desatualizado."
+
+msgid "Start"
+msgstr "Iniciar"
+
+msgid "Start / Stop"
+msgstr "Iniciar / Parar"
+
+msgid "Start/Stop Privoxy WEB Proxy"
+msgstr "Inicia / Para o Privoxy Web Proxy"
+
+msgid "Startup banner and warnings."
+msgstr "Mensagens e avisos iniciais."
+
+msgid "Syntax:"
+msgstr "Sintaxe:"
+
+msgid "Syntax: Client header names delimited by spaces."
+msgstr "Sintaxe: nomes de cabeçalho do cliente delimitados por espaços."
+
+msgid "Syntax: target_pattern http_parent[:port]"
+msgstr "Sintaxe: padrão_alvo http_superior[:porta]"
+
+msgid "Syntax: target_pattern socks_proxy[:port] http_parent[:port]"
+msgstr "Sintaxe: padrão_alvo proxy_socks[:porta] http_superior[:porta]"
+
+msgid "System"
+msgstr "Sistema"
+
+msgid ""
+"The actions file(s) to use. Multiple actionsfile lines are permitted, and "
+"are in fact recommended!"
+msgstr ""
+"O(s) arquivo(s) ações a ser usado. Várias linhas no arquivo são permitidas, "
+"e são, de fato, recomendadas!"
+
+msgid ""
+"The address and TCP port on which Privoxy will listen for client requests."
+msgstr ""
+"O endereço e porta TCP em que Privoxy vai esperar por pedidos dos clientes."
+
+msgid ""
+"The compression level that is passed to the zlib library when compressing "
+"buffered content."
+msgstr ""
+"O nível de compressão que é passada para a biblioteca zlib ao comprimir o "
+"conteúdo em buffer."
+
+msgid ""
+"The directory where all logging takes place (i.e. where the logfile is "
+"located)."
+msgstr ""
+"O diretório onde todos os registros ocorrem (ex: onde o arquivo de log está "
+"localizado)."
+
+msgid "The directory where the other configuration files are located."
+msgstr "O diretório onde os outros arquivos de configuração estão localizados."
+
+msgid ""
+"The filter files contain content modification rules that use regular "
+"expressions."
+msgstr ""
+"Os arquivos de filtro contêm regras de modificação de conteúdo que usam "
+"expressões regulares."
+
+msgid "The hostname shown on the CGI pages."
+msgstr "O nome da máquina mostrado nas páginas de CGI."
+
+msgid "The log file to use. File name, relative to log directory."
+msgstr ""
+"O arquivo de registros a ser usado. O nome do arquivo, relativo ao diretório "
+"de log."
+
+msgid "The order in which client headers are sorted before forwarding them."
+msgstr ""
+"A ordem em que os cabeçalhos dos clientes são classificados antes de "
+"encaminhá-los."
+
+msgid ""
+"The status code Privoxy returns for pages blocked with +handle-as-empty-"
+"document."
+msgstr ""
+"O código de status Privoxy retorna para páginas bloqueadas com +handle-as-"
+"empty-document."
+
+msgid ""
+"The trust mechanism is an experimental feature for building white-lists and "
+"should be used with care."
+msgstr ""
+"O mecanismo de confiança é um recurso experimental para a construção de "
+"listas de destinos confiáveis e deve ser usado com cuidado."
+
+msgid ""
+"The value of this option only matters if the experimental trust mechanism "
+"has been activated."
+msgstr ""
+"O valor desta opção só importa se o mecanismo de confiança experimental foi "
+"ativado."
+
+msgid ""
+"This option is only there for debugging purposes. It will drastically reduce "
+"performance."
+msgstr ""
+"Esta opção só está lá para fins de depuração. Ele irá reduzir drasticamente "
+"o desempenho."
+
+msgid ""
+"This option will be removed in future releases as it has been obsoleted by "
+"the more general header taggers."
+msgstr ""
+"Esta opção será removida em versões futuras, uma vez que ficou obsoleta "
+"pelos marcadores de cabeçalho mais genéricos."
+
+msgid ""
+"This tab controls the security-relevant aspects of Privoxy's configuration."
+msgstr ""
+"Esta guia controla os aspectos da configuração do Privoxy relevantes para a "
+"segurança."
+
+msgid ""
+"Through which SOCKS proxy (and optionally to which parent HTTP proxy) "
+"specific requests should be routed."
+msgstr ""
+"Através de qual Proxy SOCKS (e, opcionalmente, para o qual proxy HTTP "
+"superior) pedidos específicos devem ser encaminhados."
+
+msgid "To which parent HTTP proxy specific requests should be routed."
+msgstr ""
+"Para qual proxy HTTP superior os pedidos específicos devem ser encaminhados."
+
+msgid "User customizations"
+msgstr "Personalizações do usuário"
+
+msgid "Value is not a number"
+msgstr "O valor não é um número"
+
+msgid "Value not between 0 and 300"
+msgstr "Valor não está entre 0 e 300"
+
+msgid "Value not between 0 and 9"
+msgstr "Valor não está entre 0 e 9"
+
+msgid "Value not between 1 and 4096"
+msgstr "Valor não entre 1 e 4096"
+
+msgid "Value not greater 0 or empty"
+msgstr "Valor não é maior que 0 ou vazio"
+
+msgid "Value range 1 to 4096, no entry defaults to 4096"
+msgstr "Faixa do valor de 1 até 4096. Se vazio, será 4096"
+
+msgid "Version"
+msgstr "Versão"
+
+msgid "Version Information"
+msgstr "Informação da Versão"
+
+msgid "Whether intercepted requests should be treated as valid."
+msgstr "Se as solicitações interceptados deve ser tratadas como válidas."
+
+msgid ""
+"Whether or not Privoxy recognizes special HTTP headers to change toggle "
+"state."
+msgstr ""
+"Se o Privoxy deve reconhecer cabeçalhos HTTP especiais para mudar de "
+"alternância do estado."
+
+msgid "Whether or not buffered content is compressed before delivery."
+msgstr "Se o conteúdo em buffer é comprimido antes da entrega."
+
+msgid ""
+"Whether or not outgoing connections that have been kept alive should be "
+"shared between different incoming connections."
+msgstr ""
+"Se as conexões de saída que foram mantidas vivas devem ser compartilhadas "
+"entre diferentes conexões de entrada."
+
+msgid "Whether or not pipelined requests should be served."
+msgstr "Se os pedidos de pipeline deve ser aceitos."
+
+msgid "Whether or not proxy authentication through Privoxy should work."
+msgstr "Se a autenticação de proxy através do Privoxy deve funcionar."
+
+msgid "Whether or not the web-based actions file editor may be used."
+msgstr "Se o editor de arquivos de ações baseadas na web deve ser utilizado."
+
+msgid "Whether or not the web-based toggle feature may be used."
+msgstr "Se deve ser usado o recurso de alternância baseado na web."
+
+msgid "Whether requests to Privoxy's CGI pages can be blocked or redirected."
+msgstr ""
+"Se as solicitações para páginas CGI do Privoxy podem ser bloqueadas ou "
+"redirecionadas."
+
+msgid ""
+"Whether the CGI interface should stay compatible with broken HTTP clients."
+msgstr ""
+"Se a interface CGI deve se manter compatível com clientes HTTP mal "
+"implementados."
+
+msgid "Whether to run only one server thread."
+msgstr "Se deseja executar o servidor como apenas uma thread."
+
+msgid "Who can access what."
+msgstr "Quem pode acessar o quê."
+
+msgid "installed"
+msgstr "instalado"
+
+msgid "or higher"
+msgstr "ou maior"
+
+msgid "required"
+msgstr "necessário"
diff --git a/applications/luci-app-radicale/po/pt-br/radicale.po b/applications/luci-app-radicale/po/pt-br/radicale.po
new file mode 100644
index 0000000000..67bf586908
--- /dev/null
+++ b/applications/luci-app-radicale/po/pt-br/radicale.po
@@ -0,0 +1,432 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: pt_BR\n"
+
+msgid ""
+"'AUTO' selects the highest protocol version that client and server support."
+msgstr "'AUTO' seleciona a versão mais alto protocolo que o cliente e o servidor suportar."
+
+msgid ""
+"'Hostname:Port' or 'IPv4:Port' or '[IPv6]:Port' Radicale should listen on"
+msgstr "'NomeDoEquipamento:porta' ou 'IPv4:Porta' ou '[IPv6]:Porta' em que o Radicale deve escutar"
+
+msgid "AUTO"
+msgstr "AUTO"
+
+msgid "Access-Control-Allow-Headers"
+msgstr "Access-Control-Allow-Headers"
+
+msgid "Access-Control-Allow-Methods"
+msgstr "Access-Control-Allow-Methods"
+
+msgid "Access-Control-Allow-Origin"
+msgstr "Access-Control-Allow-Origin"
+
+msgid "Access-Control-Expose-Headers"
+msgstr "Access-Control-Expose-Headers"
+
+msgid "Additional HTTP headers"
+msgstr "Additional HTTP headers"
+
+msgid "Address:Port"
+msgstr "Endereço: Porta"
+
+#, fuzzy
+msgid "Authentication"
+msgstr "Autenticação"
+
+msgid ""
+"Authentication login is matched against the 'user' key, and collection's "
+"path is matched against the 'collection' key."
+msgstr "O nome do usuário na autenticação é comparado com a chave do 'user', e o caminho da coleção é comparado com a chave 'coleção'."
+
+msgid "Authentication method"
+msgstr "Método de autenticação"
+
+msgid "Authentication method to allow access to Radicale server."
+msgstr "Método de autenticação para permitir o acesso ao servidor Radicale."
+
+msgid "Auto-start"
+msgstr "Iniciar automaticamente"
+
+msgid "Boot delay"
+msgstr "Atraso na iniciação"
+
+msgid "CalDAV/CardDAV"
+msgstr "CalDAV/CardDAV"
+
+msgid ""
+"Calendars and address books are available for both local and remote access, "
+"possibly limited through authentication policies."
+msgstr "Agendas e contados estão disponíveis tanto para acesso local como remoto, possivelmente limitado através das políticas de autenticação."
+
+msgid "Certificate file"
+msgstr "Arquivo do certificado"
+
+msgid ""
+"Change here the encoding Radicale will use instead of 'UTF-8' for responses "
+"to the client and/or to store data inside collections."
+msgstr "Mude aqui a codificação que o Radicale usará em vez de 'UTF-8' para respostas a clientes ou para armazenar dados dentro das coleções."
+
+msgid "Ciphers"
+msgstr "Cifras"
+
+msgid "Console Log level"
+msgstr "Nível de detalhamento dos registros (log)"
+
+msgid "Control the access to data collections."
+msgstr "Controlar o acesso às coleções de dados."
+
+#, fuzzy
+msgid "Critical"
+msgstr "Crítico"
+
+msgid ""
+"Cross-origin resource sharing (CORS) is a mechanism that allows restricted "
+"resources (e.g. fonts, JavaScript, etc.) on a web page to be requested from "
+"another domain outside the domain from which the resource originated."
+msgstr "O compartilhamento de recursos de origem cruzada (CORS) é um mecanismo que permite que os recursos de acesso restrito (por exemplo, fontes, JavaScript, etc.) em uma página web ser solicitado de outro domínio fora do domínio a partir do qual o recurso foi originado."
+
+msgid "Custom"
+msgstr "Personalizadas"
+
+msgid "Database"
+msgstr "Banco de Dados"
+
+#, fuzzy
+msgid "Debug"
+msgstr "Depuração"
+
+msgid "Delay (in seconds) during system boot before Radicale start"
+msgstr "Atraso (em segundos) durante a inicialização do sistema antes do Radicale iniciar"
+
+#, fuzzy
+msgid "Directory"
+msgstr "Diretório"
+
+msgid "Directory not exists/found !"
+msgstr "O diretório não foi encontrado!"
+
+msgid "Directory required !"
+msgstr "O diretório é necessário!"
+
+msgid "Directory where the rotating log-files are stored"
+msgstr "O diretório onde os registros(log) rotativos são armazenados"
+
+msgid "During delay ifup-events are not monitored !"
+msgstr "Durante a espera, eventos ifup não serão monitorados!"
+
+msgid "Enable HTTPS"
+msgstr "Ativar HTTPS"
+
+msgid ""
+"Enable/Disable auto-start of Radicale on system start-up and interface events"
+msgstr "Ativar/Desativar iniciação automática do Radicale na iniciação do sistema e em eventos de interface"
+
+msgid "Encoding"
+msgstr "Codificação"
+
+msgid "Encoding for responding requests."
+msgstr "Codificação para responder pedidos."
+
+msgid "Encoding for storing local collections."
+msgstr "Codificação para armazenar coleções locais."
+
+msgid "Encryption method"
+msgstr "Método de criptografia"
+
+#, fuzzy
+msgid "Error"
+msgstr "Erro"
+
+msgid "File '%s' not found !"
+msgstr "Arquivo '%s' não encontrado!"
+
+msgid "File Log level"
+msgstr "Nível de detalhamento dos registos(log) em arquivos"
+
+msgid "File not found !"
+msgstr "Arquivo não encontrado!"
+
+msgid "File-system"
+msgstr "Sistema de arquivos"
+
+msgid ""
+"For example, for the 'user' key, '.+' means 'authenticated user' and '.*' "
+"means 'anybody' (including anonymous users)."
+msgstr "Por exemplo, para a chave 'user', '.+' Significa 'usuário autenticado' e '.*' Significa 'qualquer um' (incluindo usuários anônimos)."
+
+msgid "Full access for Owner only"
+msgstr "Acesso completo somente para o proprietário"
+
+msgid "Full access for authenticated Users"
+msgstr "Acesso completo para usuários autenticados"
+
+msgid "Full access for everybody (including anonymous)"
+msgstr "Acesso completo para todos (incluindo anônimo)"
+
+msgid "Full path and file name of certificate"
+msgstr "Caminho completo e nome do arquivo do certificado"
+
+msgid "Full path and file name of private key"
+msgstr "Caminho e arquivo nome completo da chave privada"
+
+#, fuzzy
+msgid "Info"
+msgstr "Informações"
+
+msgid "Keep in mind to use the correct hashing algorithm !"
+msgstr "Fique atento para usar o algoritmo de resumo digital(hash) correto!"
+
+msgid "Leading or ending slashes are trimmed from collection's path."
+msgstr "Barras inicias e finais serão removidas do caminho da coleção."
+
+msgid "Log-backup Count"
+msgstr "Contagem Registro(log) de Backup"
+
+msgid "Log-file Viewer"
+msgstr "Visualizador de Arquivo de Registros(log)"
+
+msgid "Log-file directory"
+msgstr "Diretório do arquivo de registros(log)"
+
+msgid "Log-file size"
+msgstr "Tamanho do arquivo de registros(log)"
+
+#, fuzzy
+msgid "Logging"
+msgstr "Registrando os eventos"
+
+msgid "Logon message"
+msgstr "Mensagem de entrada"
+
+msgid "Maximum size of each rotation log-file."
+msgstr "Tamanho máximo para a rotação do arquivo de registros(log)"
+
+msgid "Message displayed in the client when a password is needed."
+msgstr "Mensagem exibida para o cliente quando uma senha é necessária."
+
+#, fuzzy
+msgid "NOT installed"
+msgstr "NÃO instalado"
+
+#, fuzzy
+msgid "None"
+msgstr "Nada"
+
+msgid "Number of backup files of log to create."
+msgstr "Número de backups dos arquivos de registros(log) a serem criados."
+
+msgid "OPTIONAL: See python's ssl module for available ciphers"
+msgstr "Opcional: veja o módulo SSL do python para conhecer as cifras disponíveis"
+
+msgid "One or more missing/invalid fields on tab"
+msgstr "Um ou campos inválidos/ausentes na aba"
+
+msgid "Owner allow write, authenticated users allow read"
+msgstr "O proprietário pode escrever, os usuários autenticados podem ler"
+
+msgid "Path/File required !"
+msgstr "O caminho/arquivo é necessário!"
+
+msgid ""
+"Place here the 'user:password' pairs for your users which should have access "
+"to Radicale."
+msgstr "Coloque aqui os pares 'usuário:senha' para os seus usuários que devem ter acesso a Radicale."
+
+msgid "Please install current version !"
+msgstr "Por favor, instale a versão atual!"
+
+msgid "Please press [Reload] button below to reread the file."
+msgstr "Por favor, pressione o botão [Recarregar] abaixo para reler o arquivo."
+
+msgid "Please update to current version !"
+msgstr "Por favor, atualize para a versão atual!"
+
+msgid "Port numbers below 1024 (Privileged ports) are not supported"
+msgstr "Os porta abaixo de 1024 (portas privilegiadas) não são suportadas"
+
+msgid "Private key file"
+msgstr "Arquivo da chave privada"
+
+msgid "Radicale CalDAV/CardDAV Server"
+msgstr "Radicale Servidor CalDAV/CardDAV"
+
+msgid "Radicale uses '/etc/radicale/rights' as regexp-based file."
+msgstr "Radicale usa o '/etc/radicale/rights' como arquivo baseado em expressão regular."
+
+msgid "Radicale uses '/etc/radicale/users' as htpasswd file."
+msgstr "Radicale usa o '/etc/radicale/users' como o arquivo htpasswd."
+
+msgid "Read only!"
+msgstr "Somente leitura!"
+
+msgid "RegExp file"
+msgstr "Arquivo de expressões regulares"
+
+msgid "Reload"
+msgstr "Recarregar"
+
+msgid "Response Encoding"
+msgstr "Codificação da Resposta"
+
+msgid "Rights"
+msgstr "Direitos"
+
+msgid "Rights are based on a regexp-based file"
+msgstr "Os direitos são baseados em um arquivo baseado em expressões regulares"
+
+msgid "Rights backend"
+msgstr "Serviço de Direitos"
+
+msgid "SHA-1"
+msgstr "SHA-1"
+
+msgid "SSL Protocol"
+msgstr "Protocolo SSL"
+
+#, fuzzy
+msgid "Save"
+msgstr "Salvar"
+
+msgid "Section names are only used for naming the rule."
+msgstr "Os nomes das seção são usados ​​apenas para nomear a regra."
+
+#, fuzzy
+msgid "Server"
+msgstr "Servidor"
+
+msgid "Setting this parameter to '0' will disable rotation of log-file."
+msgstr "Definindo este parâmetro para '0' irá desativar a rotação dos arquivos de registros(log)."
+
+msgid "Software package '%s' is not installed."
+msgstr "O pacote de software '%s' não está instalado."
+
+msgid "Software package '%s' is outdated."
+msgstr "O pacote '%' está desatualizado."
+
+#, fuzzy
+msgid "Software update required"
+msgstr "A atualização do software é necessária"
+
+#, fuzzy
+msgid "Start"
+msgstr "Iniciar"
+
+#, fuzzy
+msgid "Start / Stop"
+msgstr "Iniciar / Parar"
+
+msgid "Start/Stop Radicale server"
+msgstr "Iniciar/Parar o servidor Radicale"
+
+msgid "Storage"
+msgstr "Armazenamento"
+
+msgid "Storage Encoding"
+msgstr "Codificação do Armazenamento"
+
+msgid "Storage backend"
+msgstr "Serviço de armazenamento"
+
+msgid "Syslog Log level"
+msgstr "Nível de detalhamento do serviço de registro (syslog)"
+
+#, fuzzy
+msgid "System"
+msgstr "Sistema"
+
+msgid ""
+"The Radicale Project is a complete CalDAV (calendar) and CardDAV (contact) "
+"server solution."
+msgstr "O Projeto Radicale é uma solução completa de CalDAV (agenda) e CardDAV (contatos)."
+
+msgid ""
+"They can be viewed and edited by calendar and contact clients on mobile "
+"phones or computers."
+msgstr "Eles podem ser visualizados e editados pelos clientes de agenda e de contatos em telefones celulares ou computadores."
+
+msgid "To edit the file follow this link!"
+msgstr "Para editar o arquivo, siga este link!"
+
+msgid "To view latest log file follow this link!"
+msgstr "Para visualizar mais recente arquivo de registros(log), siga este link!"
+
+msgid "Value is not a number"
+msgstr "O valor não é um número"
+
+msgid "Value is not an Integer >= 0 !"
+msgstr "O valor não é um número natural (>=0)!"
+
+msgid "Value not between 0 and 300"
+msgstr "Valor não está entre 0 e 300"
+
+msgid "Value required ! Integer >= 0 !"
+msgstr "O valor é necessário! Número natural (>=0)!"
+
+#, fuzzy
+msgid "Version"
+msgstr "Versão"
+
+#, fuzzy
+msgid "Version Information"
+msgstr "Informação da Versão"
+
+msgid ""
+"WARNING: Only 'File-system' is documented and tested by Radicale development"
+msgstr "AVISO: Apenas 'Sistema de Arquivos "está documentado e testado pelo desenvolvimento do Radicale"
+
+#, fuzzy
+msgid "Warning"
+msgstr "Alerta"
+
+msgid ""
+"You can also get groups from the user regex in the collection with {0}, {1}, "
+"etc."
+msgstr "Você também pode obter grupos a partir da expressão regular do usuário na coleção com {0}, {1} , etc."
+
+msgid ""
+"You can use Python's ConfigParser interpolation values %(login)s and "
+"%(path)s."
+msgstr "Você pode usar a interpolação de valores %(login)s e %(path)s do ConfigParser do Python."
+
+msgid "crypt"
+msgstr "cifrar"
+
+msgid "custom"
+msgstr "personalizado"
+
+msgid "htpasswd file"
+msgstr "arquivo htpasswd"
+
+#, fuzzy
+msgid "installed"
+msgstr "instalado"
+
+msgid "no valid path given!"
+msgstr "Nenhum caminho válido foi informado!"
+
+#, fuzzy
+msgid "or higher"
+msgstr "ou maior"
+
+msgid "plain"
+msgstr "plano"
+
+#, fuzzy
+msgid "required"
+msgstr "necessário"
+
+msgid "salted SHA-1"
+msgstr "SHA-1 com salto"
+
diff --git a/applications/luci-app-samba/luasrc/model/cbi/samba.lua b/applications/luci-app-samba/luasrc/model/cbi/samba.lua
index 721191a7ee..68a5b3a9bc 100644
--- a/applications/luci-app-samba/luasrc/model/cbi/samba.lua
+++ b/applications/luci-app-samba/luasrc/model/cbi/samba.lua
@@ -13,9 +13,10 @@ s:tab("template", translate("Edit Template"))
s:taboption("general", Value, "name", translate("Hostname"))
s:taboption("general", Value, "description", translate("Description"))
s:taboption("general", Value, "workgroup", translate("Workgroup"))
-s:taboption("general", Value, "homes", translate("Share home-directories"),
+h = s:taboption("general", Flag, "homes", translate("Share home-directories"),
translate("Allow system users to reach their home directories via " ..
"network shares"))
+h.rmempty = false
tmpl = s:taboption("template", Value, "_tmpl",
translate("Edit the template that is used for generating the samba configuration."),
@@ -53,6 +54,12 @@ ro.rmempty = false
ro.enabled = "yes"
ro.disabled = "no"
+br = s:option(Flag, "browseable", translate("Browseable"))
+br.rmempty = false
+br.default = "yes"
+br.enabled = "yes"
+br.disabled = "no"
+
go = s:option(Flag, "guest_ok", translate("Allow guests"))
go.rmempty = false
go.enabled = "yes"
diff --git a/applications/luci-app-samba/po/ca/samba.po b/applications/luci-app-samba/po/ca/samba.po
index 0668b1b146..fadcbdfdb9 100644
--- a/applications/luci-app-samba/po/ca/samba.po
+++ b/applications/luci-app-samba/po/ca/samba.po
@@ -26,6 +26,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Usuaris permesos"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Crea màscara"
diff --git a/applications/luci-app-samba/po/cs/samba.po b/applications/luci-app-samba/po/cs/samba.po
index fefb7ff873..4a00124fb9 100644
--- a/applications/luci-app-samba/po/cs/samba.po
+++ b/applications/luci-app-samba/po/cs/samba.po
@@ -22,6 +22,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Povolení uživatelé"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Vytvořit masku"
diff --git a/applications/luci-app-samba/po/de/samba.po b/applications/luci-app-samba/po/de/samba.po
index a5ceb056cc..1bcac0c9bc 100644
--- a/applications/luci-app-samba/po/de/samba.po
+++ b/applications/luci-app-samba/po/de/samba.po
@@ -24,6 +24,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Legitimierte Benutzer"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Berechtigungsmaske für neue Dateien"
diff --git a/applications/luci-app-samba/po/el/samba.po b/applications/luci-app-samba/po/el/samba.po
index 7cc722d592..9a15ad1e03 100644
--- a/applications/luci-app-samba/po/el/samba.po
+++ b/applications/luci-app-samba/po/el/samba.po
@@ -22,6 +22,9 @@ msgstr ""
msgid "Allowed users"
msgstr ""
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr ""
diff --git a/applications/luci-app-samba/po/en/samba.po b/applications/luci-app-samba/po/en/samba.po
index f524c1448e..94cfdb5168 100644
--- a/applications/luci-app-samba/po/en/samba.po
+++ b/applications/luci-app-samba/po/en/samba.po
@@ -22,6 +22,9 @@ msgstr "Allow system users to reach their home directories via network shares"
msgid "Allowed users"
msgstr "Allowed users"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Create mask"
diff --git a/applications/luci-app-samba/po/es/samba.po b/applications/luci-app-samba/po/es/samba.po
index 950a817971..c14ebd2c32 100644
--- a/applications/luci-app-samba/po/es/samba.po
+++ b/applications/luci-app-samba/po/es/samba.po
@@ -24,6 +24,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Usuarios permitidos"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Crear máscara"
diff --git a/applications/luci-app-samba/po/fr/samba.po b/applications/luci-app-samba/po/fr/samba.po
index 88779009cb..ff040b50d7 100644
--- a/applications/luci-app-samba/po/fr/samba.po
+++ b/applications/luci-app-samba/po/fr/samba.po
@@ -24,6 +24,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Utilisateurs autorisés"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Maque de création"
diff --git a/applications/luci-app-samba/po/he/samba.po b/applications/luci-app-samba/po/he/samba.po
index dd21a4a545..620f56cf84 100644
--- a/applications/luci-app-samba/po/he/samba.po
+++ b/applications/luci-app-samba/po/he/samba.po
@@ -17,6 +17,9 @@ msgstr ""
msgid "Allowed users"
msgstr ""
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr ""
diff --git a/applications/luci-app-samba/po/hu/samba.po b/applications/luci-app-samba/po/hu/samba.po
index 64d1e22a54..38a9a08439 100644
--- a/applications/luci-app-samba/po/hu/samba.po
+++ b/applications/luci-app-samba/po/hu/samba.po
@@ -22,6 +22,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Engedélyezett felhasználók"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Létrehozási maszk"
diff --git a/applications/luci-app-samba/po/it/samba.po b/applications/luci-app-samba/po/it/samba.po
index 4645782513..a2bb9b6735 100644
--- a/applications/luci-app-samba/po/it/samba.po
+++ b/applications/luci-app-samba/po/it/samba.po
@@ -24,6 +24,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Utenti ammessi"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Mask di creazione dei file"
diff --git a/applications/luci-app-samba/po/ja/samba.po b/applications/luci-app-samba/po/ja/samba.po
index c5275075af..9f338defbb 100644
--- a/applications/luci-app-samba/po/ja/samba.po
+++ b/applications/luci-app-samba/po/ja/samba.po
@@ -22,6 +22,9 @@ msgstr "sambaを介ã—ã¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ›ãƒ¼ãƒ ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¸ã®ã‚¢ã‚¯ã
msgid "Allowed users"
msgstr "許å¯ã•ã‚ŒãŸãƒ¦ãƒ¼ã‚¶ãƒ¼"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "マスクã®ä½œæˆ"
diff --git a/applications/luci-app-samba/po/ms/samba.po b/applications/luci-app-samba/po/ms/samba.po
index e29133e1b9..de4ed7c365 100644
--- a/applications/luci-app-samba/po/ms/samba.po
+++ b/applications/luci-app-samba/po/ms/samba.po
@@ -16,6 +16,9 @@ msgstr ""
msgid "Allowed users"
msgstr ""
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr ""
diff --git a/applications/luci-app-samba/po/no/samba.po b/applications/luci-app-samba/po/no/samba.po
index 1c5c8077f1..7059d7748d 100644
--- a/applications/luci-app-samba/po/no/samba.po
+++ b/applications/luci-app-samba/po/no/samba.po
@@ -13,6 +13,9 @@ msgstr "Tillat systembrukere å nå sine hjemmekataloger via nettverks mapper."
msgid "Allowed users"
msgstr "Tillatte brukere"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Opprett Maske"
diff --git a/applications/luci-app-samba/po/pl/samba.po b/applications/luci-app-samba/po/pl/samba.po
index 74826227b0..bf54e78c3d 100644
--- a/applications/luci-app-samba/po/pl/samba.po
+++ b/applications/luci-app-samba/po/pl/samba.po
@@ -23,6 +23,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Użytkownicy z prawem dostępu"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Utwórz maskę"
diff --git a/applications/luci-app-samba/po/pt-br/samba.po b/applications/luci-app-samba/po/pt-br/samba.po
index a7531522d0..43ea3b9b97 100644
--- a/applications/luci-app-samba/po/pt-br/samba.po
+++ b/applications/luci-app-samba/po/pt-br/samba.po
@@ -24,6 +24,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Usuários permitidos"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Máscara de criação"
diff --git a/applications/luci-app-samba/po/pt/samba.po b/applications/luci-app-samba/po/pt/samba.po
index 4c5a2cd24c..6d4f003868 100644
--- a/applications/luci-app-samba/po/pt/samba.po
+++ b/applications/luci-app-samba/po/pt/samba.po
@@ -24,6 +24,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Utilizadores Permitidos"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Criar Máscara"
diff --git a/applications/luci-app-samba/po/ro/samba.po b/applications/luci-app-samba/po/ro/samba.po
index 4bc341557f..78c55e4eb4 100644
--- a/applications/luci-app-samba/po/ro/samba.po
+++ b/applications/luci-app-samba/po/ro/samba.po
@@ -23,6 +23,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Utilizatori acceptati"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Creaza masca"
diff --git a/applications/luci-app-samba/po/ru/samba.po b/applications/luci-app-samba/po/ru/samba.po
index 82906e36ed..4823dc46d7 100644
--- a/applications/luci-app-samba/po/ru/samba.po
+++ b/applications/luci-app-samba/po/ru/samba.po
@@ -25,6 +25,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Разрешённые пользователи"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Создать маÑку"
diff --git a/applications/luci-app-samba/po/sk/samba.po b/applications/luci-app-samba/po/sk/samba.po
index 66ec9e0307..2c511c8152 100644
--- a/applications/luci-app-samba/po/sk/samba.po
+++ b/applications/luci-app-samba/po/sk/samba.po
@@ -17,6 +17,9 @@ msgstr ""
msgid "Allowed users"
msgstr ""
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr ""
diff --git a/applications/luci-app-samba/po/sv/samba.po b/applications/luci-app-samba/po/sv/samba.po
index b83dec506a..549a69c5c0 100644
--- a/applications/luci-app-samba/po/sv/samba.po
+++ b/applications/luci-app-samba/po/sv/samba.po
@@ -18,6 +18,9 @@ msgstr "Tillåt systemanvändare att nå deras hem-mappar via nätverksdelningar
msgid "Allowed users"
msgstr "Tillåtna användare"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Skapa mask"
diff --git a/applications/luci-app-samba/po/templates/samba.pot b/applications/luci-app-samba/po/templates/samba.pot
index d91400b0c7..9e4ab7ff17 100644
--- a/applications/luci-app-samba/po/templates/samba.pot
+++ b/applications/luci-app-samba/po/templates/samba.pot
@@ -10,6 +10,9 @@ msgstr ""
msgid "Allowed users"
msgstr ""
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr ""
diff --git a/applications/luci-app-samba/po/tr/samba.po b/applications/luci-app-samba/po/tr/samba.po
index fda2f6e26e..486768f2ee 100644
--- a/applications/luci-app-samba/po/tr/samba.po
+++ b/applications/luci-app-samba/po/tr/samba.po
@@ -17,6 +17,9 @@ msgstr ""
msgid "Allowed users"
msgstr ""
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr ""
diff --git a/applications/luci-app-samba/po/uk/samba.po b/applications/luci-app-samba/po/uk/samba.po
index 6f2a920915..077315e214 100644
--- a/applications/luci-app-samba/po/uk/samba.po
+++ b/applications/luci-app-samba/po/uk/samba.po
@@ -23,6 +23,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Дозволені кориÑтувачі"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Створити маÑку"
diff --git a/applications/luci-app-samba/po/vi/samba.po b/applications/luci-app-samba/po/vi/samba.po
index 4e5638da24..c5f6e02dfa 100644
--- a/applications/luci-app-samba/po/vi/samba.po
+++ b/applications/luci-app-samba/po/vi/samba.po
@@ -28,6 +28,9 @@ msgstr ""
msgid "Allowed users"
msgstr "NgÆ°á»i sá»­ dụng được cho phép"
+msgid "Browseable"
+msgstr ""
+
#, fuzzy
msgid "Create mask"
msgstr "Tạo Mask"
diff --git a/applications/luci-app-samba/po/zh-cn/samba.po b/applications/luci-app-samba/po/zh-cn/samba.po
index 4ff671b85a..2294b611aa 100644
--- a/applications/luci-app-samba/po/zh-cn/samba.po
+++ b/applications/luci-app-samba/po/zh-cn/samba.po
@@ -22,6 +22,9 @@ msgstr "å…许系统用户通过网络共享访问他们的主目录"
msgid "Allowed users"
msgstr "å…许用户"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "创建æƒé™"
diff --git a/applications/luci-app-samba/po/zh-tw/samba.po b/applications/luci-app-samba/po/zh-tw/samba.po
index 6ec99ee20b..bfa2d7d6dd 100644
--- a/applications/luci-app-samba/po/zh-tw/samba.po
+++ b/applications/luci-app-samba/po/zh-tw/samba.po
@@ -20,6 +20,9 @@ msgstr "å…許系統使用者é€éŽç¶²è·¯åˆ†äº«å®¶ç›®éŒ„"
msgid "Allowed users"
msgstr "å…許使用者"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "建立權é™"
@@ -70,7 +73,9 @@ msgid ""
"your samba configuration will be generated. Values enclosed by pipe symbols "
"('|') should not be changed. They get their values from the 'General "
"Settings' tab."
-msgstr "建立Samba設定的 \"/etc/samba/smb.conf.template\" 檔案內容。被('|')包åœçš„值å¯ä»¥åœ¨åŸºæœ¬è¨­å®šä¸­é€²è¡Œè¨­å®š"
+msgstr ""
+"建立Samba設定的 \"/etc/samba/smb.conf.template\" 檔案內容。被('|')包åœçš„值å¯"
+"以在基本設定中進行設定"
msgid "Workgroup"
msgstr "工作群組"
diff --git a/applications/luci-app-shadowsocks-libev/po/pt-br/shadowsocks-libev.po b/applications/luci-app-shadowsocks-libev/po/pt-br/shadowsocks-libev.po
new file mode 100644
index 0000000000..f2b18e374c
--- /dev/null
+++ b/applications/luci-app-shadowsocks-libev/po/pt-br/shadowsocks-libev.po
@@ -0,0 +1,97 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: pt_BR\n"
+
+msgid "Access Control"
+msgstr "Controle de Acesso"
+
+msgid "Allow all except listed"
+msgstr "Permitir todos, exceto os listados"
+
+msgid "Allow listed only"
+msgstr "Permitir somente os listados"
+
+msgid "Bypassed IP"
+msgstr "Endereços IP Ignorados"
+
+msgid "Connection Timeout"
+msgstr "Tempo limite de conexão"
+
+msgid "Custom"
+msgstr "Personalizado"
+
+msgid "Disabled"
+msgstr "Desabilitado"
+
+msgid "Enable"
+msgstr "Ativar"
+
+msgid "Enabled"
+msgstr "Ativado"
+
+msgid "Encrypt Method"
+msgstr "Método de Cifragem"
+
+msgid "Forwarded IP"
+msgstr "Endereço IP Encaminhado"
+
+msgid "Forwarding Tunnel"
+msgstr "Tunel para Encaminhamento"
+
+msgid "Global Setting"
+msgstr "Opções Globais"
+
+msgid "Ignore List"
+msgstr "Lista de Ignorados"
+
+msgid "LAN"
+msgstr "LAN"
+
+msgid "LAN IP List"
+msgstr "Lista de endereços IP da LAN"
+
+msgid "Local Port"
+msgstr "Porta Local"
+
+msgid "Password"
+msgstr "Senha"
+
+msgid "Relay Mode"
+msgstr "Modo de Retransmissor"
+
+msgid "Server Address"
+msgstr "Endereço do Servidor"
+
+msgid "Server Port"
+msgstr "Porta do servidor"
+
+msgid "ShadowSocks-libev"
+msgstr "ShadowSocks-libev"
+
+msgid "ShadowSocks-libev is not running"
+msgstr "O serviço ShadowSocks-libev está parado"
+
+msgid "ShadowSocks-libev is running"
+msgstr "O serviço ShadowSocks-libev está em execução."
+
+msgid "UDP Forward"
+msgstr "Encaminhamento UDP"
+
+msgid "UDP Local Port"
+msgstr "Porta Local UDP"
+
+msgid "UDP Relay"
+msgstr "Retransmissão UDP"
+
+msgid "WAN"
+msgstr "WAN"
diff --git a/applications/luci-app-shairplay/po/pt-br/shairplay.po b/applications/luci-app-shairplay/po/pt-br/shairplay.po
new file mode 100644
index 0000000000..c7d0ab18a3
--- /dev/null
+++ b/applications/luci-app-shairplay/po/pt-br/shairplay.po
@@ -0,0 +1,54 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: pt_BR\n"
+"X-Poedit-Bookmarks: -1,5,-1,-1,-1,-1,-1,-1,-1,-1\n"
+
+msgid "AO Device ID"
+msgstr "Identificador do dispositivo AO"
+
+msgid "AO Device Name"
+msgstr "Nome do dispositivo AO"
+
+msgid "AO Driver"
+msgstr "Driver do AO"
+
+msgid "Airport Name"
+msgstr "Nome do Airport"
+
+msgid "Default"
+msgstr "Padrão"
+
+msgid "Enabled"
+msgstr "Habilitado"
+
+msgid "HW Address"
+msgstr "Endereço de Hardware"
+
+msgid "Password"
+msgstr "Senha"
+
+msgid "Port"
+msgstr "Porta"
+
+msgid "Respawn"
+msgstr "Redisparar"
+
+msgid "Shairplay"
+msgstr "Shairplay"
+
+msgid ""
+"Shairplay is a simple AirPlay server implementation, here you can configure "
+"the settings."
+msgstr ""
+"Shairplay é uma implementação simples de um servidor AirPlay. Aqui você pode "
+"configurá-lo."
diff --git a/applications/luci-app-simple-adblock/Makefile b/applications/luci-app-simple-adblock/Makefile
new file mode 100644
index 0000000000..d7be6850ba
--- /dev/null
+++ b/applications/luci-app-simple-adblock/Makefile
@@ -0,0 +1,16 @@
+# Copyright (c) 2017 Stan Grishin (stangri@melmac.net)
+# This is free software, licensed under the GNU General Public License v3.
+
+include $(TOPDIR)/rules.mk
+
+PKG_LICENSE:=GPL-3.0+
+PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
+
+LUCI_TITLE:=Simple Adblock Web UI
+LUCI_DEPENDS:=+simple-adblock
+LUCI_PKGARCH:=all
+PKG_RELEASE:=2
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua b/applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua
new file mode 100644
index 0000000000..46125b3098
--- /dev/null
+++ b/applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua
@@ -0,0 +1,7 @@
+module("luci.controller.simpleadblock", package.seeall)
+function index()
+ if not nixio.fs.access("/etc/config/simple-adblock") then
+ return
+ end
+ entry({"admin", "services", "simpleadblock"}, cbi("simpleadblock"), _("Simple AdBlock"))
+end
diff --git a/applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua b/applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua
new file mode 100644
index 0000000000..214f298292
--- /dev/null
+++ b/applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua
@@ -0,0 +1,79 @@
+m = Map("simple-adblock", translate("Simple AdBlock Settings"))
+s = m:section(NamedSection, "config", "simple-adblock")
+
+-- General options
+e = s:option(Flag, "enabled", translate("Enable/start service"))
+e.rmempty = false
+
+function e.cfgvalue(self, section)
+ return self.map:get(section, "enabled") == "1" and luci.sys.init.enabled("simple-adblock") and self.enabled or self.disabled
+end
+
+function e.write(self, section, value)
+ if value == "1" then
+ luci.sys.call("/etc/init.d/simple-adblock enable >/dev/null")
+ luci.sys.call("/etc/init.d/simple-adblock start >/dev/null")
+ else
+ luci.sys.call("/etc/init.d/simple-adblock stop >/dev/null")
+ end
+ return Flag.write(self, section, value)
+end
+
+o2 = s:option(ListValue, "verbosity", translate("Output Verbosity Setting"),translate("Controls system log and console output verbosity"))
+o2:value("0", translate("Suppress output"))
+o2:value("1", translate("Some output"))
+o2:value("2", translate("Verbose output"))
+o2.rmempty = false
+o2.default = 2
+
+o3 = s:option(ListValue, "force_dns", translate("Force Router DNS"), translate("Forces Router DNS use on local devices, also known as DNS Hijacking"))
+o3:value("0", translate("Let local devices use their own DNS servers if set"))
+o3:value("1", translate("Force Router DNS server to all local devices"))
+o3.rmempty = false
+o3.default = 1
+
+
+local sysfs_path = "/sys/class/leds/"
+local leds = {}
+if nixio.fs.access(sysfs_path) then
+ leds = nixio.util.consume((nixio.fs.dir(sysfs_path)))
+end
+if #leds ~= 0 then
+ o3 = s:option(Value, "led", translate("LED to indicate status"), translate("Pick the LED not already used in ")
+ .. [[<a href="]] .. luci.dispatcher.build_url("admin/system/leds") .. [[">]]
+ .. translate("System LED Configuration") .. [[</a>]])
+ o3.rmempty = true
+ o3:value("", translate("none"))
+ for k, v in ipairs(leds) do
+ o3:value(v)
+ end
+end
+
+
+s2 = m:section(NamedSection, "config", "simple-adblock")
+-- Whitelisted Domains
+d1 = s2:option(DynamicList, "whitelist_domain", translate("Whitelisted Domains"), translate("Individual domains to be whitelisted"))
+d1.addremove = false
+d1.optional = false
+
+-- Blacklisted Domains
+d3 = s2:option(DynamicList, "blacklist_domain", translate("Blacklisted Domains"), translate("Individual domains to be blacklisted"))
+d3.addremove = false
+d3.optional = false
+
+-- Whitelisted Domains URLs
+d2 = s2:option(DynamicList, "whitelist_domains_url", translate("Whitelisted Domain URLs"), translate("URLs to lists of domains to be whitelisted"))
+d2.addremove = false
+d2.optional = false
+
+-- Blacklisted Domains URLs
+d4 = s2:option(DynamicList, "blacklist_domains_url", translate("Blacklisted Domain URLs"), translate("URLs to lists of domains to be blacklisted"))
+d4.addremove = false
+d4.optional = false
+
+-- Blacklisted Hosts URLs
+d5 = s2:option(DynamicList, "blacklist_hosts_url", translate("Blacklisted Hosts URLs"), translate("URLs to lists of hosts to be blacklisted"))
+d5.addremove = false
+d5.optional = false
+
+return m
diff --git a/applications/luci-app-simple-adblock/po/ja/simple-adblock.po b/applications/luci-app-simple-adblock/po/ja/simple-adblock.po
new file mode 100644
index 0000000000..7926595b6e
--- /dev/null
+++ b/applications/luci-app-simple-adblock/po/ja/simple-adblock.po
@@ -0,0 +1,93 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.12\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid "Blacklisted Domain URLs"
+msgstr "ドメイン ブラックリストã®URL"
+
+msgid "Blacklisted Domains"
+msgstr "ブラックリスト ドメイン"
+
+msgid "Blacklisted Hosts URLs"
+msgstr "hosts ブラックリストã®URL"
+
+msgid "Controls system log and console output verbosity"
+msgstr "システム ログã¨ã‚³ãƒ³ã‚½ãƒ¼ãƒ«å‡ºåŠ›ã®å†—長性を設定ã—ã¾ã™ã€‚"
+
+msgid "Enable/start service"
+msgstr "サービスã®æœ‰åŠ¹åŒ–/開始"
+
+msgid "Force Router DNS"
+msgstr "ルーターDNSã®å¼·åˆ¶"
+
+msgid "Force Router DNS server to all local devices"
+msgstr "全ローカル デãƒã‚¤ã‚¹ã«ãƒ«ãƒ¼ã‚¿ãƒ¼ DNSサーãƒãƒ¼ã®ä½¿ç”¨ã‚’強制"
+
+msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
+msgstr ""
+"ローカル デãƒã‚¤ã‚¹ã«å¯¾ã—ã€ãƒ«ãƒ¼ã‚¿ãƒ¼ä¸Šã®DNSサーãƒãƒ¼ã®ä½¿ç”¨ã‚’強制ã—ã¾ã™ã€‚ã“ã‚Œã¯ã€"
+"DNS ãƒã‚¤ã‚¸ãƒ£ãƒƒã‚¯ã¨ã—ã¦ã‚‚知られã¦ã„ã¾ã™ã€‚"
+
+msgid "Individual domains to be blacklisted"
+msgstr "ブラックリストã«ç™»éŒ²ã™ã‚‹ã€å€‹ã€…ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã§ã™ã€‚"
+
+msgid "Individual domains to be whitelisted"
+msgstr "ホワイトリストã«ç™»éŒ²ã™ã‚‹ã€å€‹ã€…ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã§ã™ã€‚"
+
+msgid "LED to indicate status"
+msgstr "ステータスを表示ã™ã‚‹LED"
+
+msgid "Let local devices use their own DNS servers if set"
+msgstr "DNSサーãƒãƒ¼ã®ä½¿ç”¨ã‚’強制ã—ãªã„"
+
+msgid "Output Verbosity Setting"
+msgstr "出力詳細度ã®è¨­å®š"
+
+msgid "Pick the LED not already used in"
+msgstr "å³ã®è¨­å®šã§æ—¢ã«ä½¿ç”¨ã•ã‚Œã¦ã„ãªã„LEDã‚’é¸æŠžã—ã¾ã™:"
+
+msgid "Simple AdBlock"
+msgstr "Simple AdBlock"
+
+msgid "Simple AdBlock Settings"
+msgstr "Simple AdBlock 設定"
+
+msgid "Some output"
+msgstr "軽é‡å‡ºåŠ›"
+
+msgid "Suppress output"
+msgstr "出力ã®æŠ‘制"
+
+msgid "System LED Configuration"
+msgstr "LED 設定"
+
+msgid "URLs to lists of domains to be blacklisted"
+msgstr "ブラックリストã«ç™»éŒ²ã™ã‚‹ãƒ‰ãƒ¡ã‚¤ãƒ³ã®ãƒªã‚¹ãƒˆã®URLã§ã™ã€‚"
+
+msgid "URLs to lists of domains to be whitelisted"
+msgstr "ホワイトリストã«ç™»éŒ²ã™ã‚‹ãƒ‰ãƒ¡ã‚¤ãƒ³ã®ãƒªã‚¹ãƒˆã®URLã§ã™ã€‚"
+
+msgid "URLs to lists of hosts to be blacklisted"
+msgstr "ブラックリストã«ç™»éŒ²ã™ã‚‹ãƒ‰ãƒ¡ã‚¤ãƒ³ãŒåˆ—挙ã•ã‚ŒãŸã€hostsファイルã®URLã§ã™ã€‚"
+
+msgid "Verbose output"
+msgstr "詳細出力"
+
+msgid "Whitelisted Domain URLs"
+msgstr "ドメイン ホワイトリストã®URL"
+
+msgid "Whitelisted Domains"
+msgstr "ホワイトリスト ドメイン"
+
+msgid "none"
+msgstr "ãªã—"
diff --git a/applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po b/applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po
new file mode 100644
index 0000000000..6dbbf8b844
--- /dev/null
+++ b/applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po
@@ -0,0 +1,86 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "Blacklisted Domain URLs"
+msgstr "Endereço com lista de Domínio para a Lista Negra"
+
+msgid "Blacklisted Domains"
+msgstr "Domínios para a Lista Negra"
+
+msgid "Blacklisted Hosts URLs"
+msgstr "Endereços de Hosts para a Lista Negra"
+
+msgid "Controls system log and console output verbosity"
+msgstr ""
+"Controla o sistema de registro e o detalhamento das mensagens de saída do "
+"console"
+
+msgid "Enable/start service"
+msgstr "Habilitar/Iniciar o serviço"
+
+msgid "Force Router DNS"
+msgstr "Forçar o DNS do Roteador"
+
+msgid "Force Router DNS server to all local devices"
+msgstr "Forçar o servidor de DNS do Roteador para todos os dispositivos locais"
+
+msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
+msgstr ""
+"Forçar o uso do DNS do Roteador nos dispositivos locais, também conhecido "
+"como redirecionamento de DNS"
+
+msgid "Individual domains to be blacklisted"
+msgstr "Domínios individuais para serem incluídos na Lista Negra"
+
+msgid "Individual domains to be whitelisted"
+msgstr "Domínios individuais para serem incluídos na Lista Branca"
+
+msgid "LED to indicate status"
+msgstr "LED para indicar o estado"
+
+msgid "Let local devices use their own DNS servers if set"
+msgstr ""
+"Deixe que os dispositivos locais usem seus próprios servidores de DNS, se "
+"definidos"
+
+msgid "Output Verbosity Setting"
+msgstr "Definição do detalhamento do registro"
+
+msgid "Pick the LED not already used in"
+msgstr "Escolha um LED não usando em"
+
+msgid "Simple AdBlock"
+msgstr "Simple AdBlock"
+
+msgid "Simple AdBlock Settings"
+msgstr "Configuração do Simple AdBlock"
+
+msgid "Some output"
+msgstr "Pouco detalhado"
+
+msgid "Suppress output"
+msgstr "Suprimir"
+
+msgid "System LED Configuration"
+msgstr "Configuração do LED"
+
+msgid "URLs to lists of domains to be blacklisted"
+msgstr "Endereço da lista dos domínios para a Lista Negra"
+
+msgid "URLs to lists of domains to be whitelisted"
+msgstr "Endereço da lista dos domínios para a Lista Branca"
+
+msgid "URLs to lists of hosts to be blacklisted"
+msgstr "Endereço da lista dos hosts para a Lista Negra"
+
+msgid "Verbose output"
+msgstr "Detalhado"
+
+msgid "Whitelisted Domain URLs"
+msgstr "Endereço com lista de domínio para a Lista Branca"
+
+msgid "Whitelisted Domains"
+msgstr "Domínios para a Lista Branca"
+
+msgid "none"
+msgstr "Nenhum"
diff --git a/applications/luci-app-simple-adblock/po/pt/simple-adblock.po b/applications/luci-app-simple-adblock/po/pt/simple-adblock.po
new file mode 100644
index 0000000000..6dbbf8b844
--- /dev/null
+++ b/applications/luci-app-simple-adblock/po/pt/simple-adblock.po
@@ -0,0 +1,86 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "Blacklisted Domain URLs"
+msgstr "Endereço com lista de Domínio para a Lista Negra"
+
+msgid "Blacklisted Domains"
+msgstr "Domínios para a Lista Negra"
+
+msgid "Blacklisted Hosts URLs"
+msgstr "Endereços de Hosts para a Lista Negra"
+
+msgid "Controls system log and console output verbosity"
+msgstr ""
+"Controla o sistema de registro e o detalhamento das mensagens de saída do "
+"console"
+
+msgid "Enable/start service"
+msgstr "Habilitar/Iniciar o serviço"
+
+msgid "Force Router DNS"
+msgstr "Forçar o DNS do Roteador"
+
+msgid "Force Router DNS server to all local devices"
+msgstr "Forçar o servidor de DNS do Roteador para todos os dispositivos locais"
+
+msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
+msgstr ""
+"Forçar o uso do DNS do Roteador nos dispositivos locais, também conhecido "
+"como redirecionamento de DNS"
+
+msgid "Individual domains to be blacklisted"
+msgstr "Domínios individuais para serem incluídos na Lista Negra"
+
+msgid "Individual domains to be whitelisted"
+msgstr "Domínios individuais para serem incluídos na Lista Branca"
+
+msgid "LED to indicate status"
+msgstr "LED para indicar o estado"
+
+msgid "Let local devices use their own DNS servers if set"
+msgstr ""
+"Deixe que os dispositivos locais usem seus próprios servidores de DNS, se "
+"definidos"
+
+msgid "Output Verbosity Setting"
+msgstr "Definição do detalhamento do registro"
+
+msgid "Pick the LED not already used in"
+msgstr "Escolha um LED não usando em"
+
+msgid "Simple AdBlock"
+msgstr "Simple AdBlock"
+
+msgid "Simple AdBlock Settings"
+msgstr "Configuração do Simple AdBlock"
+
+msgid "Some output"
+msgstr "Pouco detalhado"
+
+msgid "Suppress output"
+msgstr "Suprimir"
+
+msgid "System LED Configuration"
+msgstr "Configuração do LED"
+
+msgid "URLs to lists of domains to be blacklisted"
+msgstr "Endereço da lista dos domínios para a Lista Negra"
+
+msgid "URLs to lists of domains to be whitelisted"
+msgstr "Endereço da lista dos domínios para a Lista Branca"
+
+msgid "URLs to lists of hosts to be blacklisted"
+msgstr "Endereço da lista dos hosts para a Lista Negra"
+
+msgid "Verbose output"
+msgstr "Detalhado"
+
+msgid "Whitelisted Domain URLs"
+msgstr "Endereço com lista de domínio para a Lista Branca"
+
+msgid "Whitelisted Domains"
+msgstr "Domínios para a Lista Branca"
+
+msgid "none"
+msgstr "Nenhum"
diff --git a/applications/luci-app-simple-adblock/po/templates/simple-adblock.pot b/applications/luci-app-simple-adblock/po/templates/simple-adblock.pot
new file mode 100644
index 0000000000..4cfff964a3
--- /dev/null
+++ b/applications/luci-app-simple-adblock/po/templates/simple-adblock.pot
@@ -0,0 +1,80 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Blacklisted Domain URLs"
+msgstr ""
+
+msgid "Blacklisted Domains"
+msgstr ""
+
+msgid "Blacklisted Hosts URLs"
+msgstr ""
+
+msgid "Controls system log and console output verbosity"
+msgstr ""
+
+msgid "Enable/start service"
+msgstr ""
+
+msgid "Force Router DNS"
+msgstr ""
+
+msgid "Force Router DNS server to all local devices"
+msgstr ""
+
+msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
+msgstr ""
+
+msgid "Individual domains to be blacklisted"
+msgstr ""
+
+msgid "Individual domains to be whitelisted"
+msgstr ""
+
+msgid "LED to indicate status"
+msgstr ""
+
+msgid "Let local devices use their own DNS servers if set"
+msgstr ""
+
+msgid "Output Verbosity Setting"
+msgstr ""
+
+msgid "Pick the LED not already used in"
+msgstr ""
+
+msgid "Simple AdBlock"
+msgstr ""
+
+msgid "Simple AdBlock Settings"
+msgstr ""
+
+msgid "Some output"
+msgstr ""
+
+msgid "Suppress output"
+msgstr ""
+
+msgid "System LED Configuration"
+msgstr ""
+
+msgid "URLs to lists of domains to be blacklisted"
+msgstr ""
+
+msgid "URLs to lists of domains to be whitelisted"
+msgstr ""
+
+msgid "URLs to lists of hosts to be blacklisted"
+msgstr ""
+
+msgid "Verbose output"
+msgstr ""
+
+msgid "Whitelisted Domain URLs"
+msgstr ""
+
+msgid "Whitelisted Domains"
+msgstr ""
+
+msgid "none"
+msgstr ""
diff --git a/applications/luci-app-simple-adblock/root/etc/uci-defaults/40_luci-simple-adblock b/applications/luci-app-simple-adblock/root/etc/uci-defaults/40_luci-simple-adblock
new file mode 100644
index 0000000000..3b7137e026
--- /dev/null
+++ b/applications/luci-app-simple-adblock/root/etc/uci-defaults/40_luci-simple-adblock
@@ -0,0 +1,10 @@
+#!/bin/sh
+uci -q batch <<-EOF >/dev/null
+ delete ucitrack.@simple-adblock[-1]
+ add ucitrack simple-adblock
+ set ucitrack.@simple-adblock[-1].init=simple-adblock
+ commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
diff --git a/applications/luci-app-squid/Makefile b/applications/luci-app-squid/Makefile
new file mode 100644
index 0000000000..82802c0e5a
--- /dev/null
+++ b/applications/luci-app-squid/Makefile
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Squid LuCI Interface
+LUCI_DEPENDS:=+luci-mod-admin-full +squid
+
+PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-squid/luasrc/controller/squid.lua b/applications/luci-app-squid/luasrc/controller/squid.lua
new file mode 100644
index 0000000000..09946a1511
--- /dev/null
+++ b/applications/luci-app-squid/luasrc/controller/squid.lua
@@ -0,0 +1,21 @@
+--[[
+
+LuCI Squid module
+
+Copyright (C) 2015, OpenWrt.org
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
+
+]]--
+
+module("luci.controller.squid", package.seeall)
+
+function index()
+ entry({"admin", "services", "squid"}, cbi("squid"), _("Squid"))
+end
diff --git a/applications/luci-app-squid/luasrc/model/cbi/squid.lua b/applications/luci-app-squid/luasrc/model/cbi/squid.lua
new file mode 100644
index 0000000000..0ac554a3ee
--- /dev/null
+++ b/applications/luci-app-squid/luasrc/model/cbi/squid.lua
@@ -0,0 +1,67 @@
+--[[
+
+LuCI Squid module
+
+Copyright (C) 2015, OpenWrt.org
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Author: Marko Ratkaj <marko.ratkaj@sartura.hr>
+
+]]--
+
+local fs = require "nixio.fs"
+local sys = require "luci.sys"
+require "ubus"
+
+m = Map("squid", translate("Squid"))
+m.on_after_commit = function() luci.sys.call("/etc/init.d/squid restart") end
+
+s = m:section(TypedSection, "squid")
+s.anonymous = true
+s.addremove = false
+
+s:tab("general", translate("General Settings"))
+
+http_port = s:taboption("general", Value, "http_port", translate("Port"))
+http_port.datatype = "portrange"
+http_port.placeholder = "0-65535"
+
+visible_hostname = s:taboption("general", Value, "visible_hostname", translate("Visible Hostname"))
+visible_hostname.datatype="string"
+visible_hostname.placeholder = "OpenWrt"
+
+coredump_dir = s:taboption("general", Value, "coredump_dir", translate("Coredump files directory"))
+coredump_dir.datatype="string"
+coredump_dir.placeholder = "/tmp/squid"
+
+s:tab("advanced", translate("Advanced Settings"))
+
+squid_config_file = s:taboption("advanced", TextValue, "_data", "")
+squid_config_file.wrap = "off"
+squid_config_file.rows = 25
+squid_config_file.rmempty = false
+
+function squid_config_file.cfgvalue()
+ local uci = require "luci.model.uci".cursor_state()
+ local file = uci:get("squid", "squid", "config_file")
+ if file then
+ return fs.readfile(file) or ""
+ else
+ return ""
+ end
+end
+
+function squid_config_file.write(self, section, value)
+ if value then
+ local uci = require "luci.model.uci".cursor_state()
+ local file = uci:get("squid", "squid", "config_file")
+ fs.writefile(file, value:gsub("\r\n", "\n"))
+ end
+end
+
+return m
diff --git a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
index 36c5554d35..1bc0714de8 100644
--- a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
+++ b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
@@ -24,6 +24,7 @@ function index()
s_network = _("Network plugins"),
conntrack = _("Conntrack"),
+ contextswitch = _("Context Switches"),
cpu = _("Processor"),
cpufreq = _("CPU Frequency"),
csv = _("CSV Output"),
@@ -58,7 +59,7 @@ function index()
-- our collectd menu
local collectd_menu = {
output = { "csv", "network", "rrdtool", "unixsock" },
- general = { "cpu", "cpufreq", "df", "disk", "email",
+ general = { "contextswitch", "cpu", "cpufreq", "df", "disk", "email",
"entropy", "exec", "irq", "load", "memory",
"nut", "processes", "sensors", "thermal", "uptime" },
network = { "conntrack", "dns", "interface", "iptables",
diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua
new file mode 100644
index 0000000000..7ae6b24ba1
--- /dev/null
+++ b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua
@@ -0,0 +1,14 @@
+-- Licensed to the public under the Apache License 2.0.
+
+m = Map("luci_statistics",
+ translate("CPU Context Switches Plugin Configuration"),
+ translate("This plugin collects statistics about the processor context switches."))
+
+-- collectd_contextswitch config section
+s = m:section( NamedSection, "collectd_contextswitch", "luci_statistics" )
+
+-- collectd_contextswitch.enable
+enable = s:option( Flag, "enable", translate("Enable this plugin") )
+enable.default = 0
+
+return m
diff --git a/applications/luci-app-statistics/luasrc/statistics/datatree.lua b/applications/luci-app-statistics/luasrc/statistics/datatree.lua
index 806b054cb6..5176a19a22 100644
--- a/applications/luci-app-statistics/luasrc/statistics/datatree.lua
+++ b/applications/luci-app-statistics/luasrc/statistics/datatree.lua
@@ -13,9 +13,17 @@ local sections = uci:get_all("luci_statistics")
Instance = util.class()
function Instance.__init__( self, host )
- self._host = host or sections.collectd.Hostname or sys.hostname()
- self._libdir = sections.collectd.PluginDir or "/usr/lib/collectd"
- self._rrddir = sections.collectd_rrdtool.DataDir or "/tmp/rrd"
+ self._host = host or sys.hostname()
+ self._libdir = "/usr/lib/collectd"
+ self._rrddir = "/tmp/rrd"
+
+ if sections and sections.collectd then
+ self._host = host or sections.collectd.Hostname or sys.hostname()
+ self._libdir = sections.collectd.PluginDir or "/usr/lib/collectd"
+ end
+ if sections and sections.collectd_rrdtool then
+ self._rrddir = sections.collectd_rrdtool.DataDir or "/tmp/rrd"
+ end
self._libdir = self._libdir:gsub("/$","")
self._rrddir = self._rrddir:gsub("/$","")
diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/contextswitch.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/contextswitch.lua
new file mode 100644
index 0000000000..6826e12adb
--- /dev/null
+++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/contextswitch.lua
@@ -0,0 +1,23 @@
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.statistics.rrdtool.definitions.contextswitch",package.seeall)
+
+function rrdargs( graph, plugin, plugin_instance, dtype )
+
+ return {
+ title = "%H: Context switches",
+ alt_autoscale = true,
+ vlabel = "Switches/s",
+ number_format = "%5.0lf",
+ data = {
+ types = { "contextswitch" },
+ sources = {
+ contextswitch = { "value" }
+ },
+ options = {
+ contextswitch = { color = "0000ff", title = "Context switches", noarea=true, overlay=true }
+ }
+ }
+ }
+end
+
diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua
index d48441abd2..62d0545973 100644
--- a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua
+++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua
@@ -5,28 +5,30 @@ module("luci.statistics.rrdtool.definitions.processes", package.seeall)
function rrdargs( graph, plugin, plugin_instance, dtype )
+ if plugin_instance == "" then
return {
- {
title = "%H: Processes",
vlabel = "Processes/s",
data = {
instances = {
ps_state = {
- "sleeping", "running", "paging", "blocked", "stopped", "zombies"
+ "sleeping", "running", "paging",
+ "blocked", "stopped", "zombies"
}
},
options = {
- ps_state_sleeping = { color = "0000ff" },
- ps_state_running = { color = "008000" },
- ps_state_paging = { color = "ffff00" },
- ps_state_blocked = { color = "ff5000" },
- ps_state_stopped = { color = "555555" },
- ps_state_zombies = { color = "ff0000" }
+ ps_state_sleeping = { color = "0000ff", title = "Sleeping" },
+ ps_state_running = { color = "008000", title = "Running" },
+ ps_state_paging = { color = "ffff00", title = "Paging" },
+ ps_state_blocked = { color = "ff5000", title = "Blocked" },
+ ps_state_stopped = { color = "555555", title = "Stopped" },
+ ps_state_zombies = { color = "ff0000", title = "Zombies" }
}
}
- },
-
+ }
+ else
+ return {
{
title = "%H: CPU time used by %pi",
vlabel = "Jiffies",
@@ -38,11 +40,13 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
options = {
ps_cputime__user = {
color = "0000ff",
+ title = "User",
overlay = true
},
ps_cputime__syst = {
color = "ff0000",
+ title = "System",
overlay = true
}
}
@@ -59,15 +63,15 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
},
options = {
- ps_count__threads = { color = "00ff00" },
- ps_count__processes = { color = "0000bb" }
+ ps_count__threads = { color = "00ff00", title = "Threads" },
+ ps_count__processes = { color = "0000bb", title = "Processes" }
}
}
},
{
title = "%H: Page faults in %pi",
- vlabel = "Pagefaults",
+ vlabel = "Page faults",
detail = true,
data = {
sources = {
@@ -75,14 +79,14 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
},
options = {
- ps_pagefaults__minflt = { color = "ff0000" },
- ps_pagefaults__majflt = { color = "ff5500" }
+ ps_pagefaults__minflt = { color = "0000ff", title = "Minor" },
+ ps_pagefaults__majflt = { color = "ff0000", title = "Major" }
}
}
},
{
- title = "%H: Virtual memory size of %pi",
+ title = "%H: Resident segment size (RSS) of %pi",
vlabel = "Bytes",
detail = true,
number_format = "%5.1lf%sB",
@@ -90,9 +94,24 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
types = { "ps_rss" },
options = {
- ps_rss = { color = "0000ff" }
+ ps_rss = { color = "0000ff", title = "Resident segment" }
+ }
+ }
+ },
+
+ {
+ title = "%H: Virtual memory size (VSZ) of %pi",
+ vlabel = "Bytes",
+ detail = true,
+ number_format = "%5.1lf%sB",
+ data = {
+ types = { "ps_vm" },
+
+ options = {
+ ps_vm = { color = "0000ff", title = "Virtual memory" }
}
}
}
}
+ end
end
diff --git a/applications/luci-app-statistics/po/ca/statistics.po b/applications/luci-app-statistics/po/ca/statistics.po
index b6a98a0999..33d5051f44 100644
--- a/applications/luci-app-statistics/po/ca/statistics.po
+++ b/applications/luci-app-statistics/po/ca/statistics.po
@@ -39,6 +39,9 @@ msgstr "Directori base"
msgid "Basic monitoring"
msgstr "Monitoreig bàsic"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -90,6 +93,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr "Configuració del connector Conntrack"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Configuració del connector DF"
@@ -696,6 +702,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/cs/statistics.po b/applications/luci-app-statistics/po/cs/statistics.po
index b4a936a7c2..849831607c 100644
--- a/applications/luci-app-statistics/po/cs/statistics.po
+++ b/applications/luci-app-statistics/po/cs/statistics.po
@@ -35,6 +35,9 @@ msgstr "Základní adresář"
msgid "Basic monitoring"
msgstr "Základní sledování"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -86,6 +89,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr "Nastavení pluginu Conntrack"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Nastavení pluginu DF"
@@ -682,6 +688,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/de/statistics.po b/applications/luci-app-statistics/po/de/statistics.po
index ef29176f62..196433e503 100644
--- a/applications/luci-app-statistics/po/de/statistics.po
+++ b/applications/luci-app-statistics/po/de/statistics.po
@@ -37,6 +37,9 @@ msgstr "Basisverzeichnis"
msgid "Basic monitoring"
msgstr "Schnittstellen einfach überwachen"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -88,6 +91,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr "Conntrack Plugin Einstellungen"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "DF Plugin Konfiguration"
@@ -701,6 +707,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/el/statistics.po b/applications/luci-app-statistics/po/el/statistics.po
index 9b530c0131..da54cdac6c 100644
--- a/applications/luci-app-statistics/po/el/statistics.po
+++ b/applications/luci-app-statistics/po/el/statistics.po
@@ -38,6 +38,9 @@ msgstr "Κατάλογος βάσης"
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -89,6 +92,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -642,6 +648,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/en/statistics.po b/applications/luci-app-statistics/po/en/statistics.po
index 3e9c829150..d9ab59ce0a 100644
--- a/applications/luci-app-statistics/po/en/statistics.po
+++ b/applications/luci-app-statistics/po/en/statistics.po
@@ -37,6 +37,9 @@ msgstr "Base Directory"
msgid "Basic monitoring"
msgstr "Basic monitoring"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -88,6 +91,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "DF Plugin Configuration"
@@ -684,6 +690,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/es/statistics.po b/applications/luci-app-statistics/po/es/statistics.po
index 2db483cfac..18c25819a6 100644
--- a/applications/luci-app-statistics/po/es/statistics.po
+++ b/applications/luci-app-statistics/po/es/statistics.po
@@ -37,6 +37,9 @@ msgstr "Directorio Base"
msgid "Basic monitoring"
msgstr "Monitorización básica"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -88,6 +91,9 @@ msgstr "Seguimiento"
msgid "Conntrack Plugin Configuration"
msgstr "Configuración del seguimiento"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Configuración del plugin DF"
@@ -697,6 +703,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/fr/statistics.po b/applications/luci-app-statistics/po/fr/statistics.po
index d4190d34aa..b657bd38f0 100644
--- a/applications/luci-app-statistics/po/fr/statistics.po
+++ b/applications/luci-app-statistics/po/fr/statistics.po
@@ -37,6 +37,9 @@ msgstr "Répertoire de base"
msgid "Basic monitoring"
msgstr "Surveillance de base"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -88,6 +91,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Configuration du greffon DF"
@@ -690,6 +696,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/he/statistics.po b/applications/luci-app-statistics/po/he/statistics.po
index e27d219b0c..6f40a47a24 100644
--- a/applications/luci-app-statistics/po/he/statistics.po
+++ b/applications/luci-app-statistics/po/he/statistics.po
@@ -37,6 +37,9 @@ msgstr ""
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -85,6 +88,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -637,6 +643,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/hu/statistics.po b/applications/luci-app-statistics/po/hu/statistics.po
index 4767442111..979c72f0f8 100644
--- a/applications/luci-app-statistics/po/hu/statistics.po
+++ b/applications/luci-app-statistics/po/hu/statistics.po
@@ -35,6 +35,9 @@ msgstr "Alapkönyvtár"
msgid "Basic monitoring"
msgstr "Ãltalános figyelés"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -86,6 +89,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr "Conntrack bővítmény beállítása"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "DF bővítmény beállítása"
@@ -684,6 +690,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/it/statistics.po b/applications/luci-app-statistics/po/it/statistics.po
index 3c50ac3d3a..b0ae3d6b76 100644
--- a/applications/luci-app-statistics/po/it/statistics.po
+++ b/applications/luci-app-statistics/po/it/statistics.po
@@ -37,6 +37,9 @@ msgstr ""
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -88,6 +91,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -647,6 +653,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/ja/statistics.po b/applications/luci-app-statistics/po/ja/statistics.po
index 2a3ffe54cd..690d9207d7 100644
--- a/applications/luci-app-statistics/po/ja/statistics.po
+++ b/applications/luci-app-statistics/po/ja/statistics.po
@@ -37,6 +37,9 @@ msgstr "ベース・ディレクトリ"
msgid "Basic monitoring"
msgstr "基本モニタリング"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr "CPU 周波数"
@@ -87,6 +90,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr "Conntrack プラグイン設定"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "DF プラグイン設定"
@@ -699,6 +705,9 @@ msgstr "サーマル"
msgid "Thermal Plugin Configuration"
msgstr "サーマル プラグイン設定"
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
"ã“ã®ãƒ—ラグインã¯ã€ãƒ—ロセッサー周波数スケーリングã«ã¤ã„ã¦ã®çµ±è¨ˆã‚’åŽé›†ã—ã¾ã™ã€‚"
diff --git a/applications/luci-app-statistics/po/ms/statistics.po b/applications/luci-app-statistics/po/ms/statistics.po
index 2a047767ec..582314c545 100644
--- a/applications/luci-app-statistics/po/ms/statistics.po
+++ b/applications/luci-app-statistics/po/ms/statistics.po
@@ -34,6 +34,9 @@ msgstr ""
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -82,6 +85,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -634,6 +640,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/no/statistics.po b/applications/luci-app-statistics/po/no/statistics.po
index 3e3a8e1259..d37bc488f5 100644
--- a/applications/luci-app-statistics/po/no/statistics.po
+++ b/applications/luci-app-statistics/po/no/statistics.po
@@ -28,6 +28,9 @@ msgstr "Hoved Katalog"
msgid "Basic monitoring"
msgstr "Enkel overvåking"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -79,6 +82,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "DF plugin konfigurasjon"
@@ -672,6 +678,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/pl/statistics.po b/applications/luci-app-statistics/po/pl/statistics.po
index 474b673ef1..bf2ec93516 100644
--- a/applications/luci-app-statistics/po/pl/statistics.po
+++ b/applications/luci-app-statistics/po/pl/statistics.po
@@ -38,6 +38,9 @@ msgstr "Główny katalog"
msgid "Basic monitoring"
msgstr "Podstawowy monitoring"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -89,6 +92,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr "Konfiguracja wtyczki Conntrack"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Konfiguracja wtyczki DF"
@@ -692,6 +698,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/pt-br/statistics.po b/applications/luci-app-statistics/po/pt-br/statistics.po
index 44f53f0465..74c4a2603f 100644
--- a/applications/luci-app-statistics/po/pt-br/statistics.po
+++ b/applications/luci-app-statistics/po/pt-br/statistics.po
@@ -1,17 +1,17 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2014-03-15 22:12+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-02-22 18:27-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"Language-Team: \n"
msgid "Action (target)"
msgstr "Ação (destino)"
@@ -29,7 +29,7 @@ msgid "Add notification command"
msgstr "Adicionar o comando de notificação"
msgid "Aggregate number of connected users"
-msgstr ""
+msgstr "Numero agregado de usuários conectados"
msgid "Base Directory"
msgstr "Diretório Base"
@@ -37,11 +37,14 @@ msgstr "Diretório Base"
msgid "Basic monitoring"
msgstr "Monitoramento básico"
-msgid "CPU Frequency"
+msgid "CPU Context Switches Plugin Configuration"
msgstr ""
+msgid "CPU Frequency"
+msgstr "Frequência da CPU"
+
msgid "CPU Frequency Plugin Configuration"
-msgstr ""
+msgstr "Configuração do Plugin da Frequência da CPU"
msgid "CPU Plugin Configuration"
msgstr "Configuração do plugin CPU"
@@ -88,6 +91,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr "Configuração do Plugin do Conntrack"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Configuração do plugin DF"
@@ -134,16 +140,16 @@ msgid "Email"
msgstr "Email"
msgid "Empty value = monitor all"
-msgstr ""
+msgstr "Valor vazio = monitore todos"
msgid "Enable this plugin"
msgstr "Habilitar este plugin"
msgid "Entropy"
-msgstr ""
+msgstr "Entropia"
msgid "Entropy Plugin Configuration"
-msgstr ""
+msgstr "Configuração do Plugin de Entropia"
msgid "Exec"
msgstr "Exec"
@@ -165,13 +171,13 @@ msgstr ""
"Encaminhamento entre o endereço de escuta e os endereços dos servidores"
msgid "Gather compression statistics"
-msgstr ""
+msgstr "Obter estatísticas sobre a compressão"
msgid "General plugins"
-msgstr ""
+msgstr "Plugins Gerais"
msgid "Generate a separate graph for each logged user"
-msgstr ""
+msgstr "Gerar um gráfico separado para cada usuário conectado"
msgid "Graphs"
msgstr "Gráficos"
@@ -204,6 +210,7 @@ msgstr ""
msgid "Hold Ctrl to select multiple items or to deselect entries."
msgstr ""
+"Segure o Ctrl para selecionar múltiplos itens ou para retirar entradas. "
msgid "Host"
msgstr "Equipamento"
@@ -259,6 +266,8 @@ msgid ""
"Max values for a period can be used instead of averages when not using 'only "
"average RRAs'"
msgstr ""
+"Valores máximos para um período podem ser usados em vez de médias quando não "
+"estiver usando 'somente RRAs de médias'"
msgid "Maximum allowed connections"
msgstr "Máximo de conexões permitidas"
@@ -276,10 +285,10 @@ msgid "Monitor all local listen ports"
msgstr "Monitorar todas as portas locais"
msgid "Monitor all sensors"
-msgstr ""
+msgstr "Monitorar todas os sensores"
msgid "Monitor device(s) / thermal zone(s)"
-msgstr ""
+msgstr "Dispositivo(s) de monitoramento / zona(s) térmica(s)"
msgid "Monitor devices"
msgstr "Monitorar dispositivos"
@@ -336,6 +345,9 @@ msgid ""
"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
"directory and all its parent directories need to be world readable."
msgstr ""
+"Nota: como as páginas são renderizadas pelo usuário 'nobody', os arquivos * ."
+"rrd, o diretório de armazenamento e todos os seus diretórios superiores "
+"precisam ser legíveis a todos."
msgid "Number of threads for data collection"
msgstr "Número de threads para o coletor de dados"
@@ -350,13 +362,13 @@ msgid "Only create average RRAs"
msgstr "Somente criar RRAs de média"
msgid "OpenVPN"
-msgstr ""
+msgstr "OpenVPN"
msgid "OpenVPN Plugin Configuration"
-msgstr ""
+msgstr "Configuração do Plugin do OpenVPN"
msgid "OpenVPN status files"
-msgstr ""
+msgstr "Arquivos de estado do OpenVPN"
msgid "Options"
msgstr "Opções"
@@ -416,13 +428,13 @@ msgid "Seconds"
msgstr "Segundos"
msgid "Sensor list"
-msgstr ""
+msgstr "Lista de sensores"
msgid "Sensors"
-msgstr ""
+msgstr "Sensores"
msgid "Sensors Plugin Configuration"
-msgstr ""
+msgstr "Configuração do Plugin de Sensores"
msgid "Server host"
msgstr "Endereço do servidor"
@@ -431,13 +443,13 @@ msgid "Server port"
msgstr "Porta do servidor"
msgid "Setup"
-msgstr ""
+msgstr "Configuração"
msgid "Shaping class monitoring"
msgstr "Monitoramento das Classes de Shaping"
msgid "Show max values instead of averages"
-msgstr ""
+msgstr "Mostrar valores máximos em vez de médias"
msgid "Socket file"
msgstr "Arquivo do socket"
@@ -461,10 +473,10 @@ msgid "Specifies what information to collect about the global topology."
msgstr "Especifica quais informações serão coletadas sobre a topologia global."
msgid "Splash Leases"
-msgstr ""
+msgstr "Concessões do Splash"
msgid "Splash Leases Plugin Configuration"
-msgstr ""
+msgstr "Configuração do Plugin das Concessões do Splash"
msgid "Statistics"
msgstr "Estatística"
@@ -513,6 +525,7 @@ msgid ""
"The OpenVPN plugin gathers information about the current vpn connection "
"status."
msgstr ""
+"O plugin OpenVPN reúne informações sobre o status atual da conexão VPN."
msgid ""
"The conntrack plugin collects statistics about the number of tracked "
@@ -565,7 +578,7 @@ msgstr ""
"Plugin::Collectd mas pode ser utilizado de outras maneiras também."
msgid "The entropy plugin collects statistics about the available entropy."
-msgstr ""
+msgstr "O plugin de entropia coleta estatísticas sobre a entropia disponível."
msgid ""
"The exec plugin starts external commands to read values from or to notify "
@@ -656,17 +669,24 @@ msgid ""
"The sensors plugin uses the Linux Sensors framework to gather environmental "
"statistics."
msgstr ""
+"O plugin de sensores usa a estrutura de sensores do Linux para coletar "
+"estatísticas ambientais."
msgid ""
"The splash leases plugin uses libuci to collect statistics about splash "
"leases."
msgstr ""
+"O plug-in de concessões splash usa o libuci para coletar estatísticas sobre "
+"concessões de splash."
msgid ""
"The statistics package uses <a href=\"https://collectd.org/\">Collectd</a> "
"to gather data and <a href=\"http://oss.oetiker.ch/rrdtool/\">RRDtool</a> to "
"render diagram images."
msgstr ""
+"O pacote de estatísticas usa <a href=\"https://collectd.org/\"> Collectd </"
+"a> para coletar dados e <a href=\"http://oss.oetiker.ch/rrdtool/\">RRDtool</"
+"a> para desenhar os gráficos."
msgid ""
"The tcpconns plugin collects informations about open tcp connections on "
@@ -680,6 +700,9 @@ msgid ""
"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be "
"read, e.g. thermal_zone1 )"
msgstr ""
+"O plugin térmico monitorará a temperatura do sistema. Os dados são "
+"tipicamente lidos de /sys/class/thermal/*/temp ('*' indica o dispositivo "
+"térmico a ser lido, ex:, thermal_zone1)"
msgid ""
"The unixsock plugin creates a unix socket which can be used to read "
@@ -690,15 +713,22 @@ msgstr ""
msgid "The uptime plugin collects statistics about the uptime of the system."
msgstr ""
+"O plugin de tempo de atividade coleta estatísticas sobre o tempo de "
+"atividade do sistema."
msgid "Thermal"
-msgstr ""
+msgstr "Térmico"
msgid "Thermal Plugin Configuration"
+msgstr "Configuração do Plugin Térmico"
+
+msgid "This plugin collects statistics about the processor context switches."
msgstr ""
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
+"Este plugin coleta as estatísticas sobre o escalonamento da frequência do "
+"processador."
msgid ""
"This section defines on which interfaces collectd will wait for incoming "
@@ -732,13 +762,13 @@ msgid "Unixsock Plugin Configuration"
msgstr "Configuração do plugin Unixsock"
msgid "Uptime"
-msgstr ""
+msgstr "Tempo de atividade"
msgid "Uptime Plugin Configuration"
-msgstr ""
+msgstr "Configuração do Plugin de Tempo de Atividade"
msgid "Use improved naming schema"
-msgstr ""
+msgstr "Use um esquema de nomeação melhorado"
msgid "Used PID file"
msgstr "Arquivo PID usado"
@@ -758,6 +788,8 @@ msgstr "Configuração do Plugin iwinfo da Rede Sem Fio (Wireless)"
msgid ""
"You can install additional collectd-mod-* plugins to enable more statistics."
msgstr ""
+"Você pode instalar plugins adicionais (collectd-mod-*) para habilitar mais "
+"estatísticas."
msgid "e.g. br-ff"
msgstr "ex: br-ff"
diff --git a/applications/luci-app-statistics/po/pt/statistics.po b/applications/luci-app-statistics/po/pt/statistics.po
index 1913d77496..79c7bd03e6 100644
--- a/applications/luci-app-statistics/po/pt/statistics.po
+++ b/applications/luci-app-statistics/po/pt/statistics.po
@@ -37,6 +37,9 @@ msgstr "Diretório Base"
msgid "Basic monitoring"
msgstr "Monitoramento básico"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -88,6 +91,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Configuração do plugin DF"
@@ -690,6 +696,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/ro/statistics.po b/applications/luci-app-statistics/po/ro/statistics.po
index 008cc8880e..c5dfcfe558 100644
--- a/applications/luci-app-statistics/po/ro/statistics.po
+++ b/applications/luci-app-statistics/po/ro/statistics.po
@@ -38,6 +38,9 @@ msgstr "Directorul de baza"
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -89,6 +92,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -643,6 +649,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/ru/statistics.po b/applications/luci-app-statistics/po/ru/statistics.po
index cb14847a40..3a418dec75 100644
--- a/applications/luci-app-statistics/po/ru/statistics.po
+++ b/applications/luci-app-statistics/po/ru/statistics.po
@@ -39,6 +39,9 @@ msgstr "Ð‘Ð°Ð·Ð¾Ð²Ð°Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ"
msgid "Basic monitoring"
msgstr "Ð‘Ð°Ð·Ð¾Ð²Ð°Ñ ÑтатиÑтика"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -89,6 +92,9 @@ msgstr "ОтÑлеживание Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ (Conntrack)"
msgid "Conntrack Plugin Configuration"
msgstr "ÐаÑтройка плагина Conntrack"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ DF"
@@ -688,6 +694,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/sk/statistics.po b/applications/luci-app-statistics/po/sk/statistics.po
index 1d1f013caf..6dba7d09b8 100644
--- a/applications/luci-app-statistics/po/sk/statistics.po
+++ b/applications/luci-app-statistics/po/sk/statistics.po
@@ -32,6 +32,9 @@ msgstr ""
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -80,6 +83,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -632,6 +638,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/sv/statistics.po b/applications/luci-app-statistics/po/sv/statistics.po
index b6d562be9c..bef0f2d6c9 100644
--- a/applications/luci-app-statistics/po/sv/statistics.po
+++ b/applications/luci-app-statistics/po/sv/statistics.po
@@ -33,6 +33,9 @@ msgstr "Basmapp"
msgid "Basic monitoring"
msgstr "Standardövervakning"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -84,6 +87,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Konfiguration av insticksprogrammet DF"
@@ -637,6 +643,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/templates/statistics.pot b/applications/luci-app-statistics/po/templates/statistics.pot
index 1b83826ad4..c57a85b76a 100644
--- a/applications/luci-app-statistics/po/templates/statistics.pot
+++ b/applications/luci-app-statistics/po/templates/statistics.pot
@@ -25,6 +25,9 @@ msgstr ""
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -73,6 +76,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -625,6 +631,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/tr/statistics.po b/applications/luci-app-statistics/po/tr/statistics.po
index a30b0b966c..6d7056f3b7 100644
--- a/applications/luci-app-statistics/po/tr/statistics.po
+++ b/applications/luci-app-statistics/po/tr/statistics.po
@@ -33,6 +33,9 @@ msgstr ""
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -81,6 +84,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -633,6 +639,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/uk/statistics.po b/applications/luci-app-statistics/po/uk/statistics.po
index 13e52d9654..de17a3caf8 100644
--- a/applications/luci-app-statistics/po/uk/statistics.po
+++ b/applications/luci-app-statistics/po/uk/statistics.po
@@ -38,6 +38,9 @@ msgstr ""
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -86,6 +89,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -638,6 +644,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/vi/statistics.po b/applications/luci-app-statistics/po/vi/statistics.po
index a5fd33d05b..bdb7f1a3a1 100644
--- a/applications/luci-app-statistics/po/vi/statistics.po
+++ b/applications/luci-app-statistics/po/vi/statistics.po
@@ -38,6 +38,9 @@ msgstr "Thư mục Cơ sở"
msgid "Basic monitoring"
msgstr "Monitoring căn bản"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -89,6 +92,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Cấu hình DF plugin"
@@ -690,6 +696,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/po/zh-cn/rrdtool.po b/applications/luci-app-statistics/po/zh-cn/rrdtool.po
index 4e6ee4b4da..d55398ace7 100644
--- a/applications/luci-app-statistics/po/zh-cn/rrdtool.po
+++ b/applications/luci-app-statistics/po/zh-cn/rrdtool.po
@@ -2,16 +2,17 @@
# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-07-23 02:08+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2017-04-15 21:41-0600\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
"Language-Team: none\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 2.0.1\n"
+"POT-Creation-Date: \n"
#. %H: Wireless - Signal Noise Ratio
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1
@@ -36,12 +37,12 @@ msgstr "ä¿¡å·å¼ºåº¦"
#. %H: Wireless - Signal Quality
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5
msgid "stat_dg_title_wireless__signal_quality"
-msgstr "无线信å·è´¨é‡"
+msgstr "%H: 无线 - ä¿¡å·è´¨é‡"
#. n
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6
msgid "stat_dg_label_wireless__signal_quality"
-msgstr "无线信å·è´¨é‡"
+msgstr "n"
#. Signal Quality
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7
@@ -51,7 +52,7 @@ msgstr "ä¿¡å·è´¨é‡"
#. %H: ICMP Roundtrip Times
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8
msgid "stat_dg_title_ping"
-msgstr "ping"
+msgstr "%H: ICMP 往返时间"
#. ms
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9
@@ -61,299 +62,299 @@ msgstr "å“应"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10
msgid "stat_ds_ping"
-msgstr "ping"
+msgstr "%di"
#. %H: Firewall - Processed Packets
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11
msgid "stat_dg_title_iptables__ipt_packets"
-msgstr "iptables包"
+msgstr "%H: 防ç«å¢™ - 已处ç†çš„æ•°æ®åŒ…"
#. Packets/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12
msgid "stat_dg_label_iptables__ipt_packets"
-msgstr ""
+msgstr "Packets/s"
#. Chain \"%di\"
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13
msgid "stat_ds_ipt_packets"
-msgstr ""
+msgstr "Chain \\\"%di\\\""
#. %H: Netlink - Transfer on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14
msgid "stat_dg_title_netlink__if_octets"
-msgstr ""
+msgstr "%H: Netlink - %pi 上的数æ®ä¼ è¾“"
#. Bytes/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15
msgid "stat_dg_label_netlink__if_octets"
-msgstr ""
+msgstr "字节/秒"
#. Bytes (%ds)
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16
msgid "stat_ds_if_octets"
-msgstr ""
+msgstr "字节 (%ds)"
#. %H: Netlink - Packets on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17
msgid "stat_dg_title_netlink__if_packets"
-msgstr ""
+msgstr "%H: Netlink - %pi çš„æ•°æ®åŒ…"
#. Packets/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18
msgid "stat_dg_label_netlink__if_packets"
-msgstr ""
+msgstr "Packets/s"
#. Processed (%ds)
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19
msgid "stat_ds_if_packets"
-msgstr ""
+msgstr "å·²å¤„ç† (%ds)"
#. Dropped (%ds)
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20
msgid "stat_ds_if_dropped"
-msgstr ""
+msgstr "丢弃 (%ds)"
#. Errors (%ds)
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21
msgid "stat_ds_if_errors"
-msgstr ""
+msgstr "错误 (%ds)"
#. %H: Netlink - Multicast on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22
msgid "stat_dg_title_netlink__if_multicast"
-msgstr ""
+msgstr "%H: Netlink - %pi 上的多播"
#. Packets/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23
msgid "stat_dg_label_netlink__if_multicast"
-msgstr ""
+msgstr "Packets/s"
#. Packets
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24
msgid "stat_ds_if_multicast"
-msgstr ""
+msgstr "æ•°æ®åŒ…"
#. %H: Netlink - Collisions on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25
msgid "stat_dg_title_netlink__if_collisions"
-msgstr ""
+msgstr "%H: Netlink - %pi 上的 Collisions"
#. Collisions/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26
msgid "stat_dg_label_netlink__if_collisions"
-msgstr ""
+msgstr "Collisions/s"
#. Collisions
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27
msgid "stat_ds_if_collisions"
-msgstr ""
+msgstr "Collisions"
#. %H: Netlink - Errors on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28
msgid "stat_dg_title_netlink__if_tx_errors"
-msgstr ""
+msgstr "%H: Netlink - %pi 上å‘生的错误"
#. Errors/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29
msgid "stat_dg_label_netlink__if_tx_errors"
-msgstr ""
+msgstr "错误/秒"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30
msgid "stat_ds_if_tx_errors"
-msgstr ""
+msgstr "%di"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31
msgid "stat_ds_if_rx_errors"
-msgstr ""
+msgstr "%di"
#. %H: Processes
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32
msgid "stat_dg_title_processes"
-msgstr ""
+msgstr "%H: 进程"
#. Processes/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33
msgid "stat_dg_label_processes"
-msgstr ""
+msgstr "进程/秒"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34
msgid "stat_ds_ps_state"
-msgstr ""
+msgstr "%di"
#. %H: Process %pi - used cpu time
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35
msgid "stat_dg_title_processes__ps_cputime"
-msgstr ""
+msgstr "%H: 进程 %s - å ç”¨çš„ CPU 时间"
#. Jiffies
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36
msgid "stat_dg_label_processes__ps_cputime"
-msgstr ""
+msgstr "Jiffies"
#. system
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37
msgid "stat_ds_ps_cputime__syst"
-msgstr ""
+msgstr "系统"
#. user
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38
msgid "stat_ds_ps_cputime__user"
-msgstr ""
+msgstr "用户"
#. %H: Process %pi - threads and processes
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39
msgid "stat_dg_title_processes__ps_count"
-msgstr ""
+msgstr "%H: 进程 %pi - 进程与线程"
#. Count
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40
msgid "stat_dg_label_processes__ps_count"
-msgstr ""
+msgstr "个"
#. %ds
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41
msgid "stat_ds_ps_count"
-msgstr ""
+msgstr "%ds"
#. %H: Process %pi - page faults
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42
msgid "stat_dg_title_processes__ps_pagefaults"
-msgstr ""
+msgstr "%H: 进程 %pi - 分页错误"
#. Pagefaults
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43
msgid "stat_dg_label_processes__ps_pagefaults"
-msgstr ""
+msgstr "分页错误"
#. page faults
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44
msgid "stat_ds_ps_pagefaults"
-msgstr ""
+msgstr "分页错误"
#. %H: Process %pi - virtual memory size
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45
msgid "stat_dg_title_processes__ps_rss"
-msgstr ""
+msgstr "%H: 进程 %pi - 虚拟内存大å°"
#. Bytes
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46
msgid "stat_dg_label_processes__ps_rss"
-msgstr ""
+msgstr "字节"
#. virtual memory
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47
msgid "stat_ds_ps_rss"
-msgstr ""
+msgstr "虚拟内存"
#. %H: Usage on Processor #%pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48
msgid "stat_dg_title_cpu"
-msgstr ""
+msgstr "%H: 对处ç†å™¨ #%pi çš„å ç”¨"
#. %
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49
msgid "stat_dg_label_cpu"
-msgstr ""
+msgstr "%"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50
msgid "stat_ds_cpu"
-msgstr ""
+msgstr "%di"
#. %H: Transfer on %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51
msgid "stat_dg_title_interface__if_octets"
-msgstr ""
+msgstr "%H: %di 上的数æ®ä¼ è¾“情况"
#. Bytes/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52
msgid "stat_dg_label_interface__if_octets"
-msgstr ""
+msgstr "字节/秒"
#. %H: Packets on %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53
msgid "stat_dg_title_interface__if_packets"
-msgstr ""
+msgstr "%H: %di 上的数æ®åŒ…"
#. Packets/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54
msgid "stat_dg_label_interface__if_packets"
-msgstr ""
+msgstr "Packets/s"
#. %H: TCP-Connections to Port %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55
msgid "stat_dg_title_tcpconns"
-msgstr ""
+msgstr "%H: åˆ°ç«¯å£ %pi çš„ TCP 连接"
#. Connections/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56
msgid "stat_dg_label_tcpconns"
-msgstr ""
+msgstr "连接/秒"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57
msgid "stat_ds_tcp_connections"
-msgstr ""
+msgstr "%di"
#. %H: Disk Space Usage on %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58
msgid "stat_dg_title_df"
-msgstr ""
+msgstr "%H: %di 上的ç£ç›˜å ç”¨æƒ…况"
#. Bytes
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59
msgid "stat_dg_label_df"
-msgstr ""
+msgstr "字节"
#. %ds
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60
msgid "stat_ds_df__free"
-msgstr ""
+msgstr "%ds"
#. %ds
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61
msgid "stat_ds_df__used"
-msgstr ""
+msgstr "%ds"
#. %H: Interrupts
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62
msgid "stat_dg_title_irq"
-msgstr ""
+msgstr "%H: 中断"
#. Issues/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63
msgid "stat_dg_label_irq"
-msgstr ""
+msgstr "Issues/s"
#. IRQ %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64
msgid "stat_ds_irq"
-msgstr ""
+msgstr "IRQ %di"
#. %H: System Load
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65
msgid "stat_dg_title_load"
-msgstr ""
+msgstr "%H: 系统负载"
#. Load
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66
msgid "stat_dg_label_load"
-msgstr ""
+msgstr "è´Ÿè½½"
#. 1 min
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67
msgid "stat_ds_load__shortterm"
-msgstr ""
+msgstr "1 分钟"
#. 5 min
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68
msgid "stat_ds_load__midterm"
-msgstr ""
+msgstr "5 分钟"
#. 15 min
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69
msgid "stat_ds_load__longterm"
-msgstr ""
+msgstr "15 分钟"
diff --git a/applications/luci-app-statistics/po/zh-cn/statistics.po b/applications/luci-app-statistics/po/zh-cn/statistics.po
index a55f73fb18..46cf59feed 100644
--- a/applications/luci-app-statistics/po/zh-cn/statistics.po
+++ b/applications/luci-app-statistics/po/zh-cn/statistics.po
@@ -1,17 +1,17 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2014-06-13 15:04+0200\n"
-"Last-Translator: phantasm131 <phantasm131@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-04-15 21:46-0600\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 2.0.1\n"
+"Language-Team: \n"
msgid "Action (target)"
msgstr "动作(目标)"
@@ -37,11 +37,14 @@ msgstr "基本目录"
msgid "Basic monitoring"
msgstr "基本监控"
-msgid "CPU Frequency"
+msgid "CPU Context Switches Plugin Configuration"
msgstr ""
+msgid "CPU Frequency"
+msgstr "CPU 频率"
+
msgid "CPU Frequency Plugin Configuration"
-msgstr ""
+msgstr "CPU 频率æ’件é…ç½®"
msgid "CPU Plugin Configuration"
msgstr "CPUæ’件é…ç½®"
@@ -87,6 +90,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr "Conntrackæ’件设置"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "DFæ’件设置"
@@ -133,16 +139,16 @@ msgid "Email"
msgstr "电å­é‚®ä»¶"
msgid "Empty value = monitor all"
-msgstr ""
+msgstr "留空 = 监控所有"
msgid "Enable this plugin"
msgstr "å¯ç”¨è¯¥æ’件"
msgid "Entropy"
-msgstr ""
+msgstr "熵"
msgid "Entropy Plugin Configuration"
-msgstr ""
+msgstr "熵值æ’件é…ç½®"
msgid "Exec"
msgstr "Exec"
@@ -166,7 +172,7 @@ msgid "Gather compression statistics"
msgstr ""
msgid "General plugins"
-msgstr ""
+msgstr "通用æ’件"
msgid "Generate a separate graph for each logged user"
msgstr ""
@@ -198,7 +204,7 @@ msgid ""
msgstr "在这里,你å¯ä»¥å®šä¹‰å„ç§ç›‘控iptables规则临界值。"
msgid "Hold Ctrl to select multiple items or to deselect entries."
-msgstr ""
+msgstr "æŒ‰ä½ Ctrl é”®æ¥é€‰æ‹©æˆ–å–消选择多个项目。"
msgid "Host"
msgstr "主机"
@@ -269,10 +275,10 @@ msgid "Monitor all local listen ports"
msgstr "监测所有本地监å¬ç«¯å£"
msgid "Monitor all sensors"
-msgstr ""
+msgstr "监控所有传感器"
msgid "Monitor device(s) / thermal zone(s)"
-msgstr ""
+msgstr "监控设备/温感区域"
msgid "Monitor devices"
msgstr "监测设备"
@@ -329,6 +335,8 @@ msgid ""
"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
"directory and all its parent directories need to be world readable."
msgstr ""
+"注æ„:由于页é¢æ˜¯ä»¥ 'nobody' 身份生æˆçš„,因此 *.rrd 文件以åŠåŒ…å«æ­¤æ–‡ä»¶çš„所有父"
+"目录必须全局å¯è¯»ã€‚"
msgid "Number of threads for data collection"
msgstr "收集程åºä½¿ç”¨çº¿ç¨‹æ•°"
@@ -343,13 +351,13 @@ msgid "Only create average RRAs"
msgstr "仅创建平å‡RRAs"
msgid "OpenVPN"
-msgstr ""
+msgstr "OpenVPN"
msgid "OpenVPN Plugin Configuration"
-msgstr ""
+msgstr "OpenVPN æ’件é…ç½®"
msgid "OpenVPN status files"
-msgstr ""
+msgstr "OpenVPN 状æ€æ–‡ä»¶"
msgid "Options"
msgstr "选项"
@@ -409,13 +417,13 @@ msgid "Seconds"
msgstr "秒"
msgid "Sensor list"
-msgstr ""
+msgstr "传感器列表"
msgid "Sensors"
-msgstr ""
+msgstr "传感器"
msgid "Sensors Plugin Configuration"
-msgstr ""
+msgstr "传感器æ’件é…ç½®"
msgid "Server host"
msgstr "æœåŠ¡å™¨ä¸»æœº"
@@ -424,7 +432,7 @@ msgid "Server port"
msgstr "æœåŠ¡å™¨ç«¯å£"
msgid "Setup"
-msgstr ""
+msgstr "设置"
msgid "Shaping class monitoring"
msgstr "整形类监控"
@@ -503,7 +511,7 @@ msgstr "OLSRdæ’件通过txtinfo获å–meshed网络信æ¯ã€‚"
msgid ""
"The OpenVPN plugin gathers information about the current vpn connection "
"status."
-msgstr ""
+msgstr "OpenVPN æ’件å¯ä»¥èŽ·å– VPN 连接当å‰çŠ¶æ€"
msgid ""
"The conntrack plugin collects statistics about the number of tracked "
@@ -629,6 +637,9 @@ msgid ""
"to gather data and <a href=\"http://oss.oetiker.ch/rrdtool/\">RRDtool</a> to "
"render diagram images."
msgstr ""
+"Statistics 软件包使用 <a href=\"https://collectd.org/\">Collectd</a> æ¥æ”¶é›†æ•°"
+"æ®ï¼Œå¹¶ç”¨ <a href=\"http://oss.oetiker.ch/rrdtool/\">RRDtool</a> 生æˆç»Ÿè®¡å›¾"
+"表。"
msgid ""
"The tcpconns plugin collects informations about open tcp connections on "
@@ -640,6 +651,8 @@ msgid ""
"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be "
"read, e.g. thermal_zone1 )"
msgstr ""
+"温感æ’件将会监控系统温度。数æ®ä¸»è¦å–自 /sys/class/thermal/*/temp ('*' 表示温"
+"感设备的å字,比如 thermal_zone1) 。"
msgid ""
"The unixsock plugin creates a unix socket which can be used to read "
@@ -650,13 +663,16 @@ msgid "The uptime plugin collects statistics about the uptime of the system."
msgstr ""
msgid "Thermal"
-msgstr ""
+msgstr "温感"
msgid "Thermal Plugin Configuration"
+msgstr "温感æ’件é…ç½®"
+
+msgid "This plugin collects statistics about the processor context switches."
msgstr ""
msgid "This plugin collects statistics about the processor frequency scaling."
-msgstr ""
+msgstr "æ­¤æ’ä»¶ä¼šèŽ·å– CPU 频率调整的数æ®ã€‚"
msgid ""
"This section defines on which interfaces collectd will wait for incoming "
@@ -686,13 +702,13 @@ msgid "Unixsock Plugin Configuration"
msgstr "Unixsockæ’件é…ç½®"
msgid "Uptime"
-msgstr ""
+msgstr "è¿è¡Œæ—¶é—´"
msgid "Uptime Plugin Configuration"
-msgstr ""
+msgstr "è¿è¡Œæ—¶é—´æ’件é…ç½®"
msgid "Use improved naming schema"
-msgstr ""
+msgstr "使用更高级的命å规则"
msgid "Used PID file"
msgstr "正在使用的PID文件"
@@ -711,7 +727,7 @@ msgstr "无线iwinfoæ’件é…ç½®"
msgid ""
"You can install additional collectd-mod-* plugins to enable more statistics."
-msgstr ""
+msgstr "您å¯ä»¥å®‰è£…更多的 collectd-mod-* æ’件以获得更多的统计数æ®ã€‚"
msgid "e.g. br-ff"
msgstr "例如:br-ff"
diff --git a/applications/luci-app-statistics/po/zh-tw/statistics.po b/applications/luci-app-statistics/po/zh-tw/statistics.po
index f9e72b54dd..cbd6d9d38e 100644
--- a/applications/luci-app-statistics/po/zh-tw/statistics.po
+++ b/applications/luci-app-statistics/po/zh-tw/statistics.po
@@ -31,6 +31,9 @@ msgstr ""
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -79,6 +82,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -631,6 +637,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/applications/luci-app-statistics/root/etc/config/luci_statistics b/applications/luci-app-statistics/root/etc/config/luci_statistics
index 774a8382e2..c081a8e724 100644
--- a/applications/luci-app-statistics/root/etc/config/luci_statistics
+++ b/applications/luci-app-statistics/root/etc/config/luci_statistics
@@ -52,6 +52,9 @@ config statistics 'collectd_unixsock'
config statistics 'collectd_conntrack'
option enable '0'
+config statistics 'collectd_contextswitch'
+ option enable '0'
+
config statistics 'collectd_cpu'
option enable '1'
diff --git a/applications/luci-app-statistics/root/usr/bin/stat-genconfig b/applications/luci-app-statistics/root/usr/bin/stat-genconfig
index df9af15261..090344cee4 100755
--- a/applications/luci-app-statistics/root/usr/bin/stat-genconfig
+++ b/applications/luci-app-statistics/root/usr/bin/stat-genconfig
@@ -279,6 +279,12 @@ plugins = {
{ }
},
+ contextswitch = {
+ { },
+ { },
+ { }
+ },
+
csv = {
{ "DataDir" },
{ "StoreRates" },
@@ -349,12 +355,6 @@ plugins = {
{ }
},
- madwifi = {
- { "WatchSet" },
- { },
- { "Interfaces", "WatchAdds" }
- },
-
memory = {
{ },
{ },
diff --git a/applications/luci-app-travelmate/Makefile b/applications/luci-app-travelmate/Makefile
index f4b1b0a4e3..6170f9d4c3 100644
--- a/applications/luci-app-travelmate/Makefile
+++ b/applications/luci-app-travelmate/Makefile
@@ -1,11 +1,11 @@
-#
-# This is free software, licensed under the Apache License, Version 2.0 .
+# Copyright 2017 Dirk Brenken (dev@brenken.org)
+# This is free software, licensed under the Apache License, Version 2.0
#
include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI support for Travelmate
-LUCI_DEPENDS:=+travelmate
+LUCI_DEPENDS:=+travelmate +luci-lib-jsonc
LUCI_PKGARCH:=all
include ../../luci.mk
diff --git a/applications/luci-app-travelmate/luasrc/controller/travelmate.lua b/applications/luci-app-travelmate/luasrc/controller/travelmate.lua
index 27c19c4e52..86382f6ae0 100644
--- a/applications/luci-app-travelmate/luasrc/controller/travelmate.lua
+++ b/applications/luci-app-travelmate/luasrc/controller/travelmate.lua
@@ -1,11 +1,28 @@
--- Licensed to the public under the Apache License 2.0.
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
module("luci.controller.travelmate", package.seeall)
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local template = require("luci.template")
+local i18n = require("luci.i18n")
+
function index()
if not nixio.fs.access("/etc/config/travelmate") then
return
end
+ entry({"admin", "services", "travelmate"}, firstchild(), _("Travelmate"), 40).dependent = false
+ entry({"admin", "services", "travelmate", "tab_from_cbi"}, cbi("travelmate/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true
+ entry({"admin", "services", "travelmate", "logfile"}, call("logread"), _("View Logfile"), 20).leaf = true
+ entry({"admin", "services", "travelmate", "advanced"}, firstchild(), _("Advanced"), 100)
+ entry({"admin", "services", "travelmate", "advanced", "configuration"}, cbi("travelmate/configuration_tab"), _("Edit Travelmate Configuration"), 110).leaf = true
+ entry({"admin", "services", "travelmate", "advanced", "cfg_wireless"}, cbi("travelmate/cfg_wireless_tab"), _("Edit Wireless Configuration"), 120).leaf = true
+ entry({"admin", "services", "travelmate", "advanced", "cfg_network"}, cbi("travelmate/cfg_network_tab"), _("Edit Network Configuration"), 130).leaf = true
+ entry({"admin", "services", "travelmate", "advanced", "cfg_firewall"}, cbi("travelmate/cfg_firewall_tab"), _("Edit Firewall Configuration"), 140).leaf = true
+end
- entry({"admin", "services", "travelmate"}, cbi("travelmate"), _("Travelmate"), 60)
+function logread()
+ local logfile = util.trim(util.exec("logread -e 'travelmate'"))
+ template.render("travelmate/logread", {title = i18n.translate("Travelmate Logfile"), content = logfile})
end
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua
deleted file mode 100644
index fa44d4b523..0000000000
--- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua
+++ /dev/null
@@ -1,53 +0,0 @@
--- Licensed to the public under the Apache License 2.0.
-
-m = Map("travelmate", translate("Travelmate"),
- translate("Configuration of the Travelmate package to enable travel router functionality. ") .. [[</p>]] ..
- translate("Brief advice: Create a wwan interface, configure it to use dhcp and " ..
- "add it to the wan zone in firewall. Create the wifi interfaces to be used ('client' mode, " ..
- "assigned to wwan network, left as disabled). Travelmate will try " ..
- "to connect to the known wifi client interfaces in the defined order. ") ..
- [[<a href="https://github.com/openwrt/packages/tree/master/net/travelmate/files/README.md" target="_blank">]]
- .. translate("Link to detailed advice")
- .. [[</a>]] )
-
--- General options
-
-s = m:section(NamedSection, "global", "travelmate", translate("Global options"))
-
-o = s:option(Flag, "trm_enabled", translate("Enable Travelmate"))
-o.rmempty = false
-o.default = 0
-
-o = s:option(Value, "trm_maxwait", translate("Max. timeout in seconds for wlan interface reload"),
- translate("Default 20, range 10-60"))
-o.rmempty = false
-o.default = 20
-o.datatype = "range(10,60)"
-
-o = s:option(Value, "trm_maxretry", translate("Max. number of connection retries to an uplink"),
- translate("Default 3, range 1-10"))
-o.rmempty = false
-o.default = 3
-o.datatype = "range(1,10)"
-
--- Extra options
-
-e = m:section(NamedSection, "global", "travelmate", translate("Extra options"))
-
-a = e:option(Flag, "trm_debug", translate("Debug logging"))
-a.rmempty = true
-a.default = a.disabled
-
-a = e:option(Value, "trm_iface", translate("Restrict reload trigger to certain interface(s)"),
- translate("Space separated list of wwan interfaces that trigger reload action. To disable reload trigger set it to 'false'. Default: empty"))
-a.rmempty = true
-a.default = ""
-a.datatype = "uciname"
-
-a = e:option(Flag, "trm_iw", translate("Use iw for scanning"),
- translate("Disable this if you want to use iwinfo instead of iw"))
-a.rmempty = true
-a.default = a.enabled
-
-return m
-
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua
new file mode 100644
index 0000000000..009ed805db
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua
@@ -0,0 +1,36 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local trminput = "/etc/config/firewall"
+
+if not nixio.fs.access(trminput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("travelmate/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main firewall configuration file (/etc/config/firewall)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(trminput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua
new file mode 100644
index 0000000000..4d43637d9c
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua
@@ -0,0 +1,36 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local trminput = "/etc/config/network"
+
+if not nixio.fs.access(trminput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("travelmate/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main network configuration file (/etc/config/network)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(trminput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua
new file mode 100644
index 0000000000..a025c1379f
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua
@@ -0,0 +1,36 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local trminput = "/etc/config/wireless"
+
+if not nixio.fs.access(trminput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("travelmate/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main wireless configuration file (/etc/config/wireless)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(trminput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua
new file mode 100644
index 0000000000..4233da6ac7
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua
@@ -0,0 +1,38 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local trminput = "/etc/config/travelmate"
+
+if not nixio.fs.access(trminput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ m.reset = false
+ m.submit = false
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("travelmate/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main travelmate configuration file (/etc/config/travelmate)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(trminput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
new file mode 100644
index 0000000000..236bbb0de5
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
@@ -0,0 +1,170 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local uci = require("uci")
+local json = require("luci.jsonc")
+local nw = require("luci.model.network").init()
+local fw = require("luci.model.firewall").init()
+local uplink = uci.get("network", "trm_wwan") or ""
+local trminput = uci.get("travelmate", "global", "trm_rtfile") or "/tmp/trm_runtime.json"
+local parse = json.parse(fs.readfile(trminput) or "")
+
+m = Map("travelmate", translate("Travelmate"),
+ translate("Configuration of the travelmate package to to enable travel router functionality. ")
+ .. translatef("For further information "
+ .. "<a href=\"%s\" target=\"_blank\">"
+ .. "see online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md"))
+
+function m.on_after_commit(self)
+ luci.sys.call("/etc/init.d/travelmate restart >/dev/null 2>&1")
+ luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
+end
+
+-- Main travelmate options
+
+s = m:section(NamedSection, "global", "travelmate")
+
+o1 = s:option(Flag, "trm_enabled", translate("Enable travelmate"))
+o1.default = o1.disabled
+o1.rmempty = false
+
+o2 = s:option(Flag, "trm_automatic", translate("Enable 'automatic' mode"),
+ translate("Keep travelmate in an active state."))
+o2.default = o2.enabled
+o2.rmempty = false
+
+o3 = s:option(Value, "trm_iface", translate("Restrict interface trigger to certain interface(s)"),
+ translate("Space separated list of interfaces that trigger travelmate processing. "..
+ "To disable event driven (re-)starts remove all entries."))
+o3.rmempty = true
+
+o4 = s:option(Value, "trm_triggerdelay", translate("Trigger delay"),
+ translate("Additional trigger delay in seconds before travelmate processing begins."))
+o4.default = 2
+o4.datatype = "range(1,90)"
+o4.rmempty = false
+
+o5 = s:option(Flag, "trm_debug", translate("Enable verbose debug logging"))
+o5.default = o5.disabled
+o5.rmempty = false
+
+-- Interface setup
+
+if uplink == "" then
+ dv = s:option(DummyValue, "_dummy", translate("Interface Setup"))
+ dv.template = "cbi/nullsection"
+ btn = s:option(Button, "", translate("Create Uplink Interface"),
+ translate("Automatically create a new wireless wan uplink interface 'trm_wwan', configure it to use dhcp and ")
+ .. translate("add it to the wan zone of the firewall. This step has only to be done once."))
+ btn.inputtitle = translate("Add Interface")
+ btn.inputstyle = "apply"
+ btn.disabled = false
+ function btn.write()
+ local name = "trm_wwan"
+ local net = nw:add_network(name, { proto = "dhcp" })
+ if net then
+ nw:save("network")
+ nw:commit("network")
+ local zone = fw:get_zone_by_network("wan")
+ if zone then
+ zone:add_network(name)
+ fw:save("firewall")
+ fw:commit("firewall")
+ end
+ luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1")
+ luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
+ end
+ end
+else
+ dv = s:option(DummyValue, "_dummy", translate("Interface Setup"),
+ translate("<br />&nbsp;Network Interface 'trm_wwan' created successfully. ")
+ .. translatef("Scan &amp; Add new wireless stations via standard "
+ .. "<a href=\"%s\">"
+ .. "Wireless Setup</a>", luci.dispatcher.build_url("admin/network/wireless")))
+ dv.template = "cbi/nullsection"
+end
+
+-- Runtime information
+
+ds = s:option(DummyValue, "_dummy", translate("Runtime information"))
+ds.template = "cbi/nullsection"
+
+dv1 = s:option(DummyValue, "status", translate("Online Status"))
+dv1.template = "travelmate/runtime"
+if parse == nil then
+ dv1.value = translate("n/a")
+elseif parse.data.station_connection == "true" then
+ dv1.value = translate("connected")
+else
+ dv1.value = translate("not connected")
+end
+
+dv2 = s:option(DummyValue, "travelmate_version", translate("Travelmate version"))
+dv2.template = "travelmate/runtime"
+if parse ~= nil then
+ dv2.value = parse.data.travelmate_version or translate("n/a")
+else
+ dv2.value = translate("n/a")
+end
+
+dv3 = s:option(DummyValue, "station_ssid", translate("Station SSID"))
+dv3.template = "travelmate/runtime"
+if parse ~= nil then
+ dv3.value = parse.data.station_ssid or translate("n/a")
+else
+ dv3.value = translate("n/a")
+end
+
+dv4 = s:option(DummyValue, "station_interface", translate("Station Interface"))
+dv4.template = "travelmate/runtime"
+if parse ~= nil then
+ dv4.value = parse.data.station_interface or translate("n/a")
+else
+ dv4.value = translate("n/a")
+end
+
+dv5 = s:option(DummyValue, "station_radio", translate("Station Radio"))
+dv5.template = "travelmate/runtime"
+if parse ~= nil then
+ dv5.value = parse.data.station_radio or translate("n/a")
+else
+ dv5.value = translate("n/a")
+end
+
+dv6 = s:option(DummyValue, "last_rundate", translate("Last rundate"))
+dv6.template = "travelmate/runtime"
+if parse ~= nil then
+ dv6.value = parse.data.last_rundate or translate("n/a")
+else
+ dv6.value = translate("n/a")
+end
+
+-- Extra options
+
+e = m:section(NamedSection, "global", "travelmate", translate("Extra options"),
+translate("Options for further tweaking in case the defaults are not suitable for you."))
+
+e1 = e:option(Value, "trm_radio", translate("Radio selection"),
+ translate("Restrict travelmate to a dedicated radio, e.g. 'radio0'"))
+e1.rmempty = true
+
+e2 = e:option(Value, "trm_maxretry", translate("Connection Limit"),
+ translate("How many times should travelmate try to connect to an Uplink"))
+e2.default = 3
+e2.datatype = "range(1,10)"
+e2.rmempty = false
+
+e3 = e:option(Value, "trm_maxwait", translate("Interface Timeout"),
+ translate("How long should travelmate wait for a successful wlan interface reload"))
+e3.default = 30
+e3.datatype = "range(5,60)"
+e3.rmempty = false
+
+e4 = e:option(Value, "trm_timeout", translate("Overall Timeout"),
+ translate("Timeout in seconds between retries in 'automatic' mode"))
+e4.default = 60
+e4.datatype = "range(5,300)"
+e4.rmempty = false
+
+return m
diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm
new file mode 100644
index 0000000000..53493a18fb
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm
@@ -0,0 +1,10 @@
+<style type="text/css">
+ textarea
+ {
+ border: 1px solid #cccccc;
+ padding: 5px;
+ font-size: 12px;
+ font-family: monospace;
+ resize: none;
+ }
+</style>
diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm
new file mode 100644
index 0000000000..7f6ff7776d
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm
@@ -0,0 +1,15 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+<div class="cbi-map">
+ <fieldset class="cbi-section">
+ <div class="cbi-section-descr"><%:This form shows the syslog output, pre-filtered for travelmate related messages only.%></div>
+ <textarea id="logread_id" style="width: 100%; height: 450px; border: 1px solid #cccccc; padding: 5px; font-size: 12px; font-family: monospace; resize: none;" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+2%>"><%=content:pcdata()%></textarea>
+ </fieldset>
+</div>
+
+<%+footer%>
diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm
new file mode 100644
index 0000000000..ee3a4553a8
--- /dev/null
+++ b/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm
@@ -0,0 +1,10 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+cbi/valueheader%>
+
+<input name="runtime" id="runtime" type="text" class="cbi-input-text" style="border: none; box-shadow: none; background-color: #ffffff; color: #0069d6;" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
+
+<%+cbi/valuefooter%>
diff --git a/applications/luci-app-travelmate/po/ja/travelmate.po b/applications/luci-app-travelmate/po/ja/travelmate.po
index de1aceed95..e4a8b8bda2 100644
--- a/applications/luci-app-travelmate/po/ja/travelmate.po
+++ b/applications/luci-app-travelmate/po/ja/travelmate.po
@@ -7,73 +7,317 @@ msgstr ""
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.0.1\n"
"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"Language: ja\n"
+msgid "<br />&nbsp;Network Interface 'trm_wwan' created successfully."
+msgstr ""
+"<br />&nbsp;ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ インターフェース 'trm_wwan' ã®ä½œæˆã«æˆåŠŸã—ã¾ã—ãŸã€‚"
+
+msgid "Add Interface"
+msgstr "インターフェースã®è¿½åŠ "
+
+msgid ""
+"Additional trigger delay in seconds before travelmate processing begins."
+msgstr "Travelmate ã®å‡¦ç†ãŒé–‹å§‹ã•ã‚Œã‚‹ã¾ã§ã®ã€è¿½åŠ ã®é…延時間(秒)ã§ã™ã€‚"
+
+msgid "Advanced"
+msgstr "詳細設定"
+
msgid ""
-"Brief advice: Create a wwan interface, configure it to use dhcp and add it "
-"to the wan zone in firewall. Create the wifi interfaces to be used ('client' "
-"mode, assigned to wwan network, left as disabled). Travelmate will try to "
-"connect to the known wifi client interfaces in the defined order."
+"Automatically create a new wireless wan uplink interface 'trm_wwan', "
+"configure it to use dhcp and"
msgstr ""
-"ç°¡å˜ãªè§£èª¬: 予ã‚WWANインターフェースを作æˆã—ã€DHCPを使用ã™ã‚‹ã‚ˆã†æ§‹æˆã—ã¦ãƒ•ã‚¡"
-"イアウォールã®WANゾーンã«è¿½åŠ ã—ã¾ã™ã€‚ã¾ãŸã€ä½¿ç”¨ã•ã‚Œã‚‹ç„¡ç·šã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã‚’作"
-"æˆã—ã¦ãŠãã¾ã™ï¼ˆ\"クライアント\" モードã€WWANã«å‰²ã‚Šå½“ã¦ã€ç„¡åŠ¹çŠ¶æ…‹ï¼‰ã€‚"
-"Travelmateã¯ã€ç™»éŒ²ã•ã‚Œã¦ã„ã‚‹é †åºã§æ—¢çŸ¥ã®ç„¡ç·šã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆ インターフェースã¸ã®"
-"接続を試行ã—ã¾ã™ã€‚"
+"æ–°ã—ã„ç„¡ç·š WAN インターフェース 'trm_wwan' を自動的ã«ä½œæˆã—〠DHCP を使用ã™ã‚‹"
+"よã†æ§‹æˆã—ã¦"
msgid ""
-"Configuration of the Travelmate package to enable travel router "
+"Configuration of the travelmate package to to enable travel router "
"functionality."
-msgstr "トラベル ルータ機能を有効ã«ã™ã‚‹ã€Travelmate パッケージã®è¨­å®šã§ã™ã€‚"
+msgstr ""
+"トラベル ルーター機能を有効化ã™ã‚‹ãŸã‚ã®ã€ Travelmate パッケージã®è¨­å®šã§ã™ã€‚"
+
+msgid "Connection Limit"
+msgstr "接続制é™"
+
+msgid "Create Uplink Interface"
+msgstr "アップリンク インターフェースã®ä½œæˆ"
+
+msgid "Edit Firewall Configuration"
+msgstr "ファイアウォール設定ã®ç·¨é›†"
+
+msgid "Edit Network Configuration"
+msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯è¨­å®šã®ç·¨é›†"
-msgid "Debug logging"
-msgstr "デãƒãƒƒã‚° ログ"
+msgid "Edit Travelmate Configuration"
+msgstr "Travelmate 設定ã®ç·¨é›†"
-msgid "Default 20, range 10-60"
-msgstr "既定値 20ã€ç¯„囲 10 - 60"
+msgid "Edit Wireless Configuration"
+msgstr "無線設定ã®ç·¨é›†"
-msgid "Default 3, range 1-10"
-msgstr "既定値 3ã€ç¯„囲 1 - 10"
+msgid "Enable 'automatic' mode"
+msgstr "'automatic' モードã®æœ‰åŠ¹åŒ–"
-msgid "Disable this if you want to use iwinfo instead of iw"
-msgstr "iw ã®ä»£ã‚ã‚Šã« iwinfo を使用ã—ãŸã„å ´åˆã€ã“ã®è¨­å®šã‚’無効ã«ã—ã¾ã™ã€‚"
+msgid "Enable travelmate"
+msgstr "Travelmate ã®æœ‰åŠ¹åŒ–"
-msgid "Enable Travelmate"
-msgstr "Travelmateã®æœ‰åŠ¹åŒ–"
+msgid "Enable verbose debug logging"
+msgstr "詳細ãªãƒ‡ãƒãƒƒã‚° ログã®æœ‰åŠ¹åŒ–"
msgid "Extra options"
msgstr "拡張オプション"
-msgid "Global options"
-msgstr "全般オプション"
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+"詳細ãªæƒ…報㯠<a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a>を確"
+"èªã—ã¦ãã ã•ã„。"
+
+msgid "How long should travelmate wait for a successful wlan interface reload"
+msgstr ""
+"ç„¡ç·šLAN インターフェースã®ãƒªãƒ­ãƒ¼ãƒ‰ãŒæˆåŠŸã™ã‚‹ã¾ã§ã®ã€Travelmate ã®å¾…機時間ã§"
+"ã™ã€‚"
+
+msgid "How many times should travelmate try to connect to an Uplink"
+msgstr "Travelmate ãŒã‚¢ãƒƒãƒ—リンクã«å¯¾ã—ã¦æŽ¥ç¶šã‚’試行ã™ã‚‹å›žæ•°ã§ã™ã€‚"
-msgid "Link to detailed advice"
-msgstr "詳細ãªè§£èª¬ã¸ã®ãƒªãƒ³ã‚¯"
+msgid "Input file not found, please check your configuration."
+msgstr "入力ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。設定を確èªã—ã¦ãã ã•ã„。"
-msgid "Max. number of connection retries to an uplink"
-msgstr "確立ã¾ã§ã®æŽ¥ç¶šè©¦è¡Œå›žæ•°"
+msgid "Interface Setup"
+msgstr "インターフェース設定"
-msgid "Max. timeout in seconds for wlan interface reload"
-msgstr "ç„¡ç·šLANインターフェース リロード時ã®æœ€å¤§å¾…機時間(秒)"
+msgid "Interface Timeout"
+msgstr "インターフェース タイムアウト"
+
+msgid "Keep travelmate in an active state."
+msgstr "Travelmate をアクティブ状態ã§ç¶­æŒã—ã¾ã™ã€‚"
+
+msgid "Last rundate"
+msgstr "最終実行日時"
+
+msgid "Online Status"
+msgstr "オンライン ステータス"
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr "デフォルトã®è¨­å®šãŒé©åˆ‡ã§ãªã„å ´åˆã€ã•ã‚‰ã«è¨­å®šã™ã‚‹ãŸã‚ã®ã‚ªãƒ—ションã§ã™ã€‚"
-msgid "Restrict reload trigger to certain interface(s)"
-msgstr "リロード トリガを特定ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã«é™å®šã™ã‚‹"
+msgid "Overall Timeout"
+msgstr "全体タイムアウト"
+
+msgid "Overview"
+msgstr "概è¦"
+
+msgid "Radio selection"
+msgstr "ç„¡ç·šã®é¸æŠž"
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr "インターフェース トリガーを特定ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã«é™å®šã™ã‚‹"
+
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'"
+msgstr "Travelmate ãŒç‰¹å®šã®ç„¡ç·šã«æŽ¥ç¶šã™ã‚‹ã‚ˆã†ã«ã—ã¾ã™ã€‚例: 'radio0'"
+
+msgid "Runtime information"
+msgstr "実行情報"
+
+msgid ""
+"Scan &amp; Add new wireless stations via standard <a href=\"%s\">Wireless "
+"Setup</a>"
+msgstr ""
+"通常ã®<a href=\"%s\">無線設定</a>ã«ã¦ã€æ–°è¦ã®ç„¡ç·šã‚¹ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ã®ã‚¹ã‚­ãƒ£ãƒ³åŠã³è¿½"
+"加を行ã„ã¾ã™ã€‚"
+
+msgid ""
+"Space separated list of interfaces that trigger travelmate processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+"Travelmate ã®å‡¦ç†ã®ãƒˆãƒªã‚¬ãƒ¼ã¨ãªã‚‹ã€ã‚¹ãƒšãƒ¼ã‚¹ã§åŒºåˆ‡ã‚‰ã‚ŒãŸã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®ãƒªã‚¹"
+"トã§ã™ã€‚処ç†ã‚’発生ã•ã›ã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã‚’無効ã«ã™ã‚‹ã«ã¯ã€å…¨ã¦ã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã‚’削除ã—ã¦"
+"空欄ã«ã—ã¾ã™ã€‚"
+
+msgid "Station Interface"
+msgstr "ステーション インターフェース"
+
+msgid "Station Radio"
+msgstr "ステーション 無線"
+
+msgid "Station SSID"
+msgstr "ステーション SSID"
+
+msgid ""
+"This form allows you to modify the content of the main firewall "
+"configuration file (/etc/config/firewall)."
+msgstr ""
+"ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã§ã¯ã€ãƒ•ã‚¡ã‚¤ã‚¢ã‚¦ã‚©ãƒ¼ãƒ« 設定ファイル (/etc/config/firewall) ã®å†…容"
+"を変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+msgid ""
+"This form allows you to modify the content of the main network configuration "
+"file (/etc/config/network)."
+msgstr ""
+"ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã§ã¯ã€ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ 設定ファイル (/etc/config/network) ã®å†…容を変"
+"æ›´ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
msgid ""
-"Space separated list of wwan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"This form allows you to modify the content of the main travelmate "
+"configuration file (/etc/config/travelmate)."
msgstr ""
-"リロード動作ã®ãƒˆãƒªã‚¬ã¨ãªã‚‹ã€ã‚¹ãƒšãƒ¼ã‚¹ã§åŒºåˆ‡ã‚‰ã‚ŒãŸWWAN インターフェースã®ãƒªã‚¹ãƒˆ"
-"ã§ã™ã€‚リロードã®ãƒˆãƒªã‚¬ã‚’無効ã«ã™ã‚‹ã«ã¯ã€'false' を設定ã—ã¾ã™ã€‚既定値:(空)"
+"ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã§ã¯ã€ Travelmate 設定ファイル (/etc/config/travelmate) ã®å†…容を"
+"変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+msgid ""
+"This form allows you to modify the content of the main wireless "
+"configuration file (/etc/config/wireless)."
+msgstr ""
+"ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã§ã¯ã€ç„¡ç·š 設定ファイル (/etc/config/wireless) ã®å†…容を変更ã™ã‚‹ã“"
+"ã¨ãŒã§ãã¾ã™ã€‚"
+
+msgid ""
+"This form shows the syslog output, pre-filtered for travelmate related "
+"messages only."
+msgstr ""
+"ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã«ã¯ã€ã‚·ã‚¹ãƒ†ãƒ ãƒ­ã‚°å†…ã® Travelmate ã«é–¢ã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ã¿ãŒè¡¨ç¤ºã•"
+"ã‚Œã¾ã™ã€‚"
+
+msgid "Timeout in seconds between retries in 'automatic' mode"
+msgstr "'automatic' モード時ã«æŽ¥ç¶šã‚’å†è©¦è¡Œã™ã‚‹é–“隔(秒)ã§ã™ã€‚"
msgid "Travelmate"
msgstr "Travelmate"
-msgid "Use iw for scanning"
-msgstr "スキャン㫠iw を使用ã™ã‚‹"
+msgid "Travelmate Logfile"
+msgstr "Travelmate ログファイル"
+
+msgid "Travelmate version"
+msgstr "Travelmate ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
+
+msgid "Trigger delay"
+msgstr "トリガーé…延"
+
+msgid "View Logfile"
+msgstr "ログファイルã®ç¢ºèª"
+
+msgid ""
+"add it to the wan zone of the firewall. This step has only to be done once."
+msgstr ""
+"ファイアウォール㮠wan ゾーンã«è¿½åŠ ã—ã¾ã™ã€‚ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã¯ã€ä¸€åº¦ã ã‘実行ã•ã‚Œã‚‹"
+"å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
+
+msgid "connected"
+msgstr "接続済ã¿"
+
+msgid "n/a"
+msgstr "利用ä¸å¯"
+
+msgid "not connected"
+msgstr "未接続"
+
+#~ msgid "."
+#~ msgstr "。"
+
+#~ msgid ""
+#~ "Automatically create a new wireless wan interface, configure it to use "
+#~ "dhcp and add it to the wan zone of the firewall. This step has only to be "
+#~ "done once."
+#~ msgstr ""
+#~ "æ–°ã—ã„ç„¡ç·š WAN インターフェースを自動的ã«ä½œæˆã—ã€DHCP を使用ã™ã‚‹ã‚ˆã†æ§‹æˆã—"
+#~ "ã¦ãƒ•ã‚¡ã‚¤ã‚¢ã‚¦ã‚©ãƒ¼ãƒ«ã® wan ゾーンã«è¿½åŠ ã—ã¾ã™ã€‚ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã¯ã€ä¸€åº¦ã ã‘実行"
+#~ "ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#~ msgid "Direct Link: <a href=\"%s\">Wireless Setup</a>"
+#~ msgstr "ダイレクト リンク: <a href=\"%s\">無線設定</a>"
+
+#~ msgid "For further information"
+#~ msgstr "詳細情報ã¯"
+
+#~ msgid "Name of the new wireless wan interface"
+#~ msgstr "æ–°ã—ã„ç„¡ç·š WAN ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹å"
+
+#~ msgid ""
+#~ "Network Interface '%s' created successfully. Feel free to scan & add new "
+#~ "stations via standard wireless setup."
+#~ msgstr ""
+#~ "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ インターフェース '%s' ã®ä½œæˆã«æˆåŠŸã—ã¾ã—ãŸã€‚通常ã®ç„¡ç·šè¨­å®šã«"
+#~ "ã¦ã€ã‚¹ã‚­ãƒ£ãƒ³åŠã³æ–°è¦ã‚¹ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ã®è¿½åŠ ãŒå¯èƒ½ã§ã™ã€‚"
+
+#~ msgid "Setup WWAN Interface"
+#~ msgstr "WWAN インターフェース設定"
+
+#~ msgid ""
+#~ "The allowed characters are: <code>A-Z</code>, <code>a-z</code>, "
+#~ "<code>0-9</code> and <code>_</code> (3-15 characters)."
+#~ msgstr ""
+#~ "使用å¯èƒ½æ–‡å­—: <code>A-Z</code>, <code>a-z</code>, <code>0-9</code> and "
+#~ "<code>_</code>(3 - 15文字)"
+
+#~ msgid "The given network interface name already exist"
+#~ msgstr "入力ã•ã‚ŒãŸãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ インターフェースåã¯ã€æ—¢ã«å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚"
+
+#~ msgid "see online documentation"
+#~ msgstr "オンライン ドキュメントを確èªã—ã¦ãã ã•ã„"
+
+#~ msgid ""
+#~ "Brief advice: Create a wwan interface, configure it to use dhcp and add "
+#~ "it to the wan zone in firewall. Create the wifi interfaces to be used "
+#~ "('client' mode, assigned to wwan network, left as disabled). Travelmate "
+#~ "will try to connect to the known wifi client interfaces in the defined "
+#~ "order."
+#~ msgstr ""
+#~ "ç°¡å˜ãªè§£èª¬: 予ã‚WWANインターフェースを作æˆã—ã€DHCPを使用ã™ã‚‹ã‚ˆã†æ§‹æˆã—ã¦"
+#~ "ファイアウォールã®WANゾーンã«è¿½åŠ ã—ã¾ã™ã€‚ã¾ãŸã€ä½¿ç”¨ã•ã‚Œã‚‹ç„¡ç·šã‚¤ãƒ³ã‚¿ãƒ¼"
+#~ "フェースを作æˆã—ã¦ãŠãã¾ã™ï¼ˆ\"クライアント\" モードã€WWANã«å‰²ã‚Šå½“ã¦ã€ç„¡åŠ¹"
+#~ "状態)。Travelmateã¯ã€ç™»éŒ²ã•ã‚Œã¦ã„ã‚‹é †åºã§æ—¢çŸ¥ã®ç„¡ç·šã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆ インター"
+#~ "フェースã¸ã®æŽ¥ç¶šã‚’試行ã—ã¾ã™ã€‚"
+
+#~ msgid ""
+#~ "Configuration of the Travelmate package to enable travel router "
+#~ "functionality."
+#~ msgstr "トラベル ルータ機能を有効ã«ã™ã‚‹ã€Travelmate パッケージã®è¨­å®šã§ã™ã€‚"
+
+#~ msgid "Debug logging"
+#~ msgstr "デãƒãƒƒã‚° ログ"
+
+#~ msgid "Default 20, range 10-60"
+#~ msgstr "既定値 20ã€ç¯„囲 10 - 60"
+
+#~ msgid "Default 3, range 1-10"
+#~ msgstr "既定値 3ã€ç¯„囲 1 - 10"
+
+#~ msgid "Disable this if you want to use iwinfo instead of iw"
+#~ msgstr "iw ã®ä»£ã‚ã‚Šã« iwinfo を使用ã—ãŸã„å ´åˆã€ã“ã®è¨­å®šã‚’無効ã«ã—ã¾ã™ã€‚"
+
+#~ msgid "Enable Travelmate"
+#~ msgstr "Travelmateã®æœ‰åŠ¹åŒ–"
+
+#~ msgid "Global options"
+#~ msgstr "全般オプション"
+
+#~ msgid "Link to detailed advice"
+#~ msgstr "詳細ãªè§£èª¬ã¸ã®ãƒªãƒ³ã‚¯"
+
+#~ msgid "Max. number of connection retries to an uplink"
+#~ msgstr "確立ã¾ã§ã®æŽ¥ç¶šè©¦è¡Œå›žæ•°"
+
+#~ msgid "Max. timeout in seconds for wlan interface reload"
+#~ msgstr "ç„¡ç·šLANインターフェース リロード時ã®æœ€å¤§å¾…機時間(秒)"
+
+#~ msgid "Restrict reload trigger to certain interface(s)"
+#~ msgstr "リロード トリガを特定ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã«é™å®šã™ã‚‹"
+
+#~ msgid ""
+#~ "Space separated list of wwan interfaces that trigger reload action. To "
+#~ "disable reload trigger set it to 'false'. Default: empty"
+#~ msgstr ""
+#~ "リロード動作ã®ãƒˆãƒªã‚¬ã¨ãªã‚‹ã€ã‚¹ãƒšãƒ¼ã‚¹ã§åŒºåˆ‡ã‚‰ã‚ŒãŸWWAN インターフェースã®ãƒª"
+#~ "ストã§ã™ã€‚リロードã®ãƒˆãƒªã‚¬ã‚’無効ã«ã™ã‚‹ã«ã¯ã€'false' を設定ã—ã¾ã™ã€‚既定値:"
+#~ "(空)"
+
+#~ msgid "Use iw for scanning"
+#~ msgstr "スキャン㫠iw を使用ã™ã‚‹"
#~ msgid "Default 3, range 0-10. Set to 0 to allow unlimited retries"
#~ msgstr "既定値 3ã€ç¯„囲 0 - 10。å†è©¦è¡Œå›žæ•°ã‚’制é™ã—ãªã„å ´åˆã€0 ã«è¨­å®šã—ã¾ã™ã€‚"
diff --git a/applications/luci-app-travelmate/po/pt-br/travelmate.po b/applications/luci-app-travelmate/po/pt-br/travelmate.po
new file mode 100644
index 0000000000..4eff34e3e1
--- /dev/null
+++ b/applications/luci-app-travelmate/po/pt-br/travelmate.po
@@ -0,0 +1,253 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: pt_BR\n"
+
+msgid "<br />&nbsp;Network Interface 'trm_wwan' created successfully."
+msgstr ""
+
+msgid "Add Interface"
+msgstr ""
+
+msgid ""
+"Additional trigger delay in seconds before travelmate processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid ""
+"Automatically create a new wireless wan uplink interface 'trm_wwan', "
+"configure it to use dhcp and"
+msgstr ""
+
+msgid ""
+"Configuration of the travelmate package to to enable travel router "
+"functionality."
+msgstr ""
+
+msgid "Connection Limit"
+msgstr ""
+
+msgid "Create Uplink Interface"
+msgstr ""
+
+msgid "Edit Firewall Configuration"
+msgstr ""
+
+msgid "Edit Network Configuration"
+msgstr ""
+
+msgid "Edit Travelmate Configuration"
+msgstr ""
+
+msgid "Edit Wireless Configuration"
+msgstr ""
+
+msgid "Enable 'automatic' mode"
+msgstr ""
+
+msgid "Enable travelmate"
+msgstr ""
+
+msgid "Enable verbose debug logging"
+msgstr ""
+
+msgid "Extra options"
+msgstr "Opções adicionais"
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+
+msgid "How long should travelmate wait for a successful wlan interface reload"
+msgstr ""
+
+msgid "How many times should travelmate try to connect to an Uplink"
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Interface Setup"
+msgstr ""
+
+msgid "Interface Timeout"
+msgstr ""
+
+msgid "Keep travelmate in an active state."
+msgstr ""
+
+msgid "Last rundate"
+msgstr ""
+
+msgid "Online Status"
+msgstr ""
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+
+msgid "Overall Timeout"
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid "Radio selection"
+msgstr ""
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'"
+msgstr ""
+
+msgid "Runtime information"
+msgstr ""
+
+msgid ""
+"Scan &amp; Add new wireless stations via standard <a href=\"%s\">Wireless "
+"Setup</a>"
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger travelmate processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Station Interface"
+msgstr ""
+
+msgid "Station Radio"
+msgstr ""
+
+msgid "Station SSID"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main firewall "
+"configuration file (/etc/config/firewall)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main network configuration "
+"file (/etc/config/network)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main travelmate "
+"configuration file (/etc/config/travelmate)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main wireless "
+"configuration file (/etc/config/wireless)."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for travelmate related "
+"messages only."
+msgstr ""
+
+msgid "Timeout in seconds between retries in 'automatic' mode"
+msgstr ""
+
+msgid "Travelmate"
+msgstr "Travelmate"
+
+msgid "Travelmate Logfile"
+msgstr ""
+
+msgid "Travelmate version"
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid ""
+"add it to the wan zone of the firewall. This step has only to be done once."
+msgstr ""
+
+msgid "connected"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "not connected"
+msgstr ""
+
+#~ msgid ""
+#~ "Brief advice: Create a wwan interface, configure it to use dhcp and add "
+#~ "it to the wan zone in firewall. Create the wifi interfaces to be used "
+#~ "('client' mode, assigned to wwan network, left as disabled). Travelmate "
+#~ "will try to connect to the known wifi client interfaces in the defined "
+#~ "order."
+#~ msgstr ""
+#~ "Breve conselho: Crie uma interface wwan, configure-a para usar DHCP e "
+#~ "adicione-a à zona wan no firewall. Crie as interfaces wifi a serem usadas "
+#~ "(modo 'cliente', atribuído à rede wwan, deixado como desativado). O "
+#~ "Travelmate tentará se conectar às interfaces de cliente wifi conhecidas "
+#~ "na ordem definida."
+
+#~ msgid ""
+#~ "Configuration of the Travelmate package to enable travel router "
+#~ "functionality."
+#~ msgstr ""
+#~ "Configuração do pacote Travelmate para permitir a funcionalidade de "
+#~ "roteador de viagem."
+
+#~ msgid "Debug logging"
+#~ msgstr "Registros(log) para depuração"
+
+#~ msgid "Default 20, range 10-60"
+#~ msgstr "Padrão 20, faixa 10-60"
+
+#~ msgid "Default 3, range 1-10"
+#~ msgstr "Padrão 3, faixa 1-10"
+
+#~ msgid "Disable this if you want to use iwinfo instead of iw"
+#~ msgstr "Desabilite isto se você quer usar o iwinfo ao invés do iw"
+
+#~ msgid "Enable Travelmate"
+#~ msgstr "Habilitar o Travelmate"
+
+#~ msgid "Global options"
+#~ msgstr "Opções Globais"
+
+#~ msgid "Link to detailed advice"
+#~ msgstr "Endereço para conselhos detalhados"
+
+#~ msgid "Max. number of connection retries to an uplink"
+#~ msgstr "Máximo número de tentativas de conexão para um enlace"
+
+#~ msgid "Max. timeout in seconds for wlan interface reload"
+#~ msgstr "Tempo limite máximo em segundos para recarregar a interface wlan"
+
+#~ msgid "Restrict reload trigger to certain interface(s)"
+#~ msgstr "Restringir o gatilho de recarga para somente alguma(s) interface(s)"
+
+#~ msgid ""
+#~ "Space separated list of wwan interfaces that trigger reload action. To "
+#~ "disable reload trigger set it to 'false'. Default: empty"
+#~ msgstr ""
+#~ "Lista separada por espaços de interfaces wwan que acionam a ação de "
+#~ "recarga. Para desabilitar o gatilho de recarga, defina-o como 'false'. "
+#~ "Padrão: vazio"
+
+#~ msgid "Use iw for scanning"
+#~ msgstr "Use o iw para escaneamento"
diff --git a/applications/luci-app-travelmate/po/templates/travelmate.pot b/applications/luci-app-travelmate/po/templates/travelmate.pot
index 20628196b6..615c3a79ce 100644
--- a/applications/luci-app-travelmate/po/templates/travelmate.pot
+++ b/applications/luci-app-travelmate/po/templates/travelmate.pot
@@ -1,58 +1,181 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
+msgid "<br />&nbsp;Network Interface 'trm_wwan' created successfully."
+msgstr ""
+
+msgid "Add Interface"
+msgstr ""
+
msgid ""
-"Brief advice: Create a wwan interface, configure it to use dhcp and add it "
-"to the wan zone in firewall. Create the wifi interfaces to be used ('client' "
-"mode, assigned to wwan network, left as disabled). Travelmate will try to "
-"connect to the known wifi client interfaces in the defined order."
+"Additional trigger delay in seconds before travelmate processing begins."
+msgstr ""
+
+msgid "Advanced"
msgstr ""
msgid ""
-"Configuration of the Travelmate package to enable travel router "
+"Automatically create a new wireless wan uplink interface 'trm_wwan', "
+"configure it to use dhcp and"
+msgstr ""
+
+msgid ""
+"Configuration of the travelmate package to to enable travel router "
"functionality."
msgstr ""
-msgid "Debug logging"
+msgid "Connection Limit"
+msgstr ""
+
+msgid "Create Uplink Interface"
msgstr ""
-msgid "Default 20, range 10-60"
+msgid "Edit Firewall Configuration"
msgstr ""
-msgid "Default 3, range 1-10"
+msgid "Edit Network Configuration"
msgstr ""
-msgid "Disable this if you want to use iwinfo instead of iw"
+msgid "Edit Travelmate Configuration"
msgstr ""
-msgid "Enable Travelmate"
+msgid "Edit Wireless Configuration"
+msgstr ""
+
+msgid "Enable 'automatic' mode"
+msgstr ""
+
+msgid "Enable travelmate"
+msgstr ""
+
+msgid "Enable verbose debug logging"
msgstr ""
msgid "Extra options"
msgstr ""
-msgid "Global options"
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+
+msgid "How long should travelmate wait for a successful wlan interface reload"
+msgstr ""
+
+msgid "How many times should travelmate try to connect to an Uplink"
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Interface Setup"
+msgstr ""
+
+msgid "Interface Timeout"
+msgstr ""
+
+msgid "Keep travelmate in an active state."
+msgstr ""
+
+msgid "Last rundate"
+msgstr ""
+
+msgid "Online Status"
+msgstr ""
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+
+msgid "Overall Timeout"
+msgstr ""
+
+msgid "Overview"
msgstr ""
-msgid "Link to detailed advice"
+msgid "Radio selection"
msgstr ""
-msgid "Max. number of connection retries to an uplink"
+msgid "Restrict interface trigger to certain interface(s)"
msgstr ""
-msgid "Max. timeout in seconds for wlan interface reload"
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'"
msgstr ""
-msgid "Restrict reload trigger to certain interface(s)"
+msgid "Runtime information"
msgstr ""
msgid ""
-"Space separated list of wwan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"Scan &amp; Add new wireless stations via standard <a href=\"%s\">Wireless "
+"Setup</a>"
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger travelmate processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Station Interface"
+msgstr ""
+
+msgid "Station Radio"
+msgstr ""
+
+msgid "Station SSID"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main firewall "
+"configuration file (/etc/config/firewall)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main network configuration "
+"file (/etc/config/network)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main travelmate "
+"configuration file (/etc/config/travelmate)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main wireless "
+"configuration file (/etc/config/wireless)."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for travelmate related "
+"messages only."
+msgstr ""
+
+msgid "Timeout in seconds between retries in 'automatic' mode"
msgstr ""
msgid "Travelmate"
msgstr ""
-msgid "Use iw for scanning"
+msgid "Travelmate Logfile"
+msgstr ""
+
+msgid "Travelmate version"
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid ""
+"add it to the wan zone of the firewall. This step has only to be done once."
+msgstr ""
+
+msgid "connected"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "not connected"
msgstr ""
diff --git a/applications/luci-app-uhttpd/Makefile b/applications/luci-app-uhttpd/Makefile
index 9a2cf462e5..3014770665 100644
--- a/applications/luci-app-uhttpd/Makefile
+++ b/applications/luci-app-uhttpd/Makefile
@@ -11,16 +11,9 @@ LUCI_TITLE:=uHTTPd Webserver Configuration
LUCI_DEPENDS:=+uhttpd
LUCI_PKGARCH:=all
-PKG_NAME:=luci-app-uhttpd
-PKG_VERSION:=1.0.0
-PKG_RELEASE:=1
PKG_LICENSE:=Apache-2.0
PKG_MAINTAINER:=Daniel Dickinson <openwrt@daniel.thecshore.com>
-PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
-
-include $(INCLUDE_DIR)/package.mk
-
LUA_TARGET:=source
include ../../luci.mk
diff --git a/applications/luci-app-uhttpd/po/pt-br/uhttpd.po b/applications/luci-app-uhttpd/po/pt-br/uhttpd.po
new file mode 100644
index 0000000000..af68b9e140
--- /dev/null
+++ b/applications/luci-app-uhttpd/po/pt-br/uhttpd.po
@@ -0,0 +1,208 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: pt_BR\n"
+
+msgid ""
+"(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)"
+msgstr ""
+"(/old/path=/new/path) ou (just /old/path que se torna /cgi-prefix/old/path)"
+
+msgid "404 Error"
+msgstr "Erro 404"
+
+msgid "A lightweight single-threaded HTTP(S) server"
+msgstr "Um servidor HTTP(S) leve de únida thread."
+
+msgid "Advanced Settings"
+msgstr "Opções Avançadas"
+
+msgid "Aliases"
+msgstr "Pseudônimos (Aliases)"
+
+msgid "Base directory for files to be served"
+msgstr "Diretório Base para publicar arquivos"
+
+msgid "Bind to specific interface:port (by specifying interface address"
+msgstr ""
+"Escute em uma interface:porta específica (especificando o endereço da "
+"interface"
+
+msgid "CGI filetype handler"
+msgstr "Interpretador de tipo de arquivo CGI"
+
+msgid "CGI is disabled if not present."
+msgstr "O CGI estará desabilitado se não presente."
+
+msgid "Config file (e.g. for credentials for Basic Auth)"
+msgstr "Arquivo de configuração (ex: credenciais para autenticação básica)"
+
+msgid "Connection reuse"
+msgstr "Reutilizar conexão"
+
+msgid "Country"
+msgstr "País"
+
+msgid "Disable JSON-RPC authorization via ubus session API"
+msgstr "Desabilita a autorização JSON-RPC através da API de sessão ubus"
+
+msgid "Do not follow symlinks outside document root"
+msgstr "Não siga ligações simbólicas (symlinks) para fora do documento raiz"
+
+msgid "Do not generate directory listings."
+msgstr "Não gere listagens de diretórios"
+
+msgid "Document root"
+msgstr "Documento Raiz"
+
+msgid "E.g specify with index.html and index.php when using PHP"
+msgstr "Ex: use index.html e index.php quando usar PHP"
+
+msgid "Embedded Lua interpreter is disabled if not present."
+msgstr "O interpretador Lua embutido será desabilitado se não presente."
+
+msgid "Enable JSON-RPC Cross-Origin Resource Support"
+msgstr "Habilite o suporte para recursos JSON-RPC de origem cruzada"
+
+msgid "For settings primarily geared to serving more than the web UI"
+msgstr "Para ajustes envolvidos com mais do que prover a interface web"
+
+msgid "Full Web Server Settings"
+msgstr "Configurações Completas do Servidor Web"
+
+msgid "Full real path to handler for Lua scripts"
+msgstr "Caminho completo para o interpretador de scripts Lua"
+
+msgid "General Settings"
+msgstr "Configurações Gerais"
+
+msgid "HTTP listeners (address:port)"
+msgstr "Escutas do HTTP (endereço:porta)"
+
+msgid "HTTPS Certificate (DER Encoded)"
+msgstr "Certificado do HTTPS (codificado em formato PEM)"
+
+msgid "HTTPS Private Key (DER Encoded)"
+msgstr "Chave Privada do HTTPS (codificado como DER)"
+
+msgid "HTTPS listener (address:port)"
+msgstr "Escuta do HTTPS (endereço:porta)"
+
+msgid "Ignore private IPs on public interface"
+msgstr "Ignore endereços IP privados na interface pública"
+
+msgid "Index page(s)"
+msgstr "Página(s) Ãndice(s)"
+
+msgid ""
+"Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/"
+"usr/bin/php-cgi')"
+msgstr ""
+"Interpretador para associar com extensões de arquivos "
+"('extensão=interpretador', ex: '.php=/usr/bin/php-cgi')"
+
+msgid "Length of key in bits"
+msgstr "Comprimento da chave em bits"
+
+msgid "Location"
+msgstr "Localização"
+
+msgid "Maximum number of connections"
+msgstr "Número máximo de requisições para script"
+
+msgid "Maximum number of script requests"
+msgstr "Número máximo de requisições para script"
+
+msgid "Maximum wait time for Lua, CGI, or ubus execution"
+msgstr "Tempo máximo de espera para execuções de Lua, CGI ou ubus"
+
+msgid "Maximum wait time for network activity"
+msgstr "Tempo máximo de espera para atividade na rede"
+
+msgid "Override path for ubus socket"
+msgstr "Sobrescrever o caminho do socket ubus"
+
+msgid "Path prefix for CGI scripts"
+msgstr "Prefixo do caminho para scripts CGI"
+
+msgid ""
+"Prevent access from private (RFC1918) IPs on an interface if it has an "
+"public IP address"
+msgstr ""
+"Evite acesso de endereços privados (RFC1918) na interface que tem um "
+"endereço IP público"
+
+msgid "Realm for Basic Auth"
+msgstr "Reino para Autenticação Simples"
+
+msgid "Redirect all HTTP to HTTPS"
+msgstr "Redirecionar todo tráfego HTTP para HTTPS"
+
+msgid "Remove configuration for certificate and key"
+msgstr "Remove a configuração para o certificado e chave"
+
+msgid "Remove old certificate and key"
+msgstr "Remove os certificados e chaves antigas"
+
+msgid "Server Hostname"
+msgstr "Nome do Servidor"
+
+msgid ""
+"Settings which are either rarely needed or which affect serving the WebUI"
+msgstr "Ajustes que são raramente usadas ou que afetam a interface web"
+
+msgid "State"
+msgstr "Estado"
+
+msgid "TCP Keepalive"
+msgstr "Manter conexões TCP abertas (Keepalive)"
+
+msgid "This permanently deletes the cert, key, and configuration to use same."
+msgstr "Isto apaga permanentemente o certificado, a chave e a configuração."
+
+msgid "Valid for # of Days"
+msgstr "Valido por # dias"
+
+msgid ""
+"Virtual URL or CGI script to display on status '404 Not Found'. Must begin "
+"with '/'"
+msgstr ""
+"URL virtual ou script CGI para mostrar quando ocorrer erro '404 Não "
+"Encontrado'. Deve começar com '/'"
+
+msgid "Virtual path prefix for Lua scripts"
+msgstr "Prefixo do caminho virtual para scripts Lua"
+
+msgid "Virtual path prefix for ubus via JSON-RPC integration"
+msgstr "Prefixo do caminho virtual para o ubus através da integração JSON-RPC"
+
+msgid "Will not use HTTP authentication if not present"
+msgstr "Não usar autenticação HTTP se não presente"
+
+msgid "a.k.a CommonName"
+msgstr "também conhecido como Nome Comum"
+
+msgid "uHTTPd"
+msgstr "uHTTPd"
+
+msgid "uHTTPd Self-signed Certificate Parameters"
+msgstr "Parâmetros do Certificado Auto-assinado do uHTTPd"
+
+msgid ""
+"uHTTPd will generate a new self-signed certificate using the configuration "
+"shown below."
+msgstr ""
+"o uHTTPd gerará um certificado auto-assinado usando a configuração mostrada "
+"abaixo."
+
+msgid "ubus integration is disabled if not present"
+msgstr "A integração com o ubus será desativada se não presente"
diff --git a/applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua b/applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua
index f1bb450dd5..74b9d1d033 100644
--- a/applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua
+++ b/applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua
@@ -12,21 +12,21 @@ s.addremove = false
s:tab("general", translate("General Settings"))
s:tab("advanced", translate("Advanced Settings"))
-e = s:taboption("general", Flag, "_init", translate("Start UPnP and NAT-PMP service"))
+e = s:taboption("general", Flag, "enabled", translate("Start UPnP and NAT-PMP service"))
e.rmempty = false
-function e.cfgvalue(self, section)
- return luci.sys.init.enabled("miniupnpd") and self.enabled or self.disabled
-end
+--function e.cfgvalue(self, section)
+-- return luci.sys.init.enabled("miniupnpd") and self.enabled or self.disabled
+--end
function e.write(self, section, value)
if value == "1" then
- luci.sys.call("/etc/init.d/miniupnpd enable >/dev/null")
luci.sys.call("/etc/init.d/miniupnpd start >/dev/null")
else
luci.sys.call("/etc/init.d/miniupnpd stop >/dev/null")
- luci.sys.call("/etc/init.d/miniupnpd disable >/dev/null")
end
+
+ return Flag.write(self, section, value)
end
s:taboption("general", Flag, "enable_upnp", translate("Enable UPnP functionality")).default = "1"
diff --git a/applications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp b/applications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp
index a338c75d35..e9636f9a28 100755
--- a/applications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp
+++ b/applications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp
@@ -3,7 +3,7 @@
uci -q batch <<-EOF >/dev/null
delete ucitrack.@upnpd[-1]
add ucitrack upnpd
- set ucitrack.@upnpd[-1]=miniupnpd
+ set ucitrack.@upnpd[-1].init=miniupnpd
commit ucitrack
EOF
diff --git a/applications/luci-app-vpnbypass/Makefile b/applications/luci-app-vpnbypass/Makefile
index e26fe273cc..0ca74ae38a 100644
--- a/applications/luci-app-vpnbypass/Makefile
+++ b/applications/luci-app-vpnbypass/Makefile
@@ -9,7 +9,8 @@ PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
LUCI_TITLE:=VPN Bypass Web UI
LUCI_DEPENDS:=+vpnbypass
LUCI_PKGARCH:=all
+PKG_RELEASE:=1
include ../../luci.mk
-# call BuildPackage - OpenWrt buildroot signature \ No newline at end of file
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua b/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua
index 6ed52ddba5..b35a8e4e02 100644
--- a/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua
+++ b/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua
@@ -1,30 +1,53 @@
+readmeURL = "https://github.com/openwrt/packages/blob/master/net/vpnbypass/files/README.md"
+
m = Map("vpnbypass", translate("VPN Bypass Settings"))
s = m:section(NamedSection, "config", "vpnbypass")
-- General options
-o1 = s:option(Flag, "enabled", translate("Enable VPN Bypass"))
-o1.rmempty = false
-o1.default = 0
+e = s:option(Flag, "enabled", translate("Enable/start service"))
+e.rmempty = false
+
+function e.cfgvalue(self, section)
+ return self.map:get(section, "enabled") == "1" and luci.sys.init.enabled("vpnbypass") and self.enabled or self.disabled
+end
+
+function e.write(self, section, value)
+ if value == "1" then
+ luci.sys.call("/etc/init.d/vpnbypass enable >/dev/null")
+ luci.sys.call("/etc/init.d/vpnbypass start >/dev/null")
+ else
+ luci.sys.call("/etc/init.d/vpnbypass stop >/dev/null")
+ end
+ return Flag.write(self, section, value)
+end
-- Local Ports
p1 = s:option(DynamicList, "localport", translate("Local Ports to Bypass"), translate("Local ports to trigger VPN Bypass"))
-p1.addremove = true
-p1.optional = true
+p1.datatype = "portrange"
+-- p1.placeholder = "0-65535"
+p1.addremove = false
+p1.optional = false
-- Remote Ports
p2 = s:option(DynamicList, "remoteport", translate("Remote Ports to Bypass"), translate("Remote ports to trigger VPN Bypass"))
-p2.addremove = true
-p2.optional = true
+p2.datatype = "portrange"
+-- p2.placeholder = "0-65535"
+p2.addremove = false
+p2.optional = false
-- Local Subnets
-r1 = s:option(DynamicList, "localsubnet", translate("Local IP Subnets to Bypass"), translate("Local IP ranges with direct internet access (outside of the VPN tunnel)"))
-r1.addremove = true
-r1.optional = true
+r1 = s:option(DynamicList, "localsubnet", translate("Local IP Addresses to Bypass"), translate("Local IP addresses or subnets with direct internet access (outside of the VPN tunnel)"))
+r1.datatype = "ip4addr"
+-- r1.placeholder = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr") .. "/" .. uci.cursor():get("network", "lan", "netmask"))
+r1.addremove = false
+r1.optional = false
-- Remote Subnets
-r2 = s:option(DynamicList, "remotesubnet", translate("Remote IP Subnets to Bypass"), translate("Remote IP ranges which will be accessed directly (outside of the VPN tunnel)"))
-r2.addremove = true
-r2.optional = true
+r2 = s:option(DynamicList, "remotesubnet", translate("Remote IP Addresses to Bypass"), translate("Remote IP addresses or subnets which will be accessed directly (outside of the VPN tunnel)"))
+r2.datatype = "ip4addr"
+-- r2.placeholder = "0.0.0.0/0"
+r2.addremove = false
+r2.optional = false
-- Domains
d = Map("dhcp")
@@ -32,7 +55,7 @@ s4 = d:section(TypedSection, "dnsmasq")
s4.anonymous = true
di = s4:option(DynamicList, "ipset", translate("Domains to Bypass"),
translate("Domains to be accessed directly (outside of the VPN tunnel), see ")
- .. [[<a href="https://github.com/openwrt/packages/tree/master/net/vpnbypass/files#bypass-domains-formatsyntax" target="_blank">]]
+ .. [[<a href="]] .. readmeURL .. [[#bypass-domains-formatsyntax" target="_blank">]]
.. translate("README") .. [[</a>]] .. translate(" for syntax"))
return m, d
diff --git a/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po b/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po
new file mode 100644
index 0000000000..9f3fa2a679
--- /dev/null
+++ b/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po
@@ -0,0 +1,90 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: pt_BR\n"
+
+msgid "Domains to Bypass"
+msgstr "Domínios para evitar a VPN"
+
+msgid "Domains to be accessed directly (outside of the VPN tunnel), see"
+msgstr ""
+
+msgid "Enable/start service"
+msgstr ""
+
+msgid "Local IP Addresses to Bypass"
+msgstr ""
+
+msgid ""
+"Local IP addresses or subnets with direct internet access (outside of the "
+"VPN tunnel)"
+msgstr ""
+
+msgid "Local Ports to Bypass"
+msgstr "Portas locais para evitar a VPN"
+
+msgid "Local ports to trigger VPN Bypass"
+msgstr "Portas locais para disparar o VPN Bypass"
+
+msgid "README"
+msgstr ""
+
+msgid "Remote IP Addresses to Bypass"
+msgstr ""
+
+msgid ""
+"Remote IP addresses or subnets which will be accessed directly (outside of "
+"the VPN tunnel)"
+msgstr ""
+
+msgid "Remote Ports to Bypass"
+msgstr "Portas remotas para evitar a VPN"
+
+msgid "Remote ports to trigger VPN Bypass"
+msgstr "Portas remotas para disparar o VPN Bypass"
+
+msgid "VPN Bypass"
+msgstr "VPN Bypass"
+
+msgid "VPN Bypass Settings"
+msgstr "Configurações do VPN Bypass"
+
+msgid "for syntax"
+msgstr ""
+
+#~ msgid "Enable VPN Bypass"
+#~ msgstr "Habilitar o VPN Bypass"
+
+#~ msgid "Configuration of VPN Bypass Settings"
+#~ msgstr "Configurações do VPN Bypass"
+
+#~ msgid "Domains which will be accessed directly (outside of the VPN tunnel)"
+#~ msgstr "Domínios que serão acessados diretamente (fora do túnel VPN)"
+
+#~ msgid "Local IP Subnets to Bypass"
+#~ msgstr "Subredes IP locais para evitar a VPN"
+
+#~ msgid ""
+#~ "Local IP ranges with direct internet access (outside of the VPN tunnel)"
+#~ msgstr ""
+#~ "Faixa de endereços IP locais que terão acesso internet direto (fora do "
+#~ "túnel VPN)"
+
+#~ msgid "Remote IP Subnets to Bypass"
+#~ msgstr "Subredes IP remotas para evitar a VPN"
+
+#~ msgid ""
+#~ "Remote IP ranges which will be accessed directly (outside of the VPN "
+#~ "tunnel)"
+#~ msgstr ""
+#~ "Faixa de endereços IP remotos que serão acessados diretamente (fora do "
+#~ "túnel VPN)"
diff --git a/applications/luci-app-vpnbypass/po/templates/vpnbypass.pot b/applications/luci-app-vpnbypass/po/templates/vpnbypass.pot
index 144adedc46..fd92b5e8a8 100644
--- a/applications/luci-app-vpnbypass/po/templates/vpnbypass.pot
+++ b/applications/luci-app-vpnbypass/po/templates/vpnbypass.pot
@@ -7,13 +7,15 @@ msgstr ""
msgid "Domains to be accessed directly (outside of the VPN tunnel), see"
msgstr ""
-msgid "Enable VPN Bypass"
+msgid "Enable/start service"
msgstr ""
-msgid "Local IP Subnets to Bypass"
+msgid "Local IP Addresses to Bypass"
msgstr ""
-msgid "Local IP ranges with direct internet access (outside of the VPN tunnel)"
+msgid ""
+"Local IP addresses or subnets with direct internet access (outside of the "
+"VPN tunnel)"
msgstr ""
msgid "Local Ports to Bypass"
@@ -25,11 +27,12 @@ msgstr ""
msgid "README"
msgstr ""
-msgid "Remote IP Subnets to Bypass"
+msgid "Remote IP Addresses to Bypass"
msgstr ""
msgid ""
-"Remote IP ranges which will be accessed directly (outside of the VPN tunnel)"
+"Remote IP addresses or subnets which will be accessed directly (outside of "
+"the VPN tunnel)"
msgstr ""
msgid "Remote Ports to Bypass"
diff --git a/applications/luci-app-watchcat/po/pt-br/watchcat.po b/applications/luci-app-watchcat/po/pt-br/watchcat.po
index fe97036379..e37066c3d9 100644
--- a/applications/luci-app-watchcat/po/pt-br/watchcat.po
+++ b/applications/luci-app-watchcat/po/pt-br/watchcat.po
@@ -1,15 +1,16 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-03-29 23:20+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2017-02-20 18:10-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
"Language-Team: none\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"POT-Creation-Date: \n"
msgid "Forced reboot delay"
msgstr "Atraso para reinício forçado"
@@ -51,15 +52,13 @@ msgstr "Período de ping"
msgid "Watchcat"
msgstr "Watchcat"
-#, fuzzy
msgid ""
"Watchcat allows configuring a periodic reboot when the Internet connection "
"has been lost for a certain period of time."
msgstr ""
-"Watchcat permite que se configure um período para reiniciar e/ou quando a "
+"Watchcat permite a configuração de um período para reiniciar e/ou quando a "
"conexão com à Internet foi perdida por um ser período de tempo."
-#, fuzzy
msgid ""
"When rebooting the system, the watchcat will trigger a soft reboot. Entering "
"a non zero value here will trigger a delayed hard reboot if the soft reboot "
diff --git a/applications/luci-app-wifischedule/po/pt-br/wifischedule.po b/applications/luci-app-wifischedule/po/pt-br/wifischedule.po
new file mode 100644
index 0000000000..19e31b54ca
--- /dev/null
+++ b/applications/luci-app-wifischedule/po/pt-br/wifischedule.po
@@ -0,0 +1,114 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: pt_BR\n"
+
+msgid "Activate wifi"
+msgstr "Ativar a WiFi"
+
+msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi"
+msgstr ""
+"Não foi possível localizar os programas necessários '/usr/bin/wifi_schedule."
+"sh' ou '/sbin/wifi'."
+
+msgid "Could not find required programm /usr/bin/iwinfo"
+msgstr "Não foi possível localizar o programa necessário '/usr/bin/iwinfo'"
+
+msgid "Cron Jobs"
+msgstr "Tarefas da Cron"
+
+msgid "Day(s) of Week"
+msgstr "Dia(s) da semana"
+
+msgid "Defines a schedule when to turn on and off wifi."
+msgstr "Define um agendamento para quando ligar ou desligar a WiFi."
+
+msgid "Determine Modules Automatically"
+msgstr "Determinar os Módulos Automaticamente"
+
+msgid "Disable wifi gracefully"
+msgstr "Desabilitar a WiFi amistosamente"
+
+msgid "Disabled wifi forced"
+msgstr "WiFi foi desabilitada de forma forçada."
+
+msgid "Enable"
+msgstr "Habilitar"
+
+msgid "Enable Wifi Schedule"
+msgstr "Habilitar o agendamento da WiFi"
+
+msgid "Enable logging"
+msgstr "Habilite os registros (log)"
+
+msgid "Force disabling wifi even if stations associated"
+msgstr "Force a desativação da WiFi mesmo se existirem estações associadas "
+
+msgid "Friday"
+msgstr "Sexta-feira"
+
+msgid "Global Settings"
+msgstr "Configurações Globais"
+
+msgid "Monday"
+msgstr "Segunda-Feira"
+
+msgid "Saturday"
+msgstr "Sábado"
+
+msgid "Schedule"
+msgstr "Agendamento"
+
+msgid "Schedule events"
+msgstr "Eventos do agendamento"
+
+msgid "Start Time"
+msgstr "Hora Inicial"
+
+msgid "Start WiFi"
+msgstr "Iniciar WiFi"
+
+msgid "Stop Time"
+msgstr "Hora Final"
+
+msgid "Stop WiFi"
+msgstr "Parar WiFi"
+
+msgid "Sunday"
+msgstr "Domingo"
+
+msgid "The value %s is invalid"
+msgstr "O valor %s é inválido"
+
+msgid "Thursday"
+msgstr "Quita-feira"
+
+msgid "Tuesday"
+msgstr "Terça-feira"
+
+msgid "Unload Modules (experimental; saves more power)"
+msgstr "Descarregar Módulos (experimental, poupa mais energia)"
+
+msgid "View Cron Jobs"
+msgstr "Visualizar Tarefas da Cron"
+
+msgid "View Logfile"
+msgstr "Visualizar o Arquivo de Registros (log)"
+
+msgid "Wednesday"
+msgstr "Quarta-feira"
+
+msgid "Wifi Schedule"
+msgstr "Agendamento da Wifi"
+
+msgid "Wifi Schedule Logfile"
+msgstr "Arquivo de Registros (log) do Agendamento da Wifi"
diff --git a/applications/luci-app-wireguard/Makefile b/applications/luci-app-wireguard/Makefile
new file mode 100644
index 0000000000..92cdcf2700
--- /dev/null
+++ b/applications/luci-app-wireguard/Makefile
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2016-2017 Dan Luedtke <mail@danrl.com>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=WireGuard Status
+LUCI_DEPENDS:=+wireguard-tools +kmod-wireguard
+LUCI_PKGARCH:=all
+
+PKG_MAINTAINER:=Dan Luedtke <mail@danrl.com>
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-wireguard/luasrc/controller/wireguard.lua b/applications/luci-app-wireguard/luasrc/controller/wireguard.lua
new file mode 100644
index 0000000000..68a82fe5cc
--- /dev/null
+++ b/applications/luci-app-wireguard/luasrc/controller/wireguard.lua
@@ -0,0 +1,8 @@
+-- Copyright 2016-2017 Dan Luedtke <mail@danrl.com>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.wireguard", package.seeall)
+
+function index()
+ entry({"admin", "status", "wireguard"}, template("wireguard"), _("WireGuard Status"), 92)
+end
diff --git a/applications/luci-app-wireguard/luasrc/view/wireguard.htm b/applications/luci-app-wireguard/luasrc/view/wireguard.htm
new file mode 100644
index 0000000000..5b5d59a969
--- /dev/null
+++ b/applications/luci-app-wireguard/luasrc/view/wireguard.htm
@@ -0,0 +1,209 @@
+<%#
+ Copyright 2016-2017 Dan Luedtke <mail@danrl.com>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%
+ local data = { }
+ local last_device = ""
+
+ local wg_dump = io.popen("wg show all dump")
+ if wg_dump then
+ local line
+ for line in wg_dump:lines() do
+ local line = string.split(line, "\t")
+ if not (last_device == line[1]) then
+ last_device = line[1]
+ data[line[1]] = {
+ name = line[1],
+ public_key = line[3],
+ listen_port = line[5],
+ fwmark = line[6],
+ peers = { }
+ }
+ else
+ local peer = {
+ public_key = line[2],
+ endpoint = line[3],
+ allowed_ips = { },
+ latest_handshake = line[5],
+ transfer_rx = line[6],
+ transfer_tx = line[7],
+ persistent_keepalive = line[8]
+ }
+ if not (line[4] == '(none)') then
+ for ipkey, ipvalue in pairs(string.split(line[4], ",")) do
+ if #ipvalue > 0 then
+ table.insert(peer['allowed_ips'], ipvalue)
+ end
+ end
+ end
+ table.insert(data[line[1]].peers, peer)
+ end
+ end
+ end
+
+ if luci.http.formvalue("status") == "1" then
+ luci.http.prepare_content("application/json")
+ luci.http.write_json(data)
+ return
+ end
+-%>
+
+<%+header%>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+
+ function bytes_to_str(bytes) {
+ bytes = parseFloat(bytes);
+ if (bytes < 1) { return "0 B"; }
+ var sizes = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'];
+ var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
+ return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i];
+ };
+
+ function timestamp_to_str(timestamp) {
+ if (timestamp < 1) {
+ return '<%:Never%>';
+ }
+ var now = new Date();
+ var seconds = (now.getTime() / 1000) - timestamp;
+ var ago = "";
+ if (seconds < 60) {
+ ago = parseInt(seconds) + '<%:s ago%>';
+ } else if (seconds < 3600) {
+ ago = parseInt(seconds / 60) + '<%:m ago%>';
+ } else if (seconds < 86401) {
+ ago = parseInt(seconds / 3600) + '<%:h ago%>';
+ } else {
+ ago = '<%:over a day ago%>';
+ }
+ var t = new Date(timestamp * 1000);
+ return t.toUTCString() + ' (' + ago + ')';
+ }
+
+ XHR.poll(5, '<%=REQUEST_URI%>', { status: 1 },
+ function(x, data) {
+ for (var key in data) {
+ if (!data.hasOwnProperty(key)) { continue; }
+ var ifname = key;
+ var iface = data[key];
+ var s = "";
+ if (iface.public_key == '(none)') {
+ s += '<em><%:Interface does not have a public key!%></em>';
+ } else {
+ s += String.format(
+ '<strong><%:Public Key%>: </strong>%s',
+ iface.public_key
+ );
+ }
+ if (iface.listen_port > 0) {
+ s += String.format(
+ '<br /><strong><%:Listen Port%>: </strong>%s',
+ iface.listen_port
+ );
+ }
+ if (iface.fwmark != 'off') {
+ s += String.format(
+ '<br /><strong><%:Firewall Mark%>: </strong>%s',
+ iface.fwmark
+ );
+ }
+ document.getElementById(ifname + "_info").innerHTML = s;
+ for (var i = 0, ilen = iface.peers.length; i < ilen; i++) {
+ var peer = iface.peers[i];
+ var s = String.format(
+ '<strong><%:Public Key%>: </strong>%s',
+ peer.public_key
+ );
+ if (peer.endpoint != '(none)') {
+ s += String.format(
+ '<br /><strong><%:Endpoint%>: </strong>%s',
+ peer.endpoint
+ );
+ }
+ if (peer.allowed_ips.length > 0) {
+ s += '<br /><strong><%:Allowed IPs%>:</strong>';
+ for (var k = 0, klen = peer.allowed_ips.length; k < klen; k++) {
+ s += '<br />&nbsp;&nbsp;&bull;&nbsp;' + peer.allowed_ips[k];
+ }
+ }
+ if (peer.persistent_keepalive != 'off') {
+ s += String.format(
+ '<br /><strong><%:Persistent Keepalive%>: </strong>%ss',
+ peer.persistent_keepalive
+ );
+ }
+ var icon = '<img src="<%=resource%>/icons/tunnel_disabled.png" />';
+ var now = new Date();
+ if (((now.getTime() / 1000) - peer.latest_handshake) < 140) {
+ icon = '<img src="<%=resource%>/icons/tunnel.png" />';
+ }
+ s += String.format(
+ '<br /><strong><%:Latest Handshake%>: </strong>%s',
+ timestamp_to_str(peer.latest_handshake)
+ );
+ s += String.format(
+ '<br /><strong><%:Data Received%>: </strong>%s' +
+ '<br /><strong><%:Data Transmitted%>: </strong>%s',
+ bytes_to_str(peer.transfer_rx),
+ bytes_to_str(peer.transfer_tx)
+ );
+ document.getElementById(ifname + "_" + peer.public_key + "_icon").innerHTML = icon;
+ document.getElementById(ifname + "_" + peer.public_key + "_info").innerHTML = s;
+ }
+ }
+ });
+//]]></script>
+
+<h2>WireGuard Status</h2>
+
+<fieldset class="cbi-section">
+<%-
+for ikey, iface in pairs(data) do
+ -%>
+ <legend><%:Interface%> <%=ikey%></legend>
+ <table width="100%" cellspacing="10">
+ <tr>
+ <td width="33%" style="vertical-align:top"><%:Configuration%></td>
+ <td>
+ <table>
+ <tr>
+ <td id="<%=ikey%>_icon" style="width:16px; text-align:center; padding:3px">
+ &nbsp;
+ </td>
+ <td id="<%=ikey%>_info" style="vertical-align:middle; padding: 3px">
+ <em><%:Collecting data...%></em>
+ </td>
+ </tr></table>
+ </td>
+ </tr>
+ <%-
+ for pkey, peer in pairs(iface.peers) do
+ -%>
+ <tr>
+ <td width="33%" style="vertical-align:top"><%:Peer%></td>
+ <td>
+ <table>
+ <tr>
+ <td id="<%=ikey%>_<%=peer.public_key%>_icon" style="width:16px; text-align:center; padding:3px">
+ <img src="<%=resource%>/icons/tunnel_disabled.png" /><br />
+ <small>?</small>
+ </td>
+ <td id="<%=ikey%>_<%=peer.public_key%>_info" style="vertical-align:middle; padding: 3px">
+ <em><%:Collecting data...%></em>
+ </td>
+ </tr></table>
+ </td>
+ </tr>
+ <%-
+ end
+ -%>
+ </table>
+ <%-
+end
+-%>
+</fieldset>
+
+<%+footer%>
diff --git a/applications/luci-app-wireguard/po/ja/wireguard.po b/applications/luci-app-wireguard/po/ja/wireguard.po
new file mode 100644
index 0000000000..5cd7a90037
--- /dev/null
+++ b/applications/luci-app-wireguard/po/ja/wireguard.po
@@ -0,0 +1,74 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2017-02-28 00:31+0900\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Language-Team: \n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.12\n"
+"X-Poedit-Basepath: .\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgid "Allowed IPs"
+msgstr "許å¯ã•ã‚ŒãŸIP"
+
+msgid "Collecting data..."
+msgstr "データåŽé›†ä¸­ã§ã™..."
+
+msgid "Configuration"
+msgstr "設定"
+
+msgid "Data Received"
+msgstr "å—信済ã¿ãƒ‡ãƒ¼ã‚¿"
+
+msgid "Data Transmitted"
+msgstr "é€ä¿¡æ¸ˆã¿ãƒ‡ãƒ¼ã‚¿"
+
+msgid "Endpoint"
+msgstr "エンドãƒã‚¤ãƒ³ãƒˆ"
+
+msgid "Firewall Mark"
+msgstr "ファイアウォール マーク"
+
+msgid "Interface"
+msgstr "インターフェース"
+
+msgid "Interface does not have a public key!"
+msgstr "インターフェースã«å…¬é–‹éµãŒã‚ã‚Šã¾ã›ã‚“ï¼"
+
+msgid "Latest Handshake"
+msgstr "最新ã®ãƒãƒ³ãƒ‰ã‚·ã‚§ã‚¤ã‚¯"
+
+msgid "Listen Port"
+msgstr "å¾…ã¡å—ã‘ãƒãƒ¼ãƒˆ"
+
+msgid "Never"
+msgstr "ç„¡ã—"
+
+msgid "Peer"
+msgstr "ピア"
+
+msgid "Persistent Keepalive"
+msgstr "永続的ãªã‚­ãƒ¼ãƒ—アライブ"
+
+msgid "Public Key"
+msgstr "公開éµ"
+
+msgid "WireGuard Status"
+msgstr "WireGuard ステータス"
+
+msgid "h ago"
+msgstr "時間å‰"
+
+msgid "m ago"
+msgstr "分å‰"
+
+msgid "over a day ago"
+msgstr "1日以上å‰"
+
+msgid "s ago"
+msgstr "秒å‰"
diff --git a/applications/luci-app-wireguard/po/pt-br/wireguard.po b/applications/luci-app-wireguard/po/pt-br/wireguard.po
new file mode 100644
index 0000000000..d3b5059d5f
--- /dev/null
+++ b/applications/luci-app-wireguard/po/pt-br/wireguard.po
@@ -0,0 +1,73 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: pt_BR\n"
+
+msgid "Allowed IPs"
+msgstr "Endereços IP autorizados"
+
+msgid "Collecting data..."
+msgstr "Coletando dados..."
+
+msgid "Configuration"
+msgstr "Configuração"
+
+msgid "Data Received"
+msgstr "Dados Recebidos"
+
+msgid "Data Transmitted"
+msgstr "Dados Enviados"
+
+msgid "Endpoint"
+msgstr "Equipamento do ponto final"
+
+msgid "Firewall Mark"
+msgstr "Marca do Firewall"
+
+msgid "Interface"
+msgstr "Interface"
+
+msgid "Interface does not have a public key!"
+msgstr "A interface não tem uma chave pública!"
+
+msgid "Latest Handshake"
+msgstr "Última Negociação"
+
+msgid "Listen Port"
+msgstr "Porta de Escuta"
+
+msgid "Never"
+msgstr "Nunca"
+
+msgid "Peer"
+msgstr "Parceiro"
+
+msgid "Persistent Keepalive"
+msgstr "Manter Conexões Abertas (Keepalive)"
+
+msgid "Public Key"
+msgstr "Chave Pública"
+
+msgid "WireGuard Status"
+msgstr "Estado do WireGuard"
+
+msgid "h ago"
+msgstr "horas atrás"
+
+msgid "m ago"
+msgstr "meses atrás"
+
+msgid "over a day ago"
+msgstr "mais de um dia atrás"
+
+msgid "s ago"
+msgstr "segundos atrás"
diff --git a/applications/luci-app-wireguard/po/templates/wireguard.pot b/applications/luci-app-wireguard/po/templates/wireguard.pot
new file mode 100644
index 0000000000..9ec5c60048
--- /dev/null
+++ b/applications/luci-app-wireguard/po/templates/wireguard.pot
@@ -0,0 +1,62 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Allowed IPs"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Configuration"
+msgstr ""
+
+msgid "Data Received"
+msgstr ""
+
+msgid "Data Transmitted"
+msgstr ""
+
+msgid "Endpoint"
+msgstr ""
+
+msgid "Firewall Mark"
+msgstr ""
+
+msgid "Interface"
+msgstr ""
+
+msgid "Interface does not have a public key!"
+msgstr ""
+
+msgid "Latest Handshake"
+msgstr ""
+
+msgid "Listen Port"
+msgstr ""
+
+msgid "Never"
+msgstr ""
+
+msgid "Peer"
+msgstr ""
+
+msgid "Persistent Keepalive"
+msgstr ""
+
+msgid "Public Key"
+msgstr ""
+
+msgid "WireGuard Status"
+msgstr ""
+
+msgid "h ago"
+msgstr ""
+
+msgid "m ago"
+msgstr ""
+
+msgid "over a day ago"
+msgstr ""
+
+msgid "s ago"
+msgstr ""
diff --git a/applications/luci-app-wireguard/po/zh-cn/wireguard.po b/applications/luci-app-wireguard/po/zh-cn/wireguard.po
new file mode 100644
index 0000000000..e873a83891
--- /dev/null
+++ b/applications/luci-app-wireguard/po/zh-cn/wireguard.po
@@ -0,0 +1,73 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.1\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: zh_CN\n"
+
+msgid "Allowed IPs"
+msgstr "å…许的 IP"
+
+msgid "Collecting data..."
+msgstr "正在收集数æ®..."
+
+msgid "Configuration"
+msgstr "é…ç½®"
+
+msgid "Data Received"
+msgstr "已接收"
+
+msgid "Data Transmitted"
+msgstr "å·²å‘é€"
+
+msgid "Endpoint"
+msgstr "传输端点"
+
+msgid "Firewall Mark"
+msgstr "防ç«å¢™æ ‡è¯†"
+
+msgid "Interface"
+msgstr "接å£"
+
+msgid "Interface does not have a public key!"
+msgstr "接å£æ²¡æœ‰é…置公钥ï¼"
+
+msgid "Latest Handshake"
+msgstr "上次æ¡æ‰‹"
+
+msgid "Listen Port"
+msgstr "监å¬ç«¯å£"
+
+msgid "Never"
+msgstr "从ä¸"
+
+msgid "Peer"
+msgstr "对端"
+
+msgid "Persistent Keepalive"
+msgstr "Keepalive 间隔(秒)"
+
+msgid "Public Key"
+msgstr "公钥"
+
+msgid "WireGuard Status"
+msgstr "WireGuard 状æ€"
+
+msgid "h ago"
+msgstr "å°æ—¶å‰"
+
+msgid "m ago"
+msgstr "分钟å‰"
+
+msgid "over a day ago"
+msgstr "超过一天å‰"
+
+msgid "s ago"
+msgstr "秒å‰"
diff --git a/applications/luci-app-wol/po/pt-br/wol.po b/applications/luci-app-wol/po/pt-br/wol.po
index 6195e4cba4..783ec0bc0d 100644
--- a/applications/luci-app-wol/po/pt-br/wol.po
+++ b/applications/luci-app-wol/po/pt-br/wol.po
@@ -2,18 +2,18 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-19 00:29+0200\n"
-"PO-Revision-Date: 2011-10-11 20:31+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
+"PO-Revision-Date: 2017-02-20 18:13-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
"Language-Team: none\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Poedit 1.8.11\n"
msgid "Broadcast on all interfaces"
msgstr "Broadcast em todas as interfaces"
@@ -28,14 +28,13 @@ msgid "Network interface to use"
msgstr "Interfaces de rede para usar"
msgid "Send to broadcast address"
-msgstr ""
+msgstr "Enviar para o endereço de broadcast"
-#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
msgstr ""
-"Algumas vezes, somente uma das ferramentas funciona. Se uma delas falhar, "
-"tente a outra"
+"Algumas vezes, somente uma das duas ferramentas funciona. Se uma delas "
+"falhar, tente a outra"
msgid "Specifies the interface the WoL packet is sent on"
msgstr "Especifica a interface para onde os pacotes de WoL serão enviados"
diff --git a/build/zoneinfo2lua.pl b/build/zoneinfo2lua.pl
index d3f0403263..1a0bee1c68 100755
--- a/build/zoneinfo2lua.pl
+++ b/build/zoneinfo2lua.pl
@@ -46,6 +46,34 @@ while( ! eof ZTAB ) {
close ZTAB;
+# Add Etc/GMT zones from manually as they are not in zone.tab
+$TZ{"Etc/GMT"} = "GMT0";
+$TZ{"Etc/GMT-1"} = "<+01>-1";
+$TZ{"Etc/GMT-2"} = "<+02>-2";
+$TZ{"Etc/GMT-3"} = "<+03>-3";
+$TZ{"Etc/GMT-4"} = "<+04>-4";
+$TZ{"Etc/GMT-5"} = "<+05>-5";
+$TZ{"Etc/GMT-6"} = "<+06>-6";
+$TZ{"Etc/GMT-7"} = "<+07>-7";
+$TZ{"Etc/GMT-8"} = "<+08>-8";
+$TZ{"Etc/GMT-9"} = "<+09>-9";
+$TZ{"Etc/GMT-10"} = "<+10>-10";
+$TZ{"Etc/GMT-11"} = "<+11>-11";
+$TZ{"Etc/GMT-12"} = "<+12>-12";
+$TZ{"Etc/GMT-13"} = "<+13>-13";
+$TZ{"Etc/GMT-14"} = "<+14>-14";
+$TZ{"Etc/GMT+1"} = "<-01>1";
+$TZ{"Etc/GMT+2"} = "<-02>2";
+$TZ{"Etc/GMT+3"} = "<-03>3";
+$TZ{"Etc/GMT+4"} = "<-04>4";
+$TZ{"Etc/GMT+5"} = "<-05>5";
+$TZ{"Etc/GMT+6"} = "<-06>6";
+$TZ{"Etc/GMT+7"} = "<-07>7";
+$TZ{"Etc/GMT+8"} = "<-08>8";
+$TZ{"Etc/GMT+9"} = "<-09>9";
+$TZ{"Etc/GMT+10"} = "<-10>10";
+$TZ{"Etc/GMT+11"} = "<-11>11";
+$TZ{"Etc/GMT+12"} = "<-12>12";
open(O, "> $tzdout/tzdata.lua") || die "open($tzdout/tzdata.lua): $!\n";
diff --git a/contrib/package/community-profiles/files/etc/config/profile_potsdam b/contrib/package/community-profiles/files/etc/config/profile_potsdam
index c15624a9fd..9bdb603239 100644
--- a/contrib/package/community-profiles/files/etc/config/profile_potsdam
+++ b/contrib/package/community-profiles/files/etc/config/profile_potsdam
@@ -1,19 +1,35 @@
config 'community' 'profile'
option 'name' 'Freifunk Potsdam'
option 'homepage' 'http://potsdam.freifunk.net'
- option 'ssid' 'www.freifunk-potsdam.de'
+ option 'ssid' 'Freifunk-Potsdam-XXX-YYY'
option 'mesh_network' '10.22.0.0/16'
option 'splash_network' '192.168.22.0/24'
option 'splash_prefix' '24'
option 'latitude' '52.39349'
option 'longitude' '13.06489'
+ option 'ipv6' '0'
+
+config 'defaults' 'interface'
+ option 'netmask' '255.255.0.0'
+ option 'dns' '85.214.20.141 213.73.91.35 194.150.168.168'
+ option 'delegate' '0'
config 'defaults' 'wifi_device'
option 'channel' '5'
+config 'defaults' 'wifi_device_5'
+ option 'channel' '44'
+
config 'defaults' 'bssidscheme'
option '5' '02:CA:FF:EE:BA:BE'
+ option '44' '02:CA:FF:EE:BA:BE'
-config 'defaults' 'interface'
- option 'dns' '85.214.20.141 213.73.91.35 194.150.168.168'
+config 'defaults' 'ssidscheme'
+ option '5' 'Mesh23'
+ option '44' 'Mesh23'
+
+config 'defaults' 'dhcp'
+ option 'leasetime' '15m'
+config 'defaults' 'olsrd'
+ option 'LinkQualityAlgorithm' 'etx_ffeth'
diff --git a/contrib/package/freifunk-common/Makefile b/contrib/package/freifunk-common/Makefile
index d9bbd994a1..2b9336fb06 100644
--- a/contrib/package/freifunk-common/Makefile
+++ b/contrib/package/freifunk-common/Makefile
@@ -4,7 +4,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=freifunk-common
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
diff --git a/contrib/package/freifunk-common/files/etc/config/freifunk b/contrib/package/freifunk-common/files/etc/config/freifunk
index 9a46f056ad..b1a2e41e2a 100644
--- a/contrib/package/freifunk-common/files/etc/config/freifunk
+++ b/contrib/package/freifunk-common/files/etc/config/freifunk
@@ -104,12 +104,6 @@ config 'defaults' 'wifi_iface'
option 'bssid' '12:CA:FF:EE:BA:BE'
option 'mcast_rate' '6000'
-config 'defaults' 'madwifi_wifi_iface'
- option 'bgscan' '0'
- option 'sw_merge' '1'
- option 'probereq' '1'
- option 'mcast_rate' '5500'
-
config 'defaults' 'interface'
option 'netmask' '255.255.0.0'
option 'dns' '8.8.8.8 212.204.49.83 141.1.1.1'
diff --git a/contrib/package/meshwizard/Makefile b/contrib/package/meshwizard/Makefile
index 9ac5a06286..62983465c1 100644
--- a/contrib/package/meshwizard/Makefile
+++ b/contrib/package/meshwizard/Makefile
@@ -4,7 +4,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=meshwizard
-PKG_RELEASE:=0.3.2
+PKG_RELEASE:=0.3.3
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
diff --git a/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/rename-wifi.sh b/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/rename-wifi.sh
index e9139ed510..f2d10cc9e2 100755
--- a/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/rename-wifi.sh
+++ b/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/rename-wifi.sh
@@ -1,6 +1,6 @@
#!/bin/sh
# This script renames IB_wifi_ interface names into real interface names used on this system.
-# E.g. wireless.IB_wifi0 would become wireless.wifi0 on madwifi and wireless.radio0 on mac80211
+# E.g. wireless.IB_wifi0 would become wireless.radio0 on mac80211
. $dir/functions.sh
diff --git a/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi.sh b/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi.sh
index 41feb86651..707b7b72cd 100755
--- a/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi.sh
+++ b/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi.sh
@@ -59,11 +59,6 @@ uci set wireless.$net\_iface=wifi-iface
# create new wifi-iface for $net from defaults
set_defaults "wifi_iface_" wireless.$net\_iface
-# overwrite some settings for type atheros (madwifi)
-if [ "$type" = "atheros" ]; then
- set_defaults "madwifi_wifi_iface_" wireless.${net}
-fi
-
# overwrite defaults
bssid="$($dir/helpers/gen_bssid.sh $channel $community)"
diff --git a/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/supports_vap.sh b/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/supports_vap.sh
index 0585ab5fe1..7fdff3c566 100755
--- a/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/supports_vap.sh
+++ b/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/supports_vap.sh
@@ -8,9 +8,7 @@ if [ -z "$dev" -o -z "$type" ]; then
exit 1
fi
-if [ "$type" = "atheros" ]; then
- exit 0
-elif [ "$type" = "mac80211" ]; then
+if [ "$type" = "mac80211" ]; then
# not hostapd[-mini], no VAP
if [ ! -x /usr/sbin/hostapd ]; then
echo "WARNING: hostapd[-mini] is required to be able to use VAP with mac80211."
diff --git a/luci.mk b/luci.mk
index 69aecaa250..1ddb73d498 100644
--- a/luci.mk
+++ b/luci.mk
@@ -36,7 +36,7 @@ LUCI_LANG.sv=Svenska (Swedish)
LUCI_LANG.tr=Türkçe (Turkish)
LUCI_LANG.uk=україÌнÑька (Ukrainian)
LUCI_LANG.vi=Tiếng Việt (Vietnamese)
-LUCI_LANG.zh-cn=æ™®é€šè¯ (Chinese)
+LUCI_LANG.zh-cn=中文 (Chinese)
LUCI_LANG.zh-tw=臺ç£è¯èªž (Taiwanese)
# Submenu titles
@@ -56,7 +56,7 @@ PKG_VERSION?=$(if $(DUMP),x,$(strip $(shell \
elif git log -1 >/dev/null 2>/dev/null; then \
revision="svn-r$$(LC_ALL=C git log -1 | sed -ne 's/.*git-svn-id: .*@\([0-9]\+\) .*/\1/p')"; \
if [ "$$revision" = "svn-r" ]; then \
- set -- $$(git log -1 --format="%ct %h"); \
+ set -- $$(git log -1 --format="%ct %h" --abbrev=7); \
secs="$$(($$1 % 86400))"; \
yday="$$(date --utc --date="@$$1" "+%y.%j")"; \
revision="$$(printf 'git-%s.%05d-%s' "$$yday" "$$secs" "$$2")"; \
@@ -70,7 +70,8 @@ PKG_VERSION?=$(if $(DUMP),x,$(strip $(shell \
PKG_GITBRANCH?=$(if $(DUMP),x,$(strip $(shell \
variant="LuCI"; \
if git log -1 >/dev/null 2>/dev/null; then \
- branch="$$(git symbolic-ref --short -q HEAD 2>/dev/null)"; \
+ branch="$$(git branch --remote --verbose --no-abbrev --contains 2>/dev/null | \
+ sed -rne 's|^[^/]+/([^ ]+) [a-f0-9]{40} .+$$|\1|p' | head -n1)"; \
if [ "$$branch" != "master" ]; then \
variant="LuCI $$branch branch"; \
else \
diff --git a/modules/luci-base/luasrc/cbi/datatypes.lua b/modules/luci-base/luasrc/cbi/datatypes.lua
index 62b0e0f617..cf56566287 100644
--- a/modules/luci-base/luasrc/cbi/datatypes.lua
+++ b/modules/luci-base/luasrc/cbi/datatypes.lua
@@ -283,6 +283,14 @@ function hexstring(val)
return false
end
+function hex(val, maxbytes)
+ maxbytes = tonumber(maxbytes)
+ if val and maxbytes ~= nil then
+ return ((val:match("^0x[a-fA-F0-9]+$") ~= nil) and (#val <= 2 + maxbytes * 2))
+ end
+ return false
+end
+
function base64(val)
if val then
return (val:match("^[a-zA-Z0-9/+]+=?=?$") ~= nil) and (math.fmod(#val, 4) == 0)
diff --git a/modules/luci-base/luasrc/dispatcher.lua b/modules/luci-base/luasrc/dispatcher.lua
index 0876ce6585..0bd19456f2 100644
--- a/modules/luci-base/luasrc/dispatcher.lua
+++ b/modules/luci-base/luasrc/dispatcher.lua
@@ -101,7 +101,7 @@ function error500(message)
return false
end
-function authenticator.htmlauth(validator, accs, default)
+function authenticator.htmlauth(validator, accs, default, template)
local user = http.formvalue("luci_username")
local pass = http.formvalue("luci_password")
@@ -113,7 +113,7 @@ function authenticator.htmlauth(validator, accs, default)
require("luci.template")
context.path = {}
http.status(403, "Forbidden")
- luci.template.render("sysauth", {duser=default, fuser=user})
+ luci.template.render(template or "sysauth", {duser=default, fuser=user})
return false
@@ -360,7 +360,7 @@ function dispatch(request)
if not util.contains(accs, user) then
if authen then
- local user, sess = authen(sys.user.checkpasswd, accs, def)
+ local user, sess = authen(sys.user.checkpasswd, accs, def, track.sysauth_template)
local token
if not user or not util.contains(accs, user) then
return
diff --git a/modules/luci-base/luasrc/model/network.lua b/modules/luci-base/luasrc/model/network.lua
index 49d91b875a..d9ef4089c8 100644
--- a/modules/luci-base/luasrc/model/network.lua
+++ b/modules/luci-base/luasrc/model/network.lua
@@ -1362,8 +1362,6 @@ function wifidev.get_i18n(self)
local t = "Generic"
if self.iwinfo.type == "wl" then
t = "Broadcom"
- elseif self.iwinfo.type == "madwifi" then
- t = "Atheros"
end
local m = ""
diff --git a/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua b/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua
index 465d7df3d3..419c191f2b 100644
--- a/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua
+++ b/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua
@@ -59,42 +59,42 @@ TZ = {
{ 'America/Anchorage', 'AKST9AKDT,M3.2.0,M11.1.0' },
{ 'America/Anguilla', 'AST4' },
{ 'America/Antigua', 'AST4' },
- { 'America/Araguaina', 'BRT3' },
- { 'America/Argentina/Buenos Aires', 'ART3' },
- { 'America/Argentina/Catamarca', 'ART3' },
- { 'America/Argentina/Cordoba', 'ART3' },
- { 'America/Argentina/Jujuy', 'ART3' },
- { 'America/Argentina/La Rioja', 'ART3' },
- { 'America/Argentina/Mendoza', 'ART3' },
- { 'America/Argentina/Rio Gallegos', 'ART3' },
- { 'America/Argentina/Salta', 'ART3' },
- { 'America/Argentina/San Juan', 'ART3' },
- { 'America/Argentina/San Luis', 'ART3' },
- { 'America/Argentina/Tucuman', 'ART3' },
- { 'America/Argentina/Ushuaia', 'ART3' },
+ { 'America/Araguaina', '<-03>3' },
+ { 'America/Argentina/Buenos Aires', '<-03>3' },
+ { 'America/Argentina/Catamarca', '<-03>3' },
+ { 'America/Argentina/Cordoba', '<-03>3' },
+ { 'America/Argentina/Jujuy', '<-03>3' },
+ { 'America/Argentina/La Rioja', '<-03>3' },
+ { 'America/Argentina/Mendoza', '<-03>3' },
+ { 'America/Argentina/Rio Gallegos', '<-03>3' },
+ { 'America/Argentina/Salta', '<-03>3' },
+ { 'America/Argentina/San Juan', '<-03>3' },
+ { 'America/Argentina/San Luis', '<-03>3' },
+ { 'America/Argentina/Tucuman', '<-03>3' },
+ { 'America/Argentina/Ushuaia', '<-03>3' },
{ 'America/Aruba', 'AST4' },
- { 'America/Asuncion', 'PYT4PYST,M10.1.0/0,M3.4.0/0' },
+ { 'America/Asuncion', '<-04>4<-03>,M10.1.0/0,M3.4.0/0' },
{ 'America/Atikokan', 'EST5' },
- { 'America/Bahia', 'BRT3' },
+ { 'America/Bahia', '<-03>3' },
{ 'America/Bahia Banderas', 'CST6CDT,M4.1.0,M10.5.0' },
{ 'America/Barbados', 'AST4' },
- { 'America/Belem', 'BRT3' },
+ { 'America/Belem', '<-03>3' },
{ 'America/Belize', 'CST6' },
{ 'America/Blanc-Sablon', 'AST4' },
- { 'America/Boa Vista', 'AMT4' },
- { 'America/Bogota', 'COT5' },
+ { 'America/Boa Vista', '<-04>4' },
+ { 'America/Bogota', '<-05>5' },
{ 'America/Boise', 'MST7MDT,M3.2.0,M11.1.0' },
{ 'America/Cambridge Bay', 'MST7MDT,M3.2.0,M11.1.0' },
- { 'America/Campo Grande', 'AMT4AMST,M10.3.0/0,M2.3.0/0' },
+ { 'America/Campo Grande', '<-04>4<-03>,M10.3.0/0,M2.3.0/0' },
{ 'America/Cancun', 'EST5' },
- { 'America/Caracas', 'VET4' },
- { 'America/Cayenne', 'GFT3' },
+ { 'America/Caracas', '<-04>4' },
+ { 'America/Cayenne', '<-03>3' },
{ 'America/Cayman', 'EST5' },
{ 'America/Chicago', 'CST6CDT,M3.2.0,M11.1.0' },
{ 'America/Chihuahua', 'MST7MDT,M4.1.0,M10.5.0' },
{ 'America/Costa Rica', 'CST6' },
{ 'America/Creston', 'MST7' },
- { 'America/Cuiaba', 'AMT4AMST,M10.3.0/0,M2.3.0/0' },
+ { 'America/Cuiaba', '<-04>4<-03>,M10.3.0/0,M2.3.0/0' },
{ 'America/Curacao', 'AST4' },
{ 'America/Danmarkshavn', 'GMT0' },
{ 'America/Dawson', 'PST8PDT,M3.2.0,M11.1.0' },
@@ -103,19 +103,19 @@ TZ = {
{ 'America/Detroit', 'EST5EDT,M3.2.0,M11.1.0' },
{ 'America/Dominica', 'AST4' },
{ 'America/Edmonton', 'MST7MDT,M3.2.0,M11.1.0' },
- { 'America/Eirunepe', 'ACT5' },
+ { 'America/Eirunepe', '<-05>5' },
{ 'America/El Salvador', 'CST6' },
{ 'America/Fort Nelson', 'MST7' },
- { 'America/Fortaleza', 'BRT3' },
+ { 'America/Fortaleza', '<-03>3' },
{ 'America/Glace Bay', 'AST4ADT,M3.2.0,M11.1.0' },
- { 'America/Godthab', 'WGT3WGST,M3.5.0/-2,M10.5.0/-1' },
+ { 'America/Godthab', '<-03>3<-02>,M3.5.0/-2,M10.5.0/-1' },
{ 'America/Goose Bay', 'AST4ADT,M3.2.0,M11.1.0' },
{ 'America/Grand Turk', 'AST4' },
{ 'America/Grenada', 'AST4' },
{ 'America/Guadeloupe', 'AST4' },
{ 'America/Guatemala', 'CST6' },
- { 'America/Guayaquil', 'ECT5' },
- { 'America/Guyana', 'GYT4' },
+ { 'America/Guayaquil', '<-05>5' },
+ { 'America/Guyana', '<-04>4' },
{ 'America/Halifax', 'AST4ADT,M3.2.0,M11.1.0' },
{ 'America/Havana', 'CST5CDT,M3.2.0/0,M11.1.0/1' },
{ 'America/Hermosillo', 'MST7' },
@@ -134,13 +134,13 @@ TZ = {
{ 'America/Kentucky/Louisville', 'EST5EDT,M3.2.0,M11.1.0' },
{ 'America/Kentucky/Monticello', 'EST5EDT,M3.2.0,M11.1.0' },
{ 'America/Kralendijk', 'AST4' },
- { 'America/La Paz', 'BOT4' },
- { 'America/Lima', 'PET5' },
+ { 'America/La Paz', '<-04>4' },
+ { 'America/Lima', '<-05>5' },
{ 'America/Los Angeles', 'PST8PDT,M3.2.0,M11.1.0' },
{ 'America/Lower Princes', 'AST4' },
- { 'America/Maceio', 'BRT3' },
+ { 'America/Maceio', '<-03>3' },
{ 'America/Managua', 'CST6' },
- { 'America/Manaus', 'AMT4' },
+ { 'America/Manaus', '<-04>4' },
{ 'America/Marigot', 'AST4' },
{ 'America/Martinique', 'AST4' },
{ 'America/Matamoros', 'CST6CDT,M3.2.0,M11.1.0' },
@@ -149,39 +149,40 @@ TZ = {
{ 'America/Merida', 'CST6CDT,M4.1.0,M10.5.0' },
{ 'America/Metlakatla', 'AKST9AKDT,M3.2.0,M11.1.0' },
{ 'America/Mexico City', 'CST6CDT,M4.1.0,M10.5.0' },
- { 'America/Miquelon', 'PMST3PMDT,M3.2.0,M11.1.0' },
+ { 'America/Miquelon', '<-03>3<-02>,M3.2.0,M11.1.0' },
{ 'America/Moncton', 'AST4ADT,M3.2.0,M11.1.0' },
{ 'America/Monterrey', 'CST6CDT,M4.1.0,M10.5.0' },
- { 'America/Montevideo', 'UYT3' },
+ { 'America/Montevideo', '<-03>3' },
{ 'America/Montserrat', 'AST4' },
{ 'America/Nassau', 'EST5EDT,M3.2.0,M11.1.0' },
{ 'America/New York', 'EST5EDT,M3.2.0,M11.1.0' },
{ 'America/Nipigon', 'EST5EDT,M3.2.0,M11.1.0' },
{ 'America/Nome', 'AKST9AKDT,M3.2.0,M11.1.0' },
- { 'America/Noronha', 'FNT2' },
+ { 'America/Noronha', '<-02>2' },
{ 'America/North Dakota/Beulah', 'CST6CDT,M3.2.0,M11.1.0' },
{ 'America/North Dakota/Center', 'CST6CDT,M3.2.0,M11.1.0' },
{ 'America/North Dakota/New Salem', 'CST6CDT,M3.2.0,M11.1.0' },
{ 'America/Ojinaga', 'MST7MDT,M3.2.0,M11.1.0' },
{ 'America/Panama', 'EST5' },
{ 'America/Pangnirtung', 'EST5EDT,M3.2.0,M11.1.0' },
- { 'America/Paramaribo', 'SRT3' },
+ { 'America/Paramaribo', '<-03>3' },
{ 'America/Phoenix', 'MST7' },
{ 'America/Port of Spain', 'AST4' },
- { 'America/Port-au-Prince', 'EST5' },
- { 'America/Porto Velho', 'AMT4' },
+ { 'America/Port-au-Prince', 'EST5EDT,M3.2.0,M11.1.0' },
+ { 'America/Porto Velho', '<-04>4' },
{ 'America/Puerto Rico', 'AST4' },
+ { 'America/Punta Arenas', '<-03>3' },
{ 'America/Rainy River', 'CST6CDT,M3.2.0,M11.1.0' },
{ 'America/Rankin Inlet', 'CST6CDT,M3.2.0,M11.1.0' },
- { 'America/Recife', 'BRT3' },
+ { 'America/Recife', '<-03>3' },
{ 'America/Regina', 'CST6' },
{ 'America/Resolute', 'CST6CDT,M3.2.0,M11.1.0' },
- { 'America/Rio Branco', 'ACT5' },
- { 'America/Santarem', 'BRT3' },
- { 'America/Santiago', 'CLT4CLST,M8.2.6/24,M5.2.6/24' },
+ { 'America/Rio Branco', '<-05>5' },
+ { 'America/Santarem', '<-03>3' },
+ { 'America/Santiago', '<-04>4<-03>,M8.2.6/24,M5.2.6/24' },
{ 'America/Santo Domingo', 'AST4' },
- { 'America/Sao Paulo', 'BRT3BRST,M10.3.0/0,M2.3.0/0' },
- { 'America/Scoresbysund', 'EGT1EGST,M3.5.0/0,M10.5.0/1' },
+ { 'America/Sao Paulo', '<-03>3<-02>,M10.3.0/0,M2.3.0/0' },
+ { 'America/Scoresbysund', '<-01>1<+00>,M3.5.0/0,M10.5.0/1' },
{ 'America/Sitka', 'AKST9AKDT,M3.2.0,M11.1.0' },
{ 'America/St Barthelemy', 'AST4' },
{ 'America/St Johns', 'NST3:30NDT,M3.2.0,M11.1.0' },
@@ -204,16 +205,16 @@ TZ = {
{ 'Antarctica/Casey', '<+11>-11' },
{ 'Antarctica/Davis', '<+07>-7' },
{ 'Antarctica/DumontDUrville', '<+10>-10' },
- { 'Antarctica/Macquarie', 'MIST-11' },
+ { 'Antarctica/Macquarie', '<+11>-11' },
{ 'Antarctica/Mawson', '<+05>-5' },
{ 'Antarctica/McMurdo', 'NZST-12NZDT,M9.5.0,M4.1.0/3' },
- { 'Antarctica/Palmer', 'CLT4CLST,M8.2.6/24,M5.2.6/24' },
+ { 'Antarctica/Palmer', '<-03>3' },
{ 'Antarctica/Rothera', '<-03>3' },
{ 'Antarctica/Syowa', '<+03>-3' },
{ 'Antarctica/Troll', '<+00>0<+02>-2,M3.5.0/1,M10.5.0/3' },
{ 'Antarctica/Vostok', '<+06>-6' },
{ 'Arctic/Longyearbyen', 'CET-1CEST,M3.5.0,M10.5.0/3' },
- { 'Asia/Aden', 'AST-3' },
+ { 'Asia/Aden', '<+03>-3' },
{ 'Asia/Almaty', '<+06>-6' },
{ 'Asia/Amman', 'EET-2EEST,M3.5.4/24,M10.5.5/1' },
{ 'Asia/Anadyr', '<+12>-12' },
@@ -221,102 +222,129 @@ TZ = {
{ 'Asia/Aqtobe', '<+05>-5' },
{ 'Asia/Ashgabat', '<+05>-5' },
{ 'Asia/Atyrau', '<+05>-5' },
- { 'Asia/Baghdad', 'AST-3' },
- { 'Asia/Bahrain', 'AST-3' },
+ { 'Asia/Baghdad', '<+03>-3' },
+ { 'Asia/Bahrain', '<+03>-3' },
{ 'Asia/Baku', '<+04>-4' },
- { 'Asia/Bangkok', 'ICT-7' },
+ { 'Asia/Bangkok', '<+07>-7' },
{ 'Asia/Barnaul', '<+07>-7' },
{ 'Asia/Beirut', 'EET-2EEST,M3.5.0/0,M10.5.0/0' },
{ 'Asia/Bishkek', '<+06>-6' },
- { 'Asia/Brunei', 'BNT-8' },
+ { 'Asia/Brunei', '<+08>-8' },
{ 'Asia/Chita', '<+09>-9' },
- { 'Asia/Choibalsan', 'CHOT-8CHOST,M3.5.6,M9.5.6/0' },
+ { 'Asia/Choibalsan', '<+08>-8' },
{ 'Asia/Colombo', '<+0530>-5:30' },
{ 'Asia/Damascus', 'EET-2EEST,M3.5.5/0,M10.5.5/0' },
- { 'Asia/Dhaka', 'BDT-6' },
- { 'Asia/Dili', 'TLT-9' },
- { 'Asia/Dubai', 'GST-4' },
+ { 'Asia/Dhaka', '<+06>-6' },
+ { 'Asia/Dili', '<+09>-9' },
+ { 'Asia/Dubai', '<+04>-4' },
{ 'Asia/Dushanbe', '<+05>-5' },
{ 'Asia/Famagusta', '<+03>-3' },
{ 'Asia/Gaza', 'EET-2EEST,M3.5.6/1,M10.5.6/1' },
{ 'Asia/Hebron', 'EET-2EEST,M3.5.6/1,M10.5.6/1' },
- { 'Asia/Ho Chi Minh', 'ICT-7' },
+ { 'Asia/Ho Chi Minh', '<+07>-7' },
{ 'Asia/Hong Kong', 'HKT-8' },
- { 'Asia/Hovd', 'HOVT-7HOVST,M3.5.6,M9.5.6/0' },
+ { 'Asia/Hovd', '<+07>-7' },
{ 'Asia/Irkutsk', '<+08>-8' },
{ 'Asia/Jakarta', 'WIB-7' },
{ 'Asia/Jayapura', 'WIT-9' },
{ 'Asia/Jerusalem', 'IST-2IDT,M3.4.4/26,M10.5.0' },
- { 'Asia/Kabul', 'AFT-4:30' },
+ { 'Asia/Kabul', '<+0430>-4:30' },
{ 'Asia/Kamchatka', '<+12>-12' },
{ 'Asia/Karachi', 'PKT-5' },
- { 'Asia/Kathmandu', 'NPT-5:45' },
+ { 'Asia/Kathmandu', '<+0545>-5:45' },
{ 'Asia/Khandyga', '<+09>-9' },
{ 'Asia/Kolkata', 'IST-5:30' },
{ 'Asia/Krasnoyarsk', '<+07>-7' },
- { 'Asia/Kuala Lumpur', 'MYT-8' },
- { 'Asia/Kuching', 'MYT-8' },
- { 'Asia/Kuwait', 'AST-3' },
+ { 'Asia/Kuala Lumpur', '<+08>-8' },
+ { 'Asia/Kuching', '<+08>-8' },
+ { 'Asia/Kuwait', '<+03>-3' },
{ 'Asia/Macau', 'CST-8' },
{ 'Asia/Magadan', '<+11>-11' },
{ 'Asia/Makassar', 'WITA-8' },
- { 'Asia/Manila', 'PHT-8' },
- { 'Asia/Muscat', 'GST-4' },
+ { 'Asia/Manila', '<+08>-8' },
+ { 'Asia/Muscat', '<+04>-4' },
{ 'Asia/Nicosia', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
{ 'Asia/Novokuznetsk', '<+07>-7' },
{ 'Asia/Novosibirsk', '<+07>-7' },
{ 'Asia/Omsk', '<+06>-6' },
{ 'Asia/Oral', '<+05>-5' },
- { 'Asia/Phnom Penh', 'ICT-7' },
+ { 'Asia/Phnom Penh', '<+07>-7' },
{ 'Asia/Pontianak', 'WIB-7' },
{ 'Asia/Pyongyang', 'KST-8:30' },
- { 'Asia/Qatar', 'AST-3' },
+ { 'Asia/Qatar', '<+03>-3' },
{ 'Asia/Qyzylorda', '<+06>-6' },
- { 'Asia/Riyadh', 'AST-3' },
+ { 'Asia/Riyadh', '<+03>-3' },
{ 'Asia/Sakhalin', '<+11>-11' },
{ 'Asia/Samarkand', '<+05>-5' },
{ 'Asia/Seoul', 'KST-9' },
{ 'Asia/Shanghai', 'CST-8' },
- { 'Asia/Singapore', 'SGT-8' },
+ { 'Asia/Singapore', '<+08>-8' },
{ 'Asia/Srednekolymsk', '<+11>-11' },
{ 'Asia/Taipei', 'CST-8' },
{ 'Asia/Tashkent', '<+05>-5' },
{ 'Asia/Tbilisi', '<+04>-4' },
- { 'Asia/Tehran', 'IRST-3:30IRDT,J80/0,J264/0' },
- { 'Asia/Thimphu', 'BTT-6' },
+ { 'Asia/Tehran', '<+0330>-3:30<+0430>,J80/0,J264/0' },
+ { 'Asia/Thimphu', '<+06>-6' },
{ 'Asia/Tokyo', 'JST-9' },
{ 'Asia/Tomsk', '<+07>-7' },
- { 'Asia/Ulaanbaatar', 'ULAT-8ULAST,M3.5.6,M9.5.6/0' },
- { 'Asia/Urumqi', 'XJT-6' },
+ { 'Asia/Ulaanbaatar', '<+08>-8' },
+ { 'Asia/Urumqi', '<+06>-6' },
{ 'Asia/Ust-Nera', '<+10>-10' },
- { 'Asia/Vientiane', 'ICT-7' },
+ { 'Asia/Vientiane', '<+07>-7' },
{ 'Asia/Vladivostok', '<+10>-10' },
{ 'Asia/Yakutsk', '<+09>-9' },
- { 'Asia/Yangon', 'MMT-6:30' },
+ { 'Asia/Yangon', '<+0630>-6:30' },
{ 'Asia/Yekaterinburg', '<+05>-5' },
{ 'Asia/Yerevan', '<+04>-4' },
- { 'Atlantic/Azores', 'AZOT1AZOST,M3.5.0/0,M10.5.0/1' },
+ { 'Atlantic/Azores', '<-01>1<+00>,M3.5.0/0,M10.5.0/1' },
{ 'Atlantic/Bermuda', 'AST4ADT,M3.2.0,M11.1.0' },
{ 'Atlantic/Canary', 'WET0WEST,M3.5.0/1,M10.5.0' },
- { 'Atlantic/Cape Verde', 'CVT1' },
+ { 'Atlantic/Cape Verde', '<-01>1' },
{ 'Atlantic/Faroe', 'WET0WEST,M3.5.0/1,M10.5.0' },
{ 'Atlantic/Madeira', 'WET0WEST,M3.5.0/1,M10.5.0' },
{ 'Atlantic/Reykjavik', 'GMT0' },
- { 'Atlantic/South Georgia', 'GST2' },
+ { 'Atlantic/South Georgia', '<-02>2' },
{ 'Atlantic/St Helena', 'GMT0' },
- { 'Atlantic/Stanley', 'FKST3' },
+ { 'Atlantic/Stanley', '<-03>3' },
{ 'Australia/Adelaide', 'ACST-9:30ACDT,M10.1.0,M4.1.0/3' },
{ 'Australia/Brisbane', 'AEST-10' },
{ 'Australia/Broken Hill', 'ACST-9:30ACDT,M10.1.0,M4.1.0/3' },
{ 'Australia/Currie', 'AEST-10AEDT,M10.1.0,M4.1.0/3' },
{ 'Australia/Darwin', 'ACST-9:30' },
- { 'Australia/Eucla', 'ACWST-8:45' },
+ { 'Australia/Eucla', '<+0845>-8:45' },
{ 'Australia/Hobart', 'AEST-10AEDT,M10.1.0,M4.1.0/3' },
{ 'Australia/Lindeman', 'AEST-10' },
- { 'Australia/Lord Howe', 'LHST-10:30LHDT-11,M10.1.0,M4.1.0' },
+ { 'Australia/Lord Howe', '<+1030>-10:30<+11>-11,M10.1.0,M4.1.0' },
{ 'Australia/Melbourne', 'AEST-10AEDT,M10.1.0,M4.1.0/3' },
{ 'Australia/Perth', 'AWST-8' },
{ 'Australia/Sydney', 'AEST-10AEDT,M10.1.0,M4.1.0/3' },
+ { 'Etc/GMT', 'GMT0' },
+ { 'Etc/GMT+1', '<-01>1' },
+ { 'Etc/GMT+10', '<-10>10' },
+ { 'Etc/GMT+11', '<-11>11' },
+ { 'Etc/GMT+12', '<-12>12' },
+ { 'Etc/GMT+2', '<-02>2' },
+ { 'Etc/GMT+3', '<-03>3' },
+ { 'Etc/GMT+4', '<-04>4' },
+ { 'Etc/GMT+5', '<-05>5' },
+ { 'Etc/GMT+6', '<-06>6' },
+ { 'Etc/GMT+7', '<-07>7' },
+ { 'Etc/GMT+8', '<-08>8' },
+ { 'Etc/GMT+9', '<-09>9' },
+ { 'Etc/GMT-1', '<+01>-1' },
+ { 'Etc/GMT-10', '<+10>-10' },
+ { 'Etc/GMT-11', '<+11>-11' },
+ { 'Etc/GMT-12', '<+12>-12' },
+ { 'Etc/GMT-13', '<+13>-13' },
+ { 'Etc/GMT-14', '<+14>-14' },
+ { 'Etc/GMT-2', '<+02>-2' },
+ { 'Etc/GMT-3', '<+03>-3' },
+ { 'Etc/GMT-4', '<+04>-4' },
+ { 'Etc/GMT-5', '<+05>-5' },
+ { 'Etc/GMT-6', '<+06>-6' },
+ { 'Etc/GMT-7', '<+07>-7' },
+ { 'Etc/GMT-8', '<+08>-8' },
+ { 'Etc/GMT-9', '<+09>-9' },
{ 'Europe/Amsterdam', 'CET-1CEST,M3.5.0,M10.5.0/3' },
{ 'Europe/Andorra', 'CET-1CEST,M3.5.0,M10.5.0/3' },
{ 'Europe/Astrakhan', '<+04>-4' },
@@ -378,53 +406,52 @@ TZ = {
{ 'Europe/Zaporozhye', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
{ 'Europe/Zurich', 'CET-1CEST,M3.5.0,M10.5.0/3' },
{ 'Indian/Antananarivo', 'EAT-3' },
- { 'Indian/Chagos', 'IOT-6' },
- { 'Indian/Christmas', 'CXT-7' },
- { 'Indian/Cocos', 'CCT-6:30' },
+ { 'Indian/Chagos', '<+06>-6' },
+ { 'Indian/Christmas', '<+07>-7' },
+ { 'Indian/Cocos', '<+0630>-6:30' },
{ 'Indian/Comoro', 'EAT-3' },
{ 'Indian/Kerguelen', '<+05>-5' },
- { 'Indian/Mahe', 'SCT-4' },
- { 'Indian/Maldives', 'MVT-5' },
- { 'Indian/Mauritius', 'MUT-4' },
+ { 'Indian/Mahe', '<+04>-4' },
+ { 'Indian/Maldives', '<+05>-5' },
+ { 'Indian/Mauritius', '<+04>-4' },
{ 'Indian/Mayotte', 'EAT-3' },
- { 'Indian/Reunion', 'RET-4' },
- { 'Pacific/Apia', 'WSST-13WSDT,M9.5.0/3,M4.1.0/4' },
+ { 'Indian/Reunion', '<+04>-4' },
+ { 'Pacific/Apia', '<+13>-13<+14>,M9.5.0/3,M4.1.0/4' },
{ 'Pacific/Auckland', 'NZST-12NZDT,M9.5.0,M4.1.0/3' },
- { 'Pacific/Bougainville', 'BST-11' },
- { 'Pacific/Chatham', 'CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45' },
- { 'Pacific/Chuuk', 'CHUT-10' },
- { 'Pacific/Easter', 'EAST6EASST,M8.2.6/22,M5.2.6/22' },
- { 'Pacific/Efate', 'VUT-11' },
- { 'Pacific/Enderbury', 'PHOT-13' },
- { 'Pacific/Fakaofo', 'TKT-13' },
- { 'Pacific/Fiji', 'FJT-12FJST,M11.1.0,M1.3.0/3' },
- { 'Pacific/Funafuti', 'TVT-12' },
- { 'Pacific/Galapagos', 'GALT6' },
- { 'Pacific/Gambier', 'GAMT9' },
- { 'Pacific/Guadalcanal', 'SBT-11' },
+ { 'Pacific/Bougainville', '<+11>-11' },
+ { 'Pacific/Chatham', '<+1245>-12:45<+1345>,M9.5.0/2:45,M4.1.0/3:45' },
+ { 'Pacific/Chuuk', '<+10>-10' },
+ { 'Pacific/Easter', '<-06>6<-05>,M8.2.6/22,M5.2.6/22' },
+ { 'Pacific/Efate', '<+11>-11' },
+ { 'Pacific/Enderbury', '<+13>-13' },
+ { 'Pacific/Fakaofo', '<+13>-13' },
+ { 'Pacific/Fiji', '<+12>-12<+13>,M11.1.0,M1.3.0/3' },
+ { 'Pacific/Funafuti', '<+12>-12' },
+ { 'Pacific/Galapagos', '<-06>6' },
+ { 'Pacific/Gambier', '<-09>9' },
+ { 'Pacific/Guadalcanal', '<+11>-11' },
{ 'Pacific/Guam', 'ChST-10' },
{ 'Pacific/Honolulu', 'HST10' },
- { 'Pacific/Johnston', 'HST10' },
- { 'Pacific/Kiritimati', 'LINT-14' },
- { 'Pacific/Kosrae', 'KOST-11' },
- { 'Pacific/Kwajalein', 'MHT-12' },
- { 'Pacific/Majuro', 'MHT-12' },
- { 'Pacific/Marquesas', 'MART9:30' },
+ { 'Pacific/Kiritimati', '<+14>-14' },
+ { 'Pacific/Kosrae', '<+11>-11' },
+ { 'Pacific/Kwajalein', '<+12>-12' },
+ { 'Pacific/Majuro', '<+12>-12' },
+ { 'Pacific/Marquesas', '<-0930>9:30' },
{ 'Pacific/Midway', 'SST11' },
- { 'Pacific/Nauru', 'NRT-12' },
- { 'Pacific/Niue', 'NUT11' },
- { 'Pacific/Norfolk', 'NFT-11' },
- { 'Pacific/Noumea', 'NCT-11' },
+ { 'Pacific/Nauru', '<+12>-12' },
+ { 'Pacific/Niue', '<-11>11' },
+ { 'Pacific/Norfolk', '<+11>-11' },
+ { 'Pacific/Noumea', '<+11>-11' },
{ 'Pacific/Pago Pago', 'SST11' },
- { 'Pacific/Palau', 'PWT-9' },
- { 'Pacific/Pitcairn', 'PST8' },
- { 'Pacific/Pohnpei', 'PONT-11' },
- { 'Pacific/Port Moresby', 'PGT-10' },
- { 'Pacific/Rarotonga', 'CKT10' },
+ { 'Pacific/Palau', '<+09>-9' },
+ { 'Pacific/Pitcairn', '<-08>8' },
+ { 'Pacific/Pohnpei', '<+11>-11' },
+ { 'Pacific/Port Moresby', '<+10>-10' },
+ { 'Pacific/Rarotonga', '<-10>10' },
{ 'Pacific/Saipan', 'ChST-10' },
- { 'Pacific/Tahiti', 'TAHT10' },
- { 'Pacific/Tarawa', 'GILT-12' },
+ { 'Pacific/Tahiti', '<-10>10' },
+ { 'Pacific/Tarawa', '<+12>-12' },
{ 'Pacific/Tongatapu', '<+13>-13<+14>,M11.1.0,M1.3.0/3' },
- { 'Pacific/Wake', 'WAKT-12' },
- { 'Pacific/Wallis', 'WFT-12' },
+ { 'Pacific/Wake', '<+12>-12' },
+ { 'Pacific/Wallis', '<+12>-12' },
}
diff --git a/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua b/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua
index e5da7c6442..cf5afeb9d8 100644
--- a/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua
+++ b/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua
@@ -16,123 +16,30 @@ OFFSET = {
akst = -32400, -- AKST
akdt = -28800, -- AKDT
ast = -14400, -- AST
- brt = -10800, -- BRT
- art = -10800, -- ART
- pyt = -14400, -- PYT
- pyst = -10800, -- PYST
est = -18000, -- EST
cst = -21600, -- CST
cdt = -18000, -- CDT
- amt = -14400, -- AMT
- cot = -18000, -- COT
mst = -25200, -- MST
mdt = -21600, -- MDT
- vet = -14400, -- VET
- gft = -10800, -- GFT
pst = -28800, -- PST
pdt = -25200, -- PDT
- act = -18000, -- ACT
- wgt = -10800, -- WGT
- wgst = -7200, -- WGST
- ect = -18000, -- ECT
- gyt = -14400, -- GYT
- bot = -14400, -- BOT
- pet = -18000, -- PET
- pmst = -10800, -- PMST
- pmdt = -7200, -- PMDT
- uyt = -10800, -- UYT
- fnt = -7200, -- FNT
- srt = -10800, -- SRT
- clt = -14400, -- CLT
- clst = -10800, -- CLST
- egt = -3600, -- EGT
- egst = 0, -- EGST
nst = -12600, -- NST
ndt = -9000, -- NDT
- mist = 39600, -- MIST
nzst = 43200, -- NZST
nzdt = 46800, -- NZDT
- ict = 25200, -- ICT
- bnt = 28800, -- BNT
- chot = 28800, -- CHOT
- chost = 32400, -- CHOST
- bdt = 21600, -- BDT
- tlt = 32400, -- TLT
- gst = 14400, -- GST
hkt = 28800, -- HKT
- hovt = 25200, -- HOVT
- hovst = 28800, -- HOVST
wib = 25200, -- WIB
wit = 32400, -- WIT
ist = 7200, -- IST
idt = 10800, -- IDT
- aft = 16200, -- AFT
pkt = 18000, -- PKT
- npt = 20700, -- NPT
- myt = 28800, -- MYT
wita = 28800, -- WITA
- pht = 28800, -- PHT
kst = 30600, -- KST
- sgt = 28800, -- SGT
- irst = 12600, -- IRST
- irdt = 16200, -- IRDT
- btt = 21600, -- BTT
jst = 32400, -- JST
- ulat = 28800, -- ULAT
- ulast = 32400, -- ULAST
- xjt = 21600, -- XJT
- mmt = 23400, -- MMT
- azot = -3600, -- AZOT
- azost = 0, -- AZOST
- cvt = -3600, -- CVT
- fkst = -10800, -- FKST
acst = 34200, -- ACST
acdt = 37800, -- ACDT
aest = 36000, -- AEST
- acwst = 31500, -- ACWST
- lhst = 37800, -- LHST
- lhdt = 39600, -- LHDT
awst = 28800, -- AWST
msk = 10800, -- MSK
- iot = 21600, -- IOT
- cxt = 25200, -- CXT
- cct = 23400, -- CCT
- sct = 14400, -- SCT
- mvt = 18000, -- MVT
- mut = 14400, -- MUT
- ret = 14400, -- RET
- wsst = 46800, -- WSST
- wsdt = 50400, -- WSDT
- bst = 39600, -- BST
- chast = 45900, -- CHAST
- chadt = 49500, -- CHADT
- chut = 36000, -- CHUT
- east = -21600, -- EAST
- easst = -18000, -- EASST
- vut = 39600, -- VUT
- phot = 46800, -- PHOT
- tkt = 46800, -- TKT
- fjt = 43200, -- FJT
- fjst = 46800, -- FJST
- tvt = 43200, -- TVT
- galt = -21600, -- GALT
- gamt = -32400, -- GAMT
- sbt = 39600, -- SBT
- lint = 50400, -- LINT
- kost = 39600, -- KOST
- mht = 43200, -- MHT
- mart = -34200, -- MART
sst = -39600, -- SST
- nrt = 43200, -- NRT
- nut = -39600, -- NUT
- nft = 39600, -- NFT
- nct = 39600, -- NCT
- pwt = 32400, -- PWT
- pont = 39600, -- PONT
- pgt = 36000, -- PGT
- ckt = -36000, -- CKT
- taht = -36000, -- TAHT
- gilt = 43200, -- GILT
- wakt = 43200, -- WAKT
- wft = 43200, -- WFT
}
diff --git a/modules/luci-base/po/ca/base.po b/modules/luci-base/po/ca/base.po
index f72c2a634b..def4c10261 100644
--- a/modules/luci-base/po/ca/base.po
+++ b/modules/luci-base/po/ca/base.po
@@ -152,6 +152,11 @@ msgstr "Consultes concurrents <abbr title=\"màximes\">max.</abbr>"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr "<abbr title='Parella: %s / Grup: %s'>%s - %s</abbr>"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -170,9 +175,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "Suport AR"
-
msgid "ARP retry threshold"
msgstr "Llindar de reintent ARP"
@@ -414,9 +416,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "Estacions associades"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Controlador sense fils d'Atheros 802.11%s"
-
msgid "Auth Group"
msgstr ""
@@ -496,9 +495,6 @@ msgstr "Enrere al resum"
msgid "Back to scan results"
msgstr "Enrere als resultats de l'escaneig"
-msgid "Background Scan"
-msgstr "Escaneig de fons"
-
msgid "Backup / Flash Firmware"
msgstr "Còpia de seguretat / Recàrrega de programari"
@@ -662,9 +658,6 @@ msgstr "Ordre"
msgid "Common Configuration"
msgstr "Configuració comuna"
-msgid "Compression"
-msgstr "Compressió"
-
msgid "Configuration"
msgstr "Configuració"
@@ -882,9 +875,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Inhabilita el temporitzador HW-Beacon"
-
msgid "Disabled"
msgstr "Inhabilitat"
@@ -929,9 +919,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr "No enviïs les respostes de prova"
-
msgid "Domain required"
msgstr "Es requereix un domini"
@@ -1128,9 +1115,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Fast Frames"
-
msgid "File"
msgstr "Fitxer"
@@ -1166,6 +1150,9 @@ msgstr "Acaba"
msgid "Firewall"
msgstr "Tallafocs"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Ajusts de tallafocs"
@@ -1211,6 +1198,9 @@ msgstr "Força el TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Força el TKIP i el CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1610,6 +1600,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "Usuari i/o contrasenya invàlids! Si us plau prova-ho de nou."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1618,7 +1611,7 @@ msgstr ""
"Sembla que intentes actualitzar una imatge que no hi cap a la memòria flaix, "
"si us plau verifica el fitxer d'imatge!"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr "Es requereix JavaScript!"
msgid "Join Network"
@@ -1879,9 +1872,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Velocitat màxima"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1917,9 +1907,6 @@ msgstr "Ús de Memòria (%)"
msgid "Metric"
msgstr "Mètric"
-msgid "Minimum Rate"
-msgstr "Velocitat mínima"
-
msgid "Minimum hold time"
msgstr ""
@@ -1993,9 +1980,6 @@ msgstr "Baixa"
msgid "Move up"
msgstr "Puja"
-msgid "Multicast Rate"
-msgstr "Velocitat de difusió selectiva"
-
msgid "Multicast address"
msgstr "Adreça de difusió selectiva"
@@ -2008,6 +1992,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2201,8 +2188,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2239,9 +2231,6 @@ msgstr ""
msgid "Outbound:"
msgstr "Sortint:"
-msgid "Outdoor Channels"
-msgstr "Canals d'exteriors"
-
msgid "Output Interface"
msgstr ""
@@ -2421,6 +2410,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2609,9 +2604,6 @@ msgstr "Reconnectant la interfície"
msgid "References"
msgstr "Referències"
-msgid "Regulatory Domain"
-msgstr "Domini regulatori"
-
msgid "Relay"
msgstr "Relé"
@@ -2660,15 +2652,15 @@ msgstr "Alguns ISP ho requereixen, per exemple el Charter amb DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2813,9 +2805,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Clients separats"
-msgid "Separate WDS"
-msgstr "WDS separat"
-
msgid "Server Settings"
msgstr "Ajusts de servidor"
@@ -2839,6 +2828,11 @@ msgstr "Tipus de servei"
msgid "Services"
msgstr "Serveis"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Sincronització de hora"
@@ -2974,9 +2968,6 @@ msgstr "Leases estàtics"
msgid "Static Routes"
msgstr "Rutes estàtiques"
-msgid "Static WDS"
-msgstr "WDS estàtic"
-
msgid "Static address"
msgstr "Adreça estàtica"
@@ -3370,9 +3361,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Mode Turbo"
-
msgid "Tx-Power"
msgstr "Potència Tx"
@@ -3652,9 +3640,6 @@ msgstr "Escriure les peticions DNS rebudes al syslog"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Suport XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3666,9 +3651,9 @@ msgstr ""
"dispositiu pot resultar inaccessible!</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Has d'activar el Java Script al teu navegador o LuCI no funcionarà "
+"Has d'activar el JavaScript al teu navegador o LuCI no funcionarà "
"correctament."
msgid ""
@@ -3841,6 +3826,54 @@ msgstr "sí"
msgid "« Back"
msgstr "« Enrere"
+#~ msgid "AR Support"
+#~ msgstr "Suport AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Controlador sense fils d'Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "Escaneig de fons"
+
+#~ msgid "Compression"
+#~ msgstr "Compressió"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Inhabilita el temporitzador HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "No enviïs les respostes de prova"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Fast Frames"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Velocitat màxima"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Velocitat mínima"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Velocitat de difusió selectiva"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Canals d'exteriors"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Domini regulatori"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDS separat"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS estàtic"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Mode Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Suport XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Es crearà una xarxa addicional si deixes això sense marcar."
diff --git a/modules/luci-base/po/cs/base.po b/modules/luci-base/po/cs/base.po
index 3f6a4e10b9..b76b66ceeb 100644
--- a/modules/luci-base/po/cs/base.po
+++ b/modules/luci-base/po/cs/base.po
@@ -149,6 +149,11 @@ msgstr "Nejvyšší poÄet souběžných dotazů"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -167,9 +172,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "Podpora AR"
-
msgid "ARP retry threshold"
msgstr "ARP limit opakování"
@@ -414,9 +416,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "Připojení klienti"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s bezdrátový ovladaÄ"
-
msgid "Auth Group"
msgstr ""
@@ -495,9 +494,6 @@ msgstr "Zpět k přehledu"
msgid "Back to scan results"
msgstr "Zpět k výsledkům vyhledávání"
-msgid "Background Scan"
-msgstr "Vyhledávat na pozadí"
-
msgid "Backup / Flash Firmware"
msgstr "Zálohovat / nahrát firmware"
@@ -666,9 +662,6 @@ msgstr "Příkaz"
msgid "Common Configuration"
msgstr "SpoleÄná nastavení"
-msgid "Compression"
-msgstr "Komprese"
-
msgid "Configuration"
msgstr "Nastavení"
@@ -888,9 +881,6 @@ msgstr "Zakázat nastavení DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Zakázat HW-Beacon ÄasovaÄ"
-
msgid "Disabled"
msgstr "Zakázáno"
@@ -937,9 +927,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Nepřeposílat reverzní dotazy na místní sítě"
-msgid "Do not send probe responses"
-msgstr "Neodpovídat na vyhledávání"
-
msgid "Domain required"
msgstr "Vyžadována doména"
@@ -1140,9 +1127,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Rychlé rámce"
-
msgid "File"
msgstr "Soubor"
@@ -1178,6 +1162,9 @@ msgstr "DokonÄit"
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Nastavení firewallu"
@@ -1223,6 +1210,9 @@ msgstr "Vynutit TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Vynutit TKIP a CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1623,6 +1613,9 @@ msgstr "Uvedené VLAN ID je neplatné! Každé ID musí být jedineÄné"
msgid "Invalid username and/or password! Please try again."
msgstr "Špatné uživatelské jméno a/nebo heslo! Prosím zkuste to znovu."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1631,7 +1624,7 @@ msgstr ""
"Zdá se, že se pokoušíte zapsat obraz, který se nevejde do flash paměti. "
"Prosím ověřte soubor s obrazem!"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr "Vyžadován JavaScript!"
msgid "Join Network"
@@ -1901,9 +1894,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Nejvyšší míra"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Nejvyšší povolené množství aktivních DHCP zápůjÄek"
@@ -1939,9 +1929,6 @@ msgstr "Využití paměti (%)"
msgid "Metric"
msgstr "Metrika"
-msgid "Minimum Rate"
-msgstr "Nejnižší hodnota"
-
msgid "Minimum hold time"
msgstr "Minimální Äas zápůjÄky"
@@ -2015,9 +2002,6 @@ msgstr "Přesunout dolů"
msgid "Move up"
msgstr "Přesunout nahoru"
-msgid "Multicast Rate"
-msgstr "Hodnota vícesměrového vysílání"
-
msgid "Multicast address"
msgstr "Adresa vícesměrového vysílání"
@@ -2030,6 +2014,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2222,8 +2209,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2260,9 +2252,6 @@ msgstr "Ven"
msgid "Outbound:"
msgstr "Odchozí:"
-msgid "Outdoor Channels"
-msgstr "Venkovní kanály"
-
msgid "Output Interface"
msgstr ""
@@ -2444,6 +2433,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2647,9 +2642,6 @@ msgstr "Přepojuji rozhraní"
msgid "References"
msgstr "Reference"
-msgid "Regulatory Domain"
-msgstr "Doména regulátora"
-
msgid "Relay"
msgstr "Přenos"
@@ -2699,15 +2691,15 @@ msgstr "Vyžadováno u některých ISP, např. Charter s DocSIS 3"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2853,9 +2845,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Oddělovat klienty"
-msgid "Separate WDS"
-msgstr "Oddělovat WDS"
-
msgid "Server Settings"
msgstr "Nastavení serveru"
@@ -2879,6 +2868,11 @@ msgstr "Typ služby"
msgid "Services"
msgstr "Služby"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Nastavit synchronizaci Äasu"
@@ -3019,9 +3013,6 @@ msgstr "Statické zápůjÄky"
msgid "Static Routes"
msgstr "Statické trasy"
-msgid "Static WDS"
-msgstr "Statický WDS"
-
msgid "Static address"
msgstr "Statická adresa"
@@ -3436,9 +3427,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Turbo mód"
-
msgid "Tx-Power"
msgstr "Tx-Power"
@@ -3724,9 +3712,6 @@ msgstr "Zapisovat přijaté požadavky DNS do systemového logu"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Podpora XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3737,9 +3722,9 @@ msgstr ""
"\"network\", vaše zařízení se může stát nepřístupným!</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Aby LuCI fungoval správnÄ›, musíte mít v prohlížeÄi povolený Javascript."
+"Aby LuCI fungoval správnÄ›, musíte mít v prohlížeÄi povolený JavaScript."
msgid ""
"Your Internet Explorer is too old to display this page correctly. Please "
@@ -3910,6 +3895,54 @@ msgstr "ano"
msgid "« Back"
msgstr "« Zpět"
+#~ msgid "AR Support"
+#~ msgstr "Podpora AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s bezdrátový ovladaÄ"
+
+#~ msgid "Background Scan"
+#~ msgstr "Vyhledávat na pozadí"
+
+#~ msgid "Compression"
+#~ msgstr "Komprese"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Zakázat HW-Beacon ÄasovaÄ"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Neodpovídat na vyhledávání"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Rychlé rámce"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Nejvyšší míra"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Nejnižší hodnota"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Hodnota vícesměrového vysílání"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Venkovní kanály"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Doména regulátora"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Oddělovat WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "Statický WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo mód"
+
+#~ msgid "XR Support"
+#~ msgstr "Podpora XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Pokud není zaÅ¡krtnuto, bude vytvoÅ™ena dodateÄná síť."
diff --git a/modules/luci-base/po/de/base.po b/modules/luci-base/po/de/base.po
index ea2d7c917e..5418b78411 100644
--- a/modules/luci-base/po/de/base.po
+++ b/modules/luci-base/po/de/base.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-05-26 17:57+0200\n"
-"PO-Revision-Date: 2013-03-29 12:13+0200\n"
+"PO-Revision-Date: 2017-03-06 11:15+0200\n"
"Last-Translator: JoeSemler <josef.semler@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: de\n"
@@ -150,6 +150,11 @@ msgstr "<abbr title=\"maximal\">Max.</abbr> Anzahl gleichzeitiger Abfragen"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr "<abbr title='Paarweise: %s / Gruppe: %s'>%s - %s</abbr>"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -168,9 +173,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "AR-Unterstützung"
-
msgid "ARP retry threshold"
msgstr "Grenzwert für ARP-Auflösungsversuche"
@@ -274,9 +276,11 @@ msgid ""
"Allocate IP addresses sequentially, starting from the lowest available "
"address"
msgstr ""
+"IP-Adressen sequenziell vergeben, beginnend mit der kleinsten verfügbaren "
+"Adresse"
msgid "Allocate IP sequentially"
-msgstr ""
+msgstr "IPs sequenziell vergeben"
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr "Erlaube Anmeldung per Passwort"
@@ -413,9 +417,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "Assoziierte Clients"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s W-LAN Adapter"
-
msgid "Auth Group"
msgstr ""
@@ -494,9 +495,6 @@ msgstr "Zurück zur Übersicht"
msgid "Back to scan results"
msgstr "Zurück zu den Scan-Ergebnissen"
-msgid "Background Scan"
-msgstr "Hintergrundscan"
-
msgid "Backup / Flash Firmware"
msgstr "Backup / Firmware Update"
@@ -663,9 +661,6 @@ msgstr "Befehl"
msgid "Common Configuration"
msgstr "Allgemeine Konfiguration"
-msgid "Compression"
-msgstr "Kompression"
-
msgid "Configuration"
msgstr "Konfiguration"
@@ -883,9 +878,6 @@ msgstr "DNS-Verarbeitung deaktivieren"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Deaktiviere Hardware-Beacon Zeitgeber"
-
msgid "Disabled"
msgstr "Deaktiviert"
@@ -935,9 +927,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Keine Rückwärtsauflösungen für lokale Netzwerke weiterleiten"
-msgid "Do not send probe responses"
-msgstr "Scan-Anforderungen nicht beantworten"
-
msgid "Domain required"
msgstr "Anfragen nur mit Domain"
@@ -1136,9 +1125,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Schnelle Frames"
-
msgid "File"
msgstr "Datei"
@@ -1174,6 +1160,9 @@ msgstr "Fertigstellen"
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Firewall Einstellungen"
@@ -1221,6 +1210,9 @@ msgstr "Erzwinge TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Erzwinge TKIP und CCMP (AES)"
+msgid "Force link"
+msgstr "Erzwinge Verbindung"
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1623,6 +1615,9 @@ msgid "Invalid username and/or password! Please try again."
msgstr ""
"Ungültiger Benutzername oder ungültiges Passwort! Bitte erneut versuchen. "
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1631,8 +1626,8 @@ msgstr ""
"Das verwendete Image scheint zu groß für den internen Flash-Speicher zu "
"sein. Überprüfen Sie die Imagedatei!"
-msgid "Java Script required!"
-msgstr "Java-Script benötigt!"
+msgid "JavaScript required!"
+msgstr "JavaScript benötigt!"
msgid "Join Network"
msgstr "Netzwerk beitreten"
@@ -1904,9 +1899,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Höchstübertragungsrate"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Maximal zulässige Anzahl von aktiven DHCP-Leases"
@@ -1942,9 +1934,6 @@ msgstr "Speichernutzung (%)"
msgid "Metric"
msgstr "Metrik"
-msgid "Minimum Rate"
-msgstr "Mindestübertragungsrate"
-
msgid "Minimum hold time"
msgstr "Minimalzeit zum Halten der Verbindung"
@@ -2018,9 +2007,6 @@ msgstr "Nach unten schieben"
msgid "Move up"
msgstr "Nach oben schieben"
-msgid "Multicast Rate"
-msgstr "Multicastrate"
-
msgid "Multicast address"
msgstr "Multicast-Adresse"
@@ -2033,6 +2019,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2227,8 +2216,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2265,9 +2259,6 @@ msgstr "Aus"
msgid "Outbound:"
msgstr "Ausgehend:"
-msgid "Outdoor Channels"
-msgstr "Funkkanal für den Ausseneinsatz"
-
msgid "Output Interface"
msgstr ""
@@ -2449,6 +2440,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2653,9 +2650,6 @@ msgstr "Verbinde Schnittstelle neu"
msgid "References"
msgstr "Verweise"
-msgid "Regulatory Domain"
-msgstr "Geltungsbereich (Regulatory Domain)"
-
msgid "Relay"
msgstr "Relay"
@@ -2705,15 +2699,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2860,9 +2854,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Clients isolieren"
-msgid "Separate WDS"
-msgstr "Separates WDS"
-
msgid "Server Settings"
msgstr "Servereinstellungen"
@@ -2886,6 +2877,14 @@ msgstr "Service-Typ"
msgid "Services"
msgstr "Dienste"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+"Schnittstelleneigenschaften werden unabhängig vom Link gesetzt (ist die "
+"Option ausgewählt, so werden die Hotplug-Skripte bei Änderung nicht "
+"aufgerufen)"
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Zeitsynchronisierung einrichten"
@@ -3029,9 +3028,6 @@ msgstr "Statische Einträge"
msgid "Static Routes"
msgstr "Statische Routen"
-msgid "Static WDS"
-msgstr "Statisches WDS"
-
msgid "Static address"
msgstr "Statische Adresse"
@@ -3058,10 +3054,11 @@ msgid "Submit"
msgstr "Absenden"
msgid "Suppress logging"
-msgstr ""
+msgstr "Logeinträge unterdrücken"
msgid "Suppress logging of the routine operation of these protocols"
msgstr ""
+"Logeinträge für erfolgreiche Operationen dieser Protokolle unterdrücken"
msgid "Swap"
msgstr ""
@@ -3459,9 +3456,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Turbo Modus"
-
msgid "Tx-Power"
msgstr "Sendestärke"
@@ -3748,9 +3742,6 @@ msgstr "Empfangene DNS-Anfragen in das Systemprotokoll schreiben"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "XR-Unterstützung"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3762,9 +3753,9 @@ msgstr ""
"werden könnte das Gerät unerreichbar werden!</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Im Browser muss Java-Script aktiviert sein oder LuCI wird nicht richtig "
+"Im Browser muss JavaScript aktiviert sein oder LuCI wird nicht richtig "
"funktionieren."
msgid ""
@@ -3934,6 +3925,54 @@ msgstr "ja"
msgid "« Back"
msgstr "« Zurück"
+#~ msgid "AR Support"
+#~ msgstr "AR-Unterstützung"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s W-LAN Adapter"
+
+#~ msgid "Background Scan"
+#~ msgstr "Hintergrundscan"
+
+#~ msgid "Compression"
+#~ msgstr "Kompression"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Deaktiviere Hardware-Beacon Zeitgeber"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Scan-Anforderungen nicht beantworten"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Schnelle Frames"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Höchstübertragungsrate"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Mindestübertragungsrate"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicastrate"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Funkkanal für den Ausseneinsatz"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Geltungsbereich (Regulatory Domain)"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Separates WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "Statisches WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo Modus"
+
+#~ msgid "XR Support"
+#~ msgstr "XR-Unterstützung"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr ""
#~ "Erzeugt ein zusätzliches Netzwerk wenn diese Option nicht ausgewählt ist"
diff --git a/modules/luci-base/po/el/base.po b/modules/luci-base/po/el/base.po
index 8b11a99f08..4a4f63017d 100644
--- a/modules/luci-base/po/el/base.po
+++ b/modules/luci-base/po/el/base.po
@@ -152,6 +152,11 @@ msgstr "<abbr title=\"μέγιστο\">Μεγ.</abbr> πλήθος ταυτόχÏ
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr ""
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -170,9 +175,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "ΥποστήÏιξη AR"
-
msgid "ARP retry threshold"
msgstr "ÎŒÏιο επαναδοκιμών ARP"
@@ -421,9 +423,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "Συνδεδεμένοι Σταθμοί"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
msgid "Auth Group"
msgstr ""
@@ -502,9 +501,6 @@ msgstr "Πίσω Ï€Ïος επισκόπηση"
msgid "Back to scan results"
msgstr "Πίσω στα αποτελέσματα σάÏωσης"
-msgid "Background Scan"
-msgstr "ΣάÏωση ΠαÏασκηνίου"
-
msgid "Backup / Flash Firmware"
msgstr "ΑντίγÏαφο ασφαλείας / ΕγγÏαφή FLASH Υλικολογισμικό"
@@ -675,9 +671,6 @@ msgstr "Εντολή"
msgid "Common Configuration"
msgstr "Κοινή ΠαÏαμετÏοποίηση"
-msgid "Compression"
-msgstr "Συμπίεση"
-
msgid "Configuration"
msgstr "ΠαÏαμετÏοποίηση"
@@ -897,9 +890,6 @@ msgstr "ΑπενεÏγοποίηση Ïυθμίσεων DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "ΑπενεÏγοποίηση χÏονιστή HW-Beacon"
-
msgid "Disabled"
msgstr "ΑπενεÏγοποιημένο"
@@ -948,9 +938,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr "Îα μην στέλνονται απαντήσεις σε probes"
-
msgid "Domain required"
msgstr "Απαίτηση για όνομα τομέα"
@@ -1153,9 +1140,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "ΓÏήγοÏα Πλαίσια"
-
msgid "File"
msgstr "ΑÏχείο"
@@ -1191,6 +1175,9 @@ msgstr "Τέλος"
msgid "Firewall"
msgstr "Τείχος ΠÏοστασίας"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Ρυθμίσεις Τείχους ΠÏοστασίας"
@@ -1237,6 +1224,9 @@ msgstr "Επιβολή TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Επιβολή TKIP και CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1638,6 +1628,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "ΆκυÏο όνομα χÏήστη και/ή κωδικός Ï€Ïόσβασης! ΠαÏακαλώ Ï€Ïοσπαθήστε ξανά."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1646,8 +1639,8 @@ msgstr ""
"Φαίνεται πως Ï€Ïοσπαθείτε να φλασάÏετε μια εικόνα που δεν χωÏάει στην μνήμη "
"flash, παÏακαλώ επιβεβαιώστε το αÏχείο εικόνας!"
-msgid "Java Script required!"
-msgstr "Απαιτείται Javascript!"
+msgid "JavaScript required!"
+msgstr "Απαιτείται JavaScript!"
msgid "Join Network"
msgstr ""
@@ -1907,9 +1900,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Μέγιστος Ρυθμός"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Μέγιστος επιτÏεπόμενος αÏιθμός ενεÏγών DHCP leases"
@@ -1946,9 +1936,6 @@ msgstr "ΧÏήση Μνήμης (%)"
msgid "Metric"
msgstr "ΜέτÏο"
-msgid "Minimum Rate"
-msgstr "Ελάχιστος Ρυθμός"
-
msgid "Minimum hold time"
msgstr "Ελάχιστος χÏόνος κÏάτησης"
@@ -2023,9 +2010,6 @@ msgstr "Μετακίνηση κάτω"
msgid "Move up"
msgstr "Μετακίνηση πάνω"
-msgid "Multicast Rate"
-msgstr "Ρυθμός Multicast"
-
msgid "Multicast address"
msgstr "ΔιεÏθυνση Multicast"
@@ -2038,6 +2022,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2231,8 +2218,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2269,9 +2261,6 @@ msgstr "Έξοδος"
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr "ΕξωτεÏικά Κανάλια"
-
msgid "Output Interface"
msgstr ""
@@ -2451,6 +2440,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2640,9 +2635,6 @@ msgstr "ΕπανασÏνδεση της διεπαφής"
msgid "References"
msgstr "ΑναφοÏές"
-msgid "Regulatory Domain"
-msgstr "Ρυθμιστική ΠεÏιοχή"
-
msgid "Relay"
msgstr ""
@@ -2691,15 +2683,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2846,9 +2838,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Απομόνωση Πελατών"
-msgid "Separate WDS"
-msgstr "ΞεχωÏιστά WDS"
-
msgid "Server Settings"
msgstr "Ρυθμίσεις ΕξυπηÏετητή"
@@ -2872,6 +2861,11 @@ msgstr "Είδος ΥπηÏεσίας"
msgid "Services"
msgstr "ΥπηÏεσίες"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -3008,9 +3002,6 @@ msgstr "Στατικά Leases"
msgid "Static Routes"
msgstr "Στατικές ΔιαδÏομές"
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr "Στατική διεÏθυνση"
@@ -3395,9 +3386,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "ΛειτουÏγία Turbo"
-
msgid "Tx-Power"
msgstr "ΙσχÏÏ‚ Εκπομπής"
@@ -3675,9 +3663,6 @@ msgstr "ΚαταγÏαφή των ληφθέντων DNS αιτήσεων στο
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "ΥποστήÏιξη XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3689,7 +3674,7 @@ msgstr ""
"όπως το \"network\", η συσκευή σας μποÏεί να καταστεί μη-Ï€Ïοσβάσιμη!</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
@@ -3863,6 +3848,48 @@ msgstr "ναι"
msgid "« Back"
msgstr "« Πίσω"
+#~ msgid "AR Support"
+#~ msgstr "ΥποστήÏιξη AR"
+
+#~ msgid "Background Scan"
+#~ msgstr "ΣάÏωση ΠαÏασκηνίου"
+
+#~ msgid "Compression"
+#~ msgstr "Συμπίεση"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "ΑπενεÏγοποίηση χÏονιστή HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Îα μην στέλνονται απαντήσεις σε probes"
+
+#~ msgid "Fast Frames"
+#~ msgstr "ΓÏήγοÏα Πλαίσια"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Μέγιστος Ρυθμός"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Ελάχιστος Ρυθμός"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Ρυθμός Multicast"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "ΕξωτεÏικά Κανάλια"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Ρυθμιστική ΠεÏιοχή"
+
+#~ msgid "Separate WDS"
+#~ msgstr "ΞεχωÏιστά WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "ΛειτουÏγία Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "ΥποστήÏιξη XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Ένα επιπλέον δίκτυο θα δημιουÏγηθεί εάν αυτό αφεθεί κενό"
diff --git a/modules/luci-base/po/en/base.po b/modules/luci-base/po/en/base.po
index e11c0faac9..e2c8401509 100644
--- a/modules/luci-base/po/en/base.po
+++ b/modules/luci-base/po/en/base.po
@@ -152,6 +152,11 @@ msgstr "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr ""
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -170,9 +175,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "AR Support"
-
msgid "ARP retry threshold"
msgstr "ARP retry threshold"
@@ -412,9 +414,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "Associated Stations"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
msgid "Auth Group"
msgstr ""
@@ -493,9 +492,6 @@ msgstr "Back to overview"
msgid "Back to scan results"
msgstr "Back to scan results"
-msgid "Background Scan"
-msgstr "Background Scan"
-
msgid "Backup / Flash Firmware"
msgstr "Backup / Flash Firmware"
@@ -662,9 +658,6 @@ msgstr "Command"
msgid "Common Configuration"
msgstr "Common Configuration"
-msgid "Compression"
-msgstr "Compression"
-
msgid "Configuration"
msgstr "Configuration"
@@ -883,9 +876,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Disable HW-Beacon timer"
-
msgid "Disabled"
msgstr "Disabled"
@@ -930,9 +920,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr "Do not send probe responses"
-
msgid "Domain required"
msgstr "Domain required"
@@ -1129,9 +1116,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Fast Frames"
-
msgid "File"
msgstr ""
@@ -1167,6 +1151,9 @@ msgstr ""
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Firewall Settings"
@@ -1212,6 +1199,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1607,6 +1597,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "Invalid username and/or password! Please try again."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1615,7 +1608,7 @@ msgstr ""
"It appears that you try to flash an image that does not fit into the flash "
"memory, please verify the image file!"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
msgid "Join Network"
@@ -1876,9 +1869,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Maximum Rate"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1914,9 +1904,6 @@ msgstr "Memory usage (%)"
msgid "Metric"
msgstr "Metric"
-msgid "Minimum Rate"
-msgstr "Minimum Rate"
-
msgid "Minimum hold time"
msgstr "Minimum hold time"
@@ -1990,9 +1977,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr "Multicast Rate"
-
msgid "Multicast address"
msgstr ""
@@ -2005,6 +1989,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2198,8 +2185,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2236,9 +2228,6 @@ msgstr "Out"
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr "Outdoor Channels"
-
msgid "Output Interface"
msgstr ""
@@ -2418,6 +2407,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2606,9 +2601,6 @@ msgstr ""
msgid "References"
msgstr "References"
-msgid "Regulatory Domain"
-msgstr "Regulatory Domain"
-
msgid "Relay"
msgstr ""
@@ -2657,15 +2649,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2810,9 +2802,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Separate Clients"
-msgid "Separate WDS"
-msgstr "Separate WDS"
-
msgid "Server Settings"
msgstr ""
@@ -2836,6 +2825,11 @@ msgstr ""
msgid "Services"
msgstr "Services"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2970,9 +2964,6 @@ msgstr "Static Leases"
msgid "Static Routes"
msgstr "Static Routes"
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3352,9 +3343,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Turbo Mode"
-
msgid "Tx-Power"
msgstr ""
@@ -3634,9 +3622,6 @@ msgstr ""
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "XR Support"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3647,7 +3632,7 @@ msgstr ""
"scripts like \"network\", your device might become inaccessible!</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
@@ -3819,6 +3804,48 @@ msgstr ""
msgid "« Back"
msgstr "« Back"
+#~ msgid "AR Support"
+#~ msgstr "AR Support"
+
+#~ msgid "Background Scan"
+#~ msgstr "Background Scan"
+
+#~ msgid "Compression"
+#~ msgstr "Compression"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Disable HW-Beacon timer"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Do not send probe responses"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Fast Frames"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Maximum Rate"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Minimum Rate"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicast Rate"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Outdoor Channels"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Regulatory Domain"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Separate WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo Mode"
+
+#~ msgid "XR Support"
+#~ msgstr "XR Support"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "An additional network will be created if you leave this unchecked."
diff --git a/modules/luci-base/po/es/base.po b/modules/luci-base/po/es/base.po
index bfc0305a2e..9d39621de0 100644
--- a/modules/luci-base/po/es/base.po
+++ b/modules/luci-base/po/es/base.po
@@ -154,6 +154,11 @@ msgstr "Máximo número de consultas concurrentes"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr "<abbr title='Pairwise: %s / Grupo: %s'>%s - %s</abbr>"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -172,9 +177,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "Soporte a AR"
-
msgid "ARP retry threshold"
msgstr "Umbral de reintento ARP"
@@ -418,9 +420,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "Estaciones asociadas"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Controlador inalámbrico 802.11%s Atheros"
-
msgid "Auth Group"
msgstr ""
@@ -499,9 +498,6 @@ msgstr "Volver al resumen"
msgid "Back to scan results"
msgstr "Volver a resultados de la exploración"
-msgid "Background Scan"
-msgstr "Exploración en segundo plano"
-
msgid "Backup / Flash Firmware"
msgstr "Copia de seguridad / Grabar firmware"
@@ -671,9 +667,6 @@ msgstr "Comando"
msgid "Common Configuration"
msgstr "Configuración común"
-msgid "Compression"
-msgstr "Compresión"
-
msgid "Configuration"
msgstr "Configuración"
@@ -894,9 +887,6 @@ msgstr "Desactivar configuración de DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Desactivar el temporizador de baliza hardware"
-
msgid "Disabled"
msgstr "Desactivar"
@@ -943,9 +933,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "No retransmitir búsquedas inversas para redes locales"
-msgid "Do not send probe responses"
-msgstr "No enviar respuestas de prueba"
-
msgid "Domain required"
msgstr "Dominio requerido"
@@ -1147,9 +1134,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Tramas rápidas"
-
msgid "File"
msgstr "Fichero"
@@ -1185,6 +1169,9 @@ msgstr "Terminar"
msgid "Firewall"
msgstr "Cortafuegos"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Configuración del cortafuegos"
@@ -1230,6 +1217,9 @@ msgstr "Forzar TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Forzar TKIP y CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1637,6 +1627,9 @@ msgid "Invalid username and/or password! Please try again."
msgstr ""
"¡Nombre de usuario o contraseña no válidos!. Pruebe de nuevo, por favor."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1645,7 +1638,7 @@ msgstr ""
"Parece que está intentando grabar una imagen de firmware mayor que la "
"memoria flash de su equipo. ¡Por favor, verifique el archivo!"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr "¡Se necesita JavaScript!"
msgid "Join Network"
@@ -1915,9 +1908,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Ratio Máximo"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Número máximo de cesiones DHCP activas"
@@ -1953,9 +1943,6 @@ msgstr "Uso de memoria (%)"
msgid "Metric"
msgstr "Métrica"
-msgid "Minimum Rate"
-msgstr "Ratio mínimo"
-
msgid "Minimum hold time"
msgstr "Pausa mínima de espera"
@@ -2029,9 +2016,6 @@ msgstr "Bajar"
msgid "Move up"
msgstr "Subir"
-msgid "Multicast Rate"
-msgstr "Ratio multicast"
-
msgid "Multicast address"
msgstr "Dirección multicast"
@@ -2044,6 +2028,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2236,8 +2223,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2274,9 +2266,6 @@ msgstr "Salida"
msgid "Outbound:"
msgstr "Saliente:"
-msgid "Outdoor Channels"
-msgstr "Canales al aire libre"
-
msgid "Output Interface"
msgstr ""
@@ -2458,6 +2447,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2660,9 +2655,6 @@ msgstr "Reconectando la interfaz"
msgid "References"
msgstr "Referencias"
-msgid "Regulatory Domain"
-msgstr "Dominio Regulador"
-
msgid "Relay"
msgstr "Relé"
@@ -2711,15 +2703,15 @@ msgstr "Necesario para ciertos ISPs, por ejemplo Charter con DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2866,9 +2858,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Aislar clientes"
-msgid "Separate WDS"
-msgstr "WDS aislado"
-
msgid "Server Settings"
msgstr "Configuración del servidor"
@@ -2892,6 +2881,11 @@ msgstr "Tipo de servicio"
msgid "Services"
msgstr "Servicios"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Sincronización horaria"
@@ -3035,9 +3029,6 @@ msgstr "Cesiones estáticas"
msgid "Static Routes"
msgstr "Rutas estáticas"
-msgid "Static WDS"
-msgstr "WDS estático"
-
msgid "Static address"
msgstr "Dirección estática"
@@ -3461,9 +3452,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Modo Turbo"
-
msgid "Tx-Power"
msgstr "Potencia-TX"
@@ -3750,9 +3738,6 @@ msgstr "Escribir las peticiones de DNS recibidas en el registro del sistema"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Soporte de XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3764,9 +3749,9 @@ msgstr ""
"inaccesible!.</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Debe activar Javascript en su navegador o LuCI no funcionará correctamente."
+"Debe activar JavaScript en su navegador o LuCI no funcionará correctamente."
msgid ""
"Your Internet Explorer is too old to display this page correctly. Please "
@@ -3938,6 +3923,54 @@ msgstr "sí"
msgid "« Back"
msgstr "« Volver"
+#~ msgid "AR Support"
+#~ msgstr "Soporte a AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Controlador inalámbrico 802.11%s Atheros"
+
+#~ msgid "Background Scan"
+#~ msgstr "Exploración en segundo plano"
+
+#~ msgid "Compression"
+#~ msgstr "Compresión"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Desactivar el temporizador de baliza hardware"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "No enviar respuestas de prueba"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Tramas rápidas"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Ratio Máximo"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Ratio mínimo"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Ratio multicast"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Canales al aire libre"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Dominio Regulador"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDS aislado"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS estático"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Modo Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Soporte de XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Se creará una red adicional si deja esto desmarcado."
diff --git a/modules/luci-base/po/fr/base.po b/modules/luci-base/po/fr/base.po
index 8e610fb864..774559334c 100644
--- a/modules/luci-base/po/fr/base.po
+++ b/modules/luci-base/po/fr/base.po
@@ -153,6 +153,11 @@ msgstr "Maximum de requêtes concurrentes"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -171,9 +176,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "Gestion du mode AR"
-
msgid "ARP retry threshold"
msgstr "Niveau de ré-essai ARP"
@@ -424,9 +426,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "Équipements associés"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Contrôleur sans fil Atheros 802.11%s "
-
msgid "Auth Group"
msgstr ""
@@ -505,9 +504,6 @@ msgstr "Retour à la vue générale"
msgid "Back to scan results"
msgstr "Retour aux résultats de la recherche"
-msgid "Background Scan"
-msgstr "Recherche en arrière-plan"
-
msgid "Backup / Flash Firmware"
msgstr "Sauvegarde / Mise à jour du micrologiciel"
@@ -678,9 +674,6 @@ msgstr "Commande"
msgid "Common Configuration"
msgstr "Configuration commune"
-msgid "Compression"
-msgstr "Compression"
-
msgid "Configuration"
msgstr "Configuration"
@@ -901,9 +894,6 @@ msgstr "Désactiver la configuration DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Désactiver l'émission périodique de balises wifi (« HW-Beacon »)"
-
msgid "Disabled"
msgstr "Désactivé"
@@ -953,9 +943,6 @@ msgid "Do not forward reverse lookups for local networks"
msgstr ""
"Ne pas transmettre les requêtes de recherche inverse pour les réseaux locaux"
-msgid "Do not send probe responses"
-msgstr "Ne pas envoyer de réponses de test"
-
msgid "Domain required"
msgstr "Domaine nécessaire"
@@ -1159,9 +1146,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Trames rapides"
-
msgid "File"
msgstr "Fichier"
@@ -1197,6 +1181,9 @@ msgstr "Terminer"
msgid "Firewall"
msgstr "Pare-feu"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Paramètres du pare-feu"
@@ -1242,6 +1229,9 @@ msgstr "Forcer TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Forcer TKIP et CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1647,6 +1637,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "Nom d'utilisateur et/ou mot de passe invalides ! Réessayez !"
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1656,7 +1649,7 @@ msgstr ""
"tient pas dans sa mémoire flash, vérifiez s'il vous plait votre fichier-"
"image !"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr "Nécessite un Script Java !"
msgid "Join Network"
@@ -1929,9 +1922,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Débit maximum"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Nombre maximum de baux DHCP actifs"
@@ -1967,9 +1957,6 @@ msgstr "Utilisation Mémoire (%)"
msgid "Metric"
msgstr "Metrique"
-msgid "Minimum Rate"
-msgstr "Débit minimum"
-
msgid "Minimum hold time"
msgstr "Temps de maintien mimimum"
@@ -2043,9 +2030,6 @@ msgstr "Descendre"
msgid "Move up"
msgstr "Monter"
-msgid "Multicast Rate"
-msgstr "Débit multidiffusion"
-
msgid "Multicast address"
msgstr "Adresse multidiffusion"
@@ -2058,6 +2042,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2249,8 +2236,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2287,9 +2279,6 @@ msgstr "Sortie"
msgid "Outbound:"
msgstr "Extérieur :"
-msgid "Outdoor Channels"
-msgstr "Canaux en extérieur"
-
msgid "Output Interface"
msgstr ""
@@ -2471,6 +2460,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2673,9 +2668,6 @@ msgstr "Reconnecte cet interface"
msgid "References"
msgstr "Références"
-msgid "Regulatory Domain"
-msgstr "Domaine de certification"
-
msgid "Relay"
msgstr "Relais"
@@ -2724,15 +2716,15 @@ msgstr "Nécessaire avec certains FAIs, par ex. : Charter avec DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2880,9 +2872,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Isoler les clients"
-msgid "Separate WDS"
-msgstr "WDS séparé"
-
msgid "Server Settings"
msgstr "Paramètres du serveur"
@@ -2906,6 +2895,11 @@ msgstr "Type du service"
msgid "Services"
msgstr "Services"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Configurer la synchronisation de l'heure"
@@ -3047,9 +3041,6 @@ msgstr "Baux Statiques"
msgid "Static Routes"
msgstr "Routes statiques"
-msgid "Static WDS"
-msgstr "WDS statique"
-
msgid "Static address"
msgstr "Adresse statique"
@@ -3479,9 +3470,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Mode Turbo"
-
msgid "Tx-Power"
msgstr "Puissance d'émission"
@@ -3769,9 +3757,6 @@ msgstr "Écrire les requêtes DNS reçues dans syslog"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Gestion du mode XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3783,10 +3768,10 @@ msgstr ""
"\", votre équipement pourrait ne plus être accessible&#160;!</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Vous devez activer Java Script dans votre navigateur pour que LuCI "
-"fonctionne correctement."
+"Vous devez activer JavaScript dans votre navigateur pour que LuCI fonctionne "
+"correctement."
msgid ""
"Your Internet Explorer is too old to display this page correctly. Please "
@@ -3956,6 +3941,54 @@ msgstr "oui"
msgid "« Back"
msgstr "« Retour"
+#~ msgid "AR Support"
+#~ msgstr "Gestion du mode AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Contrôleur sans fil Atheros 802.11%s "
+
+#~ msgid "Background Scan"
+#~ msgstr "Recherche en arrière-plan"
+
+#~ msgid "Compression"
+#~ msgstr "Compression"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Désactiver l'émission périodique de balises wifi (« HW-Beacon »)"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Ne pas envoyer de réponses de test"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Trames rapides"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Débit maximum"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Débit minimum"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Débit multidiffusion"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Canaux en extérieur"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Domaine de certification"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDS séparé"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS statique"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Mode Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Gestion du mode XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Un réseau supplémentaire sera créé si vous laissé ceci décoché."
diff --git a/modules/luci-base/po/he/base.po b/modules/luci-base/po/he/base.po
index 70a1238e53..4b8eb8161c 100644
--- a/modules/luci-base/po/he/base.po
+++ b/modules/luci-base/po/he/base.po
@@ -143,6 +143,11 @@ msgstr ""
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr ""
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -161,9 +166,6 @@ msgstr ""
msgid "APN"
msgstr ""
-msgid "AR Support"
-msgstr "תמיכת AR"
-
#, fuzzy
msgid "ARP retry threshold"
msgstr "סף נסיונות של ARP"
@@ -413,9 +415,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "תחנות קשורות"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "שלט ×לחוטי Atheros 802.11%s"
-
msgid "Auth Group"
msgstr ""
@@ -494,9 +493,6 @@ msgstr "חזרה לסקירה"
msgid "Back to scan results"
msgstr "חזרה לתוצ×ות סריקה"
-msgid "Background Scan"
-msgstr "סריקת רקע"
-
msgid "Backup / Flash Firmware"
msgstr "גיבוי / קושחת פל×ש"
@@ -655,9 +651,6 @@ msgstr "פקודה"
msgid "Common Configuration"
msgstr "הגדרות נפוצות"
-msgid "Compression"
-msgstr "דחיסה"
-
msgid "Configuration"
msgstr "הגדרות"
@@ -875,9 +868,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
msgid "Disabled"
msgstr ""
@@ -918,9 +908,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr ""
-
msgid "Domain required"
msgstr ""
@@ -1114,9 +1101,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr ""
-
msgid "File"
msgstr ""
@@ -1152,6 +1136,9 @@ msgstr ""
msgid "Firewall"
msgstr ""
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr ""
@@ -1197,6 +1184,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1585,12 +1575,15 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "×©× ×ž×©×ª×ž×© ו/×ו סיסמה שגויי×! ×× × × ×¡×” שנית."
+msgid "Isolate Clients"
+msgstr ""
+
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
msgstr ""
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
msgid "Join Network"
@@ -1851,9 +1844,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr ""
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1889,9 +1879,6 @@ msgstr ""
msgid "Metric"
msgstr ""
-msgid "Minimum Rate"
-msgstr ""
-
msgid "Minimum hold time"
msgstr ""
@@ -1963,9 +1950,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr ""
-
msgid "Multicast address"
msgstr ""
@@ -1978,6 +1962,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2165,8 +2152,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2203,9 +2195,6 @@ msgstr ""
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr ""
-
msgid "Output Interface"
msgstr ""
@@ -2385,6 +2374,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2574,9 +2569,6 @@ msgstr ""
msgid "References"
msgstr ""
-msgid "Regulatory Domain"
-msgstr ""
-
msgid "Relay"
msgstr ""
@@ -2625,15 +2617,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2776,9 +2768,6 @@ msgstr ""
msgid "Separate Clients"
msgstr ""
-msgid "Separate WDS"
-msgstr ""
-
msgid "Server Settings"
msgstr ""
@@ -2802,6 +2791,11 @@ msgstr ""
msgid "Services"
msgstr "שירותי×"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "סנכרון זמן"
@@ -2939,9 +2933,6 @@ msgstr "הקצ×ות סטטיות"
msgid "Static Routes"
msgstr "× ×™×ª×•×‘×™× ×¡×˜×˜×™×™×"
-msgid "Static WDS"
-msgstr "WDS סטטי"
-
msgid "Static address"
msgstr "כתובת סטטית"
@@ -3310,9 +3301,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr ""
-
msgid "Tx-Power"
msgstr "עוצמת שידור"
@@ -3590,9 +3578,6 @@ msgstr ""
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr ""
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3600,8 +3585,8 @@ msgid ""
msgstr ""
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
-msgstr "×תה חייב להפעיל ×ת Java Script בדפדפן שלך; ×חרת, LuCI ×œ× ×™×¤×¢×œ כר×וי."
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr "×תה חייב להפעיל ×ת JavaScript בדפדפן שלך; ×חרת, LuCI ×œ× ×™×¤×¢×œ כר×וי."
msgid ""
"Your Internet Explorer is too old to display this page correctly. Please "
@@ -3770,6 +3755,21 @@ msgstr "כן"
msgid "« Back"
msgstr "<< ×חורה"
+#~ msgid "AR Support"
+#~ msgstr "תמיכת AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "שלט ×לחוטי Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "סריקת רקע"
+
+#~ msgid "Compression"
+#~ msgstr "דחיסה"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS סטטי"
+
#, fuzzy
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "רשת נוספת תווצר ×× ×ª×©×יר ×ת ×–×” ×œ× ×ž×¡×•×ž×Ÿ"
diff --git a/modules/luci-base/po/hu/base.po b/modules/luci-base/po/hu/base.po
index 700efd964d..4d855e6c97 100644
--- a/modules/luci-base/po/hu/base.po
+++ b/modules/luci-base/po/hu/base.po
@@ -150,6 +150,11 @@ msgstr "<abbr title=\"maximal\">Max.</abbr> párhuzamos lekérdezés"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -168,9 +173,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "AR Támogatás"
-
msgid "ARP retry threshold"
msgstr "ARP újrapróbálkozási küszöbérték"
@@ -417,9 +419,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "Kapcsolódó kliensek"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s vezeték-nélküli vezérlő"
-
msgid "Auth Group"
msgstr ""
@@ -498,9 +497,6 @@ msgstr "Vissza az áttekintéshez"
msgid "Back to scan results"
msgstr "Vissza a felderítési eredményekhez"
-msgid "Background Scan"
-msgstr "Felderítés a háttérben"
-
msgid "Backup / Flash Firmware"
msgstr "Mentés / Firmware frissítés"
@@ -673,9 +669,6 @@ msgstr "Parancs"
msgid "Common Configuration"
msgstr "Ãlatános beállítás"
-msgid "Compression"
-msgstr "Tömörítés"
-
msgid "Configuration"
msgstr "Beállítás"
@@ -895,9 +888,6 @@ msgstr "DNS beállítás letiltása"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Hardveres beacon időzítő letiltása"
-
msgid "Disabled"
msgstr "Letiltva"
@@ -944,9 +934,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Ne továbbítson fordított keresési kéréseket a helyi hálózathoz"
-msgid "Do not send probe responses"
-msgstr "Ne válaszoljon a szondázásra"
-
msgid "Domain required"
msgstr "Tartomány szükséges"
@@ -1148,9 +1135,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Gyors keretek"
-
msgid "File"
msgstr "Fájl"
@@ -1186,6 +1170,9 @@ msgstr "Befejezés"
msgid "Firewall"
msgstr "Tűzfal"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Tűzfal Beállítások"
@@ -1233,6 +1220,9 @@ msgstr "TKIP kényszerítése"
msgid "Force TKIP and CCMP (AES)"
msgstr "TKIP és CCMP (AES) kényszerítése"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1637,6 +1627,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "Érvénytelen felhasználói név és/vagy jelszó! Kérem próbálja újra!"
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1645,8 +1638,8 @@ msgstr ""
"Úgy tűnik, hogy a flash-elendő kép-file nem fér el a Flash-memóriába. Kérem "
"ellenőrizze a kép fájlt!"
-msgid "Java Script required!"
-msgstr "Javascript szükséges!"
+msgid "JavaScript required!"
+msgstr "JavaScript szükséges!"
msgid "Join Network"
msgstr "Csatlakozás a hálózathoz"
@@ -1918,9 +1911,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Maximális sebesség"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Aktív DHCP bérletek maximális száma"
@@ -1956,9 +1946,6 @@ msgstr "Memória használat (%)"
msgid "Metric"
msgstr "Metrika"
-msgid "Minimum Rate"
-msgstr "Minimális sebesség"
-
msgid "Minimum hold time"
msgstr "Minimális tartási idő"
@@ -2032,9 +2019,6 @@ msgstr "Mozgatás lefelé"
msgid "Move up"
msgstr "Mozgatás felfelé"
-msgid "Multicast Rate"
-msgstr "Multicast sebesség"
-
msgid "Multicast address"
msgstr "Multicast cím"
@@ -2047,6 +2031,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2239,8 +2226,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2277,9 +2269,6 @@ msgstr "Ki"
msgid "Outbound:"
msgstr "Kimenő:"
-msgid "Outdoor Channels"
-msgstr "Kültéri csatornák"
-
msgid "Output Interface"
msgstr ""
@@ -2461,6 +2450,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2664,9 +2659,6 @@ msgstr "Interfész újracsatlakoztatása"
msgid "References"
msgstr "Hivatkozások"
-msgid "Regulatory Domain"
-msgstr "Szabályozó tartomány"
-
msgid "Relay"
msgstr "Ãtjátszás"
@@ -2716,15 +2708,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2871,9 +2863,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Kliensek szétválasztása"
-msgid "Separate WDS"
-msgstr "WDS szétválasztása"
-
msgid "Server Settings"
msgstr "Kiszolgáló beállításai"
@@ -2897,6 +2886,11 @@ msgstr "Szolgáltatás típusa"
msgid "Services"
msgstr "Szolgáltatások"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Idő szinkronizálás beállítása"
@@ -3038,9 +3032,6 @@ msgstr "Statikus bérletek"
msgid "Static Routes"
msgstr "Statikus útvonalak"
-msgid "Static WDS"
-msgstr "Statikus WDS"
-
msgid "Static address"
msgstr "Statikus cím"
@@ -3467,9 +3458,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Turbó mód"
-
msgid "Tx-Power"
msgstr "Adóteljesítmény"
@@ -3756,9 +3744,6 @@ msgstr "A kapott DNS kéréseket írja a rendszernaplóba"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "XR támogatás"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3770,7 +3755,7 @@ msgstr ""
"esetén, az eszköz elérhetetlenné válhat!</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
"Engélyezze a Java Szkripteket a böngészőjében, mert anélkül a LuCI nem fog "
"megfelelően működni."
@@ -3944,6 +3929,54 @@ msgstr "igen"
msgid "« Back"
msgstr "« Vissza"
+#~ msgid "AR Support"
+#~ msgstr "AR Támogatás"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s vezeték-nélküli vezérlő"
+
+#~ msgid "Background Scan"
+#~ msgstr "Felderítés a háttérben"
+
+#~ msgid "Compression"
+#~ msgstr "Tömörítés"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Hardveres beacon időzítő letiltása"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Ne válaszoljon a szondázásra"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Gyors keretek"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Maximális sebesség"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Minimális sebesség"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicast sebesség"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Kültéri csatornák"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Szabályozó tartomány"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDS szétválasztása"
+
+#~ msgid "Static WDS"
+#~ msgstr "Statikus WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbó mód"
+
+#~ msgid "XR Support"
+#~ msgstr "XR támogatás"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Amennyiben ezt jelöletlenül hagyja, egy további hálózat jön létre"
diff --git a/modules/luci-base/po/it/base.po b/modules/luci-base/po/it/base.po
index 06ae794f85..8b6c2d3bb9 100644
--- a/modules/luci-base/po/it/base.po
+++ b/modules/luci-base/po/it/base.po
@@ -155,6 +155,11 @@ msgstr "<abbr title=\"maximal\">Max.</abbr> Richiesta in uso"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr "<abbr title='Accoppiata: %s / Gruppo: %s'>%s - %s</abbr>"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -173,9 +178,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "Supporto AR"
-
msgid "ARP retry threshold"
msgstr "riprova soglia ARP"
@@ -424,9 +426,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "Dispositivi Wi-Fi connessi"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Dispositivo Wireless Atheros 802.11%s"
-
msgid "Auth Group"
msgstr ""
@@ -505,9 +504,6 @@ msgstr "Ritorna alla panoramica"
msgid "Back to scan results"
msgstr "Ritorno ai risultati della scansione"
-msgid "Background Scan"
-msgstr "Scansione in background"
-
msgid "Backup / Flash Firmware"
msgstr "Copia di Sicurezza / Flash Firmware"
@@ -676,9 +672,6 @@ msgstr "Comando"
msgid "Common Configuration"
msgstr "Configurazioni Comuni"
-msgid "Compression"
-msgstr "Compressione"
-
msgid "Configuration"
msgstr "Configurazione"
@@ -899,9 +892,6 @@ msgstr "Disabilita il setup dei DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Disabilita Timer Beacon HW"
-
msgid "Disabled"
msgstr "Disabilitato"
@@ -947,9 +937,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Non proseguire con le ricerche inverse per le reti locali."
-msgid "Do not send probe responses"
-msgstr "Disabilita Probe-Responses"
-
msgid "Domain required"
msgstr "Dominio richiesto"
@@ -1150,9 +1137,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Frame veloci"
-
msgid "File"
msgstr "File"
@@ -1188,6 +1172,9 @@ msgstr "Fine"
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Impostazioni Firewall"
@@ -1233,6 +1220,9 @@ msgstr "Forza TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Forza TKIP e CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1639,6 +1629,9 @@ msgstr "ID VLAN non valido! Solo gli ID unici sono consentiti"
msgid "Invalid username and/or password! Please try again."
msgstr "Username o password non validi! Per favore riprova."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1647,8 +1640,8 @@ msgstr ""
"Sembra tu stia provando a flashare un'immagine più grande delle dimensioni "
"della memoria flash, per favore controlla il file!"
-msgid "Java Script required!"
-msgstr "Richiesto Java Script!"
+msgid "JavaScript required!"
+msgstr "Richiesto JavaScript!"
msgid "Join Network"
msgstr "Aggiungi Rete"
@@ -1916,9 +1909,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Velocità massima"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1954,9 +1944,6 @@ msgstr "Uso Memory (%)"
msgid "Metric"
msgstr "Metrica"
-msgid "Minimum Rate"
-msgstr "Velocità minima"
-
msgid "Minimum hold time"
msgstr "Velocità minima"
@@ -2030,9 +2017,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr "Velocità multicast"
-
msgid "Multicast address"
msgstr ""
@@ -2045,6 +2029,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2237,8 +2224,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2275,9 +2267,6 @@ msgstr ""
msgid "Outbound:"
msgstr "In uscita:"
-msgid "Outdoor Channels"
-msgstr ""
-
msgid "Output Interface"
msgstr ""
@@ -2457,6 +2446,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2648,9 +2643,6 @@ msgstr "Sto ricollegando l'interfaccia"
msgid "References"
msgstr ""
-msgid "Regulatory Domain"
-msgstr ""
-
msgid "Relay"
msgstr ""
@@ -2699,15 +2691,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2852,9 +2844,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Isola utenti"
-msgid "Separate WDS"
-msgstr "WDS separati"
-
msgid "Server Settings"
msgstr ""
@@ -2878,6 +2867,11 @@ msgstr ""
msgid "Services"
msgstr "Servizi"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -3020,9 +3014,6 @@ msgstr "Leases statici"
msgid "Static Routes"
msgstr "Instradamenti Statici"
-msgid "Static WDS"
-msgstr "WDS statico"
-
msgid "Static address"
msgstr "Indirizzo Statico"
@@ -3418,9 +3409,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Modalità turbo"
-
msgid "Tx-Power"
msgstr ""
@@ -3707,9 +3695,6 @@ msgstr "Scrittura delle richiesta DNS ricevute nel syslog"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Supporto XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3722,9 +3707,9 @@ msgstr ""
"potrebbe diventare inaccessibile!</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"È necessario attivare Java Script nel tuo browser o LuCI non funzionerà "
+"È necessario attivare JavaScript nel tuo browser o LuCI non funzionerà "
"correttamente."
msgid ""
@@ -3897,6 +3882,48 @@ msgstr "Sì"
msgid "« Back"
msgstr "« Indietro"
+#~ msgid "AR Support"
+#~ msgstr "Supporto AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Dispositivo Wireless Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "Scansione in background"
+
+#~ msgid "Compression"
+#~ msgstr "Compressione"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Disabilita Timer Beacon HW"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Disabilita Probe-Responses"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Frame veloci"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Velocità massima"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Velocità minima"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Velocità multicast"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDS separati"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS statico"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Modalità turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Supporto XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Sarà creata una rete aggiuntiva se lasci questo senza spunta."
diff --git a/modules/luci-base/po/ja/base.po b/modules/luci-base/po/ja/base.po
index f6ac3bebf4..3101e0549b 100644
--- a/modules/luci-base/po/ja/base.po
+++ b/modules/luci-base/po/ja/base.po
@@ -3,14 +3,14 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2017-02-11 03:28+0900\n"
+"PO-Revision-Date: 2017-04-03 02:32+0900\n"
"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.0\n"
"Language-Team: \n"
msgid "%s is untagged in multiple VLANs!"
@@ -38,13 +38,13 @@ msgid "-- custom --"
msgstr "-- 手動設定 --"
msgid "-- match by device --"
-msgstr "-- デãƒã‚¤ã‚¹ã§è¨­å®š --"
+msgstr "-- デãƒã‚¤ã‚¹ã‚’指定 --"
msgid "-- match by label --"
-msgstr "-- ラベルã§è¨­å®š --"
+msgstr "-- ラベルを指定 --"
msgid "-- match by uuid --"
-msgstr "-- UUIDã§è¨­å®š --"
+msgstr "-- UUIDを指定 --"
msgid "1 Minute Load:"
msgstr "éŽåŽ»1分ã®è² è·:"
@@ -56,7 +56,7 @@ msgid "4-character hexadecimal ID"
msgstr ""
msgid "464XLAT (CLAT)"
-msgstr ""
+msgstr "464XLAT (CLAT)"
msgid "5 Minute Load:"
msgstr "éŽåŽ»5分ã®è² è·:"
@@ -65,7 +65,7 @@ msgid "6-octet identifier as a hex string - no colons"
msgstr ""
msgid "802.11r Fast Transition"
-msgstr ""
+msgstr "802.11r 高速ローミング"
msgid "802.11w Association SA Query maximum timeout"
msgstr "802.11w アソシエーションSAクエリã®æœ€å¤§ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆæ™‚é–“ã§ã™ã€‚"
@@ -153,6 +153,11 @@ msgstr "<abbr title=\"maximal\">最大</abbr> 並列処ç†ã‚¯ã‚¨ãƒª"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr ""
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -171,9 +176,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "ARサãƒãƒ¼ãƒˆ"
-
msgid "ARP retry threshold"
msgstr "ARPå†è©¦è¡Œã—ãã„値"
@@ -228,7 +230,7 @@ msgstr ""
"稼åƒä¸­ã® <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-経路情報"
msgid "Active Connections"
-msgstr "アクティブコãƒã‚¯ã‚·ãƒ§ãƒ³"
+msgstr "アクティブ コãƒã‚¯ã‚·ãƒ§ãƒ³"
msgid "Active DHCP Leases"
msgstr "アクティブãªDHCPリース"
@@ -258,7 +260,7 @@ msgid "Address"
msgstr "アドレス"
msgid "Address to access local relay bridge"
-msgstr "ローカル・リレーブリッジã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã®IPアドレス"
+msgstr "ローカル リレーブリッジã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã®IPアドレス"
msgid "Administration"
msgstr "管ç†ç”»é¢"
@@ -414,9 +416,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "èªè¨¼æ¸ˆã¿ç«¯æœ«"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s 無線LANコントローラ"
-
msgid "Auth Group"
msgstr "èªè¨¼ã‚°ãƒ«ãƒ¼ãƒ—"
@@ -445,7 +444,7 @@ msgid "Automatic Homenet (HNCP)"
msgstr ""
msgid "Automatically check filesystem for errors before mounting"
-msgstr "マウント実行å‰ã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚·ã‚¹ãƒ†ãƒ ã®ã‚¨ãƒ©ãƒ¼ã‚’自動ã§ãƒã‚§ãƒƒã‚¯ã—ã¾ã™ã€‚"
+msgstr "マウント実行å‰ã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚·ã‚¹ãƒ†ãƒ ã®ã‚¨ãƒ©ãƒ¼ã‚’自動的ã«ãƒã‚§ãƒƒã‚¯ã—ã¾ã™ã€‚"
msgid "Automatically mount filesystems on hotplug"
msgstr "ホットプラグã«ã‚ˆã£ã¦ãƒ•ã‚¡ã‚¤ãƒ«ã‚·ã‚¹ãƒ†ãƒ ã‚’自動的ã«ãƒžã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚"
@@ -495,9 +494,6 @@ msgstr "概è¦ã¸æˆ»ã‚‹"
msgid "Back to scan results"
msgstr "スキャンçµæžœã¸æˆ»ã‚‹"
-msgid "Background Scan"
-msgstr "ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã‚¹ã‚­ãƒ£ãƒ³"
-
msgid "Backup / Flash Firmware"
msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ— / ファームウェア更新"
@@ -505,7 +501,7 @@ msgid "Backup / Restore"
msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ— / 復元"
msgid "Backup file list"
-msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—・ファイルリスト"
+msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ファイル リスト"
msgid "Bad address specified!"
msgstr "無効ãªã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã™!"
@@ -521,9 +517,9 @@ msgid ""
"configuration files marked by opkg, essential base files and the user "
"defined backup patterns."
msgstr ""
-"以下ã¯ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã®éš›ã«å«ã¾ã‚Œã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ãƒªã‚¹ãƒˆã§ã™ã€‚ã“ã®ãƒªã‚¹ãƒˆã¯ã€opkgã«ã‚ˆã£"
-"ã¦èªè­˜ã•ã‚Œã¦ã„る設定ファイルã€é‡è¦ãªãƒ™ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒè¨­å®šã—ãŸæ­£è¦è¡¨"
-"ç¾ã«ä¸€è‡´ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã®ä¸€è¦§ã§ã™ã€‚"
+"以下ã¯ã€ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã®éš›ã«å«ã¾ã‚Œã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒªã‚¹ãƒˆã§ã™ã€‚ã“ã®ãƒªã‚¹ãƒˆã¯ã€opkgã«"
+"よã£ã¦èªè­˜ã•ã‚Œã¦ã„る設定ファイルã€é‡è¦ãªãƒ™ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒè¨­å®šã—ãŸæ­£"
+"è¦è¡¨ç¾ã«ä¸€è‡´ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã®ä¸€è¦§ã§ã™ã€‚"
msgid "Bind interface"
msgstr ""
@@ -545,10 +541,10 @@ msgid "Bridge"
msgstr "ブリッジ"
msgid "Bridge interfaces"
-msgstr "ブリッジインターフェース"
+msgstr "ブリッジ インターフェース"
msgid "Bridge unit number"
-msgstr "ブリッジユニット番å·"
+msgstr "ブリッジ ユニット番å·"
msgid "Bring up on boot"
msgstr "デフォルトã§èµ·å‹•ã™ã‚‹"
@@ -573,7 +569,7 @@ msgid "Buttons"
msgstr "ボタン"
msgid "CA certificate; if empty it will be saved after the first connection."
-msgstr ""
+msgstr "CA証明書(空白ã®å ´åˆã€åˆå›žã®æŽ¥ç¶šå¾Œã«ä¿å­˜ã•ã‚Œã¾ã™ã€‚)"
msgid "CPU usage (%)"
msgstr "CPU使用率 (%)"
@@ -618,10 +614,10 @@ msgid ""
"fill out the <em>create</em> field to define a new zone and attach the "
"interface to it."
msgstr ""
-"ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã«è¨­å®šã™ã‚‹ãƒ•ã‚¡ã‚¤ã‚¦ã‚©ãƒ¼ãƒ«ãƒ»ã‚¾ãƒ¼ãƒ³ã‚’é¸æŠžã—ã¦ãã ã•ã„。<em>"
-"設定ã—ãªã„</em>ã‚’é¸æŠžã™ã‚‹ã¨ã€è¨­å®šæ¸ˆã¿ã®ã‚¾ãƒ¼ãƒ³ã‚’削除ã—ã¾ã™ã€‚ã¾ãŸã€<em>作æˆ</"
-"em>フィールドã«ã‚¾ãƒ¼ãƒ³åを入力ã™ã‚‹ã¨ã€æ–°ã—ãゾーンを作æˆã—ã€ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼"
-"スã«è¨­å®šã—ã¾ã™ã€‚"
+"ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã«è¨­å®šã™ã‚‹ãƒ•ã‚¡ã‚¤ã‚¦ã‚©ãƒ¼ãƒ« ゾーンをé¸æŠžã—ã¦ãã ã•ã„。<em>設"
+"定ã—ãªã„</em>ã‚’é¸æŠžã™ã‚‹ã¨ã€è¨­å®šæ¸ˆã¿ã®ã‚¾ãƒ¼ãƒ³ã‚’削除ã—ã¾ã™ã€‚ã¾ãŸã€<em>作æˆ</em>"
+"フィールドã«ã‚¾ãƒ¼ãƒ³åを入力ã™ã‚‹ã¨ã€æ–°ã—ãゾーンを作æˆã—ã€ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹"
+"ã«è¨­å®šã—ã¾ã™ã€‚"
msgid ""
"Choose the network(s) you want to attach to this wireless interface or fill "
@@ -641,10 +637,10 @@ msgid ""
"configuration files. To reset the firmware to its initial state, click "
"\"Perform reset\" (only possible with squashfs images)."
msgstr ""
-"\"ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—アーカイブã®ä½œæˆ\"をクリックã™ã‚‹ã¨ã€ç¾åœ¨ã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’tarå½¢å¼"
-"ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ファイルã¨ã—ã¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¾ã™ã€‚設定ã®ãƒªã‚»ãƒƒãƒˆã‚’è¡Œã†å ´åˆã€\"設"
-"定リセット\"をクリックã—ã¦ãã ã•ã„。(ãŸã ã—ã€squashfsã‚’ãŠä½¿ã„ã®å ´åˆã®ã¿ä½¿ç”¨å¯"
-"能ã§ã™)"
+"\"ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ— アーカイブã®ä½œæˆ\"をクリックã™ã‚‹ã¨ã€ç¾åœ¨ã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’tarå½¢"
+"å¼ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–ファイルã¨ã—ã¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¾ã™ã€‚設定ã®ãƒªã‚»ãƒƒãƒˆã‚’è¡Œã†å ´"
+"åˆã€\"設定リセット\"をクリックã—ã¦ãã ã•ã„。(ãŸã ã—ã€squashfsã‚’ãŠä½¿ã„ã®å ´åˆã®"
+"ã¿ä½¿ç”¨å¯èƒ½ã§ã™)"
msgid "Client"
msgstr "クライアント"
@@ -671,9 +667,6 @@ msgstr "コマンド"
msgid "Common Configuration"
msgstr "一般設定"
-msgid "Compression"
-msgstr "圧縮"
-
msgid "Configuration"
msgstr "設定"
@@ -714,7 +707,7 @@ msgid "Cover the following interfaces"
msgstr "インターフェースã®æŒ‡å®š"
msgid "Create / Assign firewall-zone"
-msgstr "ファイアウォールゾーンã®ä½œæˆ / 割り当ã¦"
+msgstr "ファイアウォール ゾーンã®ä½œæˆ / 割り当ã¦"
msgid "Create Interface"
msgstr "インターフェースã®ä½œæˆ"
@@ -788,7 +781,7 @@ msgid "DNS-Label / FQDN"
msgstr ""
msgid "DNSSEC"
-msgstr ""
+msgstr "DNSSEC"
msgid "DNSSEC check unsigned"
msgstr ""
@@ -803,7 +796,7 @@ msgid "DSL"
msgstr "DSL"
msgid "DSL Status"
-msgstr ""
+msgstr "DSL ステータス"
msgid "DSL line mode"
msgstr ""
@@ -821,7 +814,7 @@ msgid "Default %d"
msgstr "標準設定 %d"
msgid "Default gateway"
-msgstr "デフォルトゲートウェイ"
+msgstr "デフォルト ゲートウェイ"
msgid "Default is stateless + stateful"
msgstr "デフォルト㯠ステートレス + ステートフル ã§ã™ã€‚"
@@ -895,9 +888,6 @@ msgstr "DNSセットアップを無効ã«ã™ã‚‹"
msgid "Disable Encryption"
msgstr "æš—å·åŒ–を無効ã«ã™ã‚‹"
-msgid "Disable HW-Beacon timer"
-msgstr "HWビーコンタイマーを無効ã«ã™ã‚‹"
-
msgid "Disabled"
msgstr "無効"
@@ -908,7 +898,7 @@ msgid "Discard upstream RFC1918 responses"
msgstr "RFC1918ã®å¿œç­”を破棄ã—ã¾ã™"
msgid "Displaying only packages containing"
-msgstr "å³è¨˜ã®è¡¨ç¤ºã‚’å«ã‚“ã ãƒ‘ッケージã®ã¿ã‚’表示中"
+msgstr "å³è¨˜ã®æ–‡å­—列をå«ã‚“ã ãƒ‘ッケージã®ã¿ã‚’表示中"
msgid "Distance Optimization"
msgstr "è·é›¢ã®æœ€é©åŒ–"
@@ -938,19 +928,16 @@ msgstr ""
"無効ãªãƒªãƒ—ライをキャッシュã—ã¾ã›ã‚“ (例:存在ã—ãªã„ドメインã‹ã‚‰ã®è¿”ç­”ãªã©)"
msgid "Do not forward requests that cannot be answered by public name servers"
-msgstr "パブリックDNSサーãƒãƒ¼ãŒè¿”ç­”ã§ããªã‹ã£ãŸãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’転é€ã—ã¾ã›ã‚“"
+msgstr "パブリック DNSサーãƒãƒ¼ãŒè¿”ç­”ã§ããªã‹ã£ãŸãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’転é€ã—ã¾ã›ã‚“"
msgid "Do not forward reverse lookups for local networks"
-msgstr "ローカルãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã¸ã®é€†å¼•ãを転é€ã—ã¾ã›ã‚“"
-
-msgid "Do not send probe responses"
-msgstr "プローブレスãƒãƒ³ã‚¹ã‚’é€ä¿¡ã—ãªã„"
+msgstr "ローカル ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã¸ã®é€†å¼•ãを転é€ã—ã¾ã›ã‚“"
msgid "Domain required"
msgstr "ドメイン必須"
msgid "Domain whitelist"
-msgstr "ドメイン・ホワイトリスト"
+msgstr "ドメイン ホワイトリスト"
msgid "Don't Fragment"
msgstr ""
@@ -966,7 +953,7 @@ msgid "Download and install package"
msgstr "パッケージã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã¨ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«"
msgid "Download backup"
-msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—アーカイブã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰"
+msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ— アーカイブã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰"
msgid "Dropbear Instance"
msgstr "Dropbear設定"
@@ -983,8 +970,7 @@ msgid "Dual-Stack Lite (RFC6333)"
msgstr "Dual-Stack Lite (RFC6333)"
msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
-msgstr ""
-"ダイナミック <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
+msgstr "å‹•çš„ <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
msgid "Dynamic tunnel"
msgstr "動的トンãƒãƒ«æ©Ÿèƒ½"
@@ -1032,10 +1018,10 @@ msgid "Enable IPv6 negotiation"
msgstr "IPv6 ãƒã‚´ã‚·ã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ã®æœ‰åŠ¹åŒ–"
msgid "Enable IPv6 negotiation on the PPP link"
-msgstr "PPPリンクã®IPv6ãƒã‚´ã‚·ã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ã‚’有効ã«ã™ã‚‹"
+msgstr "PPPリンクã®IPv6 ãƒã‚´ã‚·ã‚¨ãƒ¼ã‚·ãƒ§ãƒ³ã‚’有効ã«ã™ã‚‹"
msgid "Enable Jumbo Frame passthrough"
-msgstr "ジャンボフレーム・パススルーを有効ã«ã™ã‚‹"
+msgstr "ジャンボフレーム パススルーを有効ã«ã™ã‚‹"
msgid "Enable NTP client"
msgstr "NTPクライアント機能を有効ã«ã™ã‚‹"
@@ -1053,7 +1039,7 @@ msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
msgstr "WPS プッシュボタンを有効化ã™ã‚‹ã«ã¯ã€WPA(2)-PSKãŒå¿…è¦ã§ã™ã€‚"
msgid "Enable learning and aging"
-msgstr "ラーニング・エイジング機能を有効ã«ã™ã‚‹"
+msgstr "ラーニング エイジング機能を有効ã«ã™ã‚‹"
msgid "Enable mirroring of incoming packets"
msgstr ""
@@ -1082,7 +1068,7 @@ msgid ""
msgstr ""
msgid "Enables the Spanning Tree Protocol on this bridge"
-msgstr "スパニングツリー・プロトコルを有効ã«ã™ã‚‹"
+msgstr "スパニングツリー プロトコルを有効ã«ã™ã‚‹"
msgid "Encapsulation mode"
msgstr "カプセル化モード"
@@ -1136,10 +1122,10 @@ msgid "External R1 Key Holder List"
msgstr ""
msgid "External system log server"
-msgstr "外部システムログ・サーãƒãƒ¼"
+msgstr "外部システムログ サーãƒãƒ¼"
msgid "External system log server port"
-msgstr "外部システムログ・サーãƒãƒ¼ãƒãƒ¼ãƒˆ"
+msgstr "外部システムログ・サーãƒãƒ¼ ãƒãƒ¼ãƒˆ"
msgid "External system log server protocol"
msgstr "外部システムログ・サーãƒãƒ¼ プロトコル"
@@ -1147,9 +1133,6 @@ msgstr "外部システムログ・サーãƒãƒ¼ プロトコル"
msgid "Extra SSH command options"
msgstr "拡張 SSHコマンドオプション"
-msgid "Fast Frames"
-msgstr "ファスト・フレーム"
-
msgid "File"
msgstr "ファイル"
@@ -1166,7 +1149,7 @@ msgid "Filter private"
msgstr "プライベートフィルター"
msgid "Filter useless"
-msgstr "Filter useless"
+msgstr ""
msgid ""
"Find all currently attached filesystems and swap and replace configuration "
@@ -1176,7 +1159,7 @@ msgstr ""
"ã¥ã„ã¦ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆè¨­å®šã‚’ç½®ãæ›ãˆã¾ã™ã€‚"
msgid "Find and join network"
-msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚’検索ã—ã¦å‚加"
+msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã®æ¤œç´¢ã¨å‚加"
msgid "Find package"
msgstr "パッケージを検索"
@@ -1187,17 +1170,20 @@ msgstr "終了"
msgid "Firewall"
msgstr "ファイアウォール"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "ファイアウォール設定"
msgid "Firewall Status"
-msgstr "ファイアウォール・ステータス"
+msgstr "ファイアウォール ステータス"
msgid "Firmware File"
msgstr "ファームウェア ファイル"
msgid "Firmware Version"
-msgstr "ファームウェア・ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
+msgstr "ファームウェア ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
msgid "Fixed source port for outbound DNS queries"
msgstr "DNSクエリをé€ä¿¡ã™ã‚‹é€ä¿¡å…ƒãƒãƒ¼ãƒˆã‚’固定ã—ã¾ã™"
@@ -1233,6 +1219,9 @@ msgstr "TKIP を使用"
msgid "Force TKIP and CCMP (AES)"
msgstr "TKIP åŠã³CCMP (AES) を使用"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr "NAT-Tã®å¼·åˆ¶ä½¿ç”¨"
@@ -1246,13 +1235,13 @@ msgid "Forward Error Correction Seconds (FECS)"
msgstr ""
msgid "Forward broadcast traffic"
-msgstr "ブロードキャスト・トラフィックを転é€ã™ã‚‹"
+msgstr "ブロードキャスト トラフィックを転é€ã™ã‚‹"
msgid "Forwarding mode"
msgstr "転é€ãƒ¢ãƒ¼ãƒ‰"
msgid "Fragmentation Threshold"
-msgstr "フラグメンテーション閾値"
+msgstr "フラグメンテーションã—ãã„値"
msgid "Frame Bursting"
msgstr "フレームãƒãƒ¼ã‚¹ãƒˆ"
@@ -1280,7 +1269,7 @@ msgid "Gateway"
msgstr "ゲートウェイ"
msgid "Gateway ports"
-msgstr "ゲートウェイ・ãƒãƒ¼ãƒˆ"
+msgstr "ゲートウェイ ãƒãƒ¼ãƒˆ"
msgid "General Settings"
msgstr "一般設定"
@@ -1295,7 +1284,7 @@ msgid "Generate Config"
msgstr "コンフィグ生æˆ"
msgid "Generate archive"
-msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—アーカイブã®ä½œæˆ"
+msgstr "ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ— アーカイブã®ä½œæˆ"
msgid "Generic 802.11%s Wireless Controller"
msgstr "802.11%s 無線LANコントローラ"
@@ -1325,7 +1314,7 @@ msgid "HE.net password"
msgstr "HE.net パスワード"
msgid "HE.net username"
-msgstr ""
+msgstr "HE.net ユーザーå"
msgid "HT mode (802.11n)"
msgstr "HT モード (802.11n)"
@@ -1363,7 +1352,7 @@ msgid "Host"
msgstr "ホスト"
msgid "Host entries"
-msgstr "ホストエントリー"
+msgstr "ホスト エントリー"
msgid "Host expiry timeout"
msgstr ""
@@ -1506,20 +1495,21 @@ msgstr "ãƒã‚§ãƒƒã‚¯ã—ãŸå ´åˆã€æš—å·åŒ–ã¯ç„¡åŠ¹ã«ãªã‚Šã¾ã™ã€‚"
msgid ""
"If specified, mount the device by its UUID instead of a fixed device node"
-msgstr "固定ã®ãƒ‡ãƒã‚¤ã‚¹ãƒŽãƒ¼ãƒ‰åã®ã‹ã‚ã‚Šã«ã€è¨­å®šã—ãŸUUIDを使用ã—ã¦ãƒžã‚¦ãƒ³ãƒˆã—ã¾ã™"
+msgstr ""
+"固定ã®ãƒ‡ãƒã‚¤ã‚¹ ノードåã®ã‹ã‚ã‚Šã«ã€è¨­å®šã•ã‚ŒãŸUUIDを使用ã—ã¦ãƒžã‚¦ãƒ³ãƒˆã—ã¾ã™"
msgid ""
"If specified, mount the device by the partition label instead of a fixed "
"device node"
msgstr ""
-"固定ã®ãƒ‡ãƒã‚¤ã‚¹ãƒŽãƒ¼ãƒ‰åã®ã‹ã‚ã‚Šã«ã€è¨­å®šã—ãŸãƒ‘ーティションラベルを使用ã—ã¦ãƒžã‚¦"
-"ントã—ã¾ã™ã€‚"
+"固定ã®ãƒ‡ãƒã‚¤ã‚¹ ノードåã®ã‹ã‚ã‚Šã«ã€è¨­å®šã•ã‚ŒãŸãƒ‘ーティション ラベルを使用ã—ã¦"
+"マウントã—ã¾ã™ã€‚"
msgid "If unchecked, no default route is configured"
-msgstr "ãƒã‚§ãƒƒã‚¯ã•ã‚Œã¦ã„ãªã„å ´åˆã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ«ãƒ¼ãƒˆã‚’設定ã—ã¾ã›ã‚“"
+msgstr "ãƒã‚§ãƒƒã‚¯ã•ã‚Œã¦ã„ãªã„å ´åˆã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ ルートを設定ã—ã¾ã›ã‚“"
msgid "If unchecked, the advertised DNS server addresses are ignored"
-msgstr "ãƒã‚§ãƒƒã‚¯ã•ã‚Œã¦ã„ãªã„å ´åˆã€é€šçŸ¥ã•ã‚ŒãŸDNSサーãƒãƒ¼ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’無視ã—ã¾ã™"
+msgstr "ãƒã‚§ãƒƒã‚¯ã•ã‚Œã¦ã„ãªã„å ´åˆã€é€šçŸ¥ã•ã‚ŒãŸDNSサーãƒãƒ¼ アドレスを無視ã—ã¾ã™"
msgid ""
"If your physical memory is insufficient unused data can be temporarily "
@@ -1528,11 +1518,11 @@ msgid ""
"slow process as the swap-device cannot be accessed with the high datarates "
"of the <abbr title=\"Random Access Memory\">RAM</abbr>."
msgstr ""
-"物ç†ãƒ¡ãƒ¢ãƒªãŒä¸è¶³ã™ã‚‹å ´åˆã€ä¸€æ™‚çš„ã«ãƒ‡ãƒ¼ã‚¿ã‚’より大容é‡ãª<abbr title=\"Random "
-"Access Memory\">RAM</abbr>デãƒã‚¤ã‚¹ã«ã‚¹ãƒ¯ãƒƒãƒ—ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ãŸã ã—ã€ãƒ‡ãƒ¼"
-"ã‚¿ã®ã‚¹ãƒ¯ãƒƒãƒ—ã¯éžå¸¸ã«é…ã„処ç†ã§ã‚ã‚‹ãŸã‚ã€ã‚¹ãƒ¯ãƒƒãƒ—ã™ã‚‹ãƒ‡ãƒã‚¤ã‚¹ã«ã¯é«˜é€Ÿã«<abbr "
-"title=\"Random Access Memory\">RAM</abbr>ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ãŒã§ããªããªã‚‹æã‚Œ"
-"ãŒã‚ã‚Šã¾ã™ã€‚"
+"物ç†ãƒ¡ãƒ¢ãƒªãŒä¸è¶³ã™ã‚‹å ´åˆã€ä½¿ç”¨ã•ã‚Œã¦ã„ãªã„データを一時的ã«ã‚¹ãƒ¯ãƒƒãƒ— デãƒã‚¤ã‚¹ã«"
+"スワップã—ã€<abbr title=\"Random Access Memory\">RAM</abbr>ã®ä½¿ç”¨å¯èƒ½é ˜åŸŸã‚’増"
+"ã‚„ã™ã“ã¨ãŒã§ãã¾ã™ã€‚ãŸã ã—ã€ã‚¹ãƒ¯ãƒƒãƒ— デãƒã‚¤ã‚¹ã¯<abbr title=\"Random Access "
+"Memory\">RAM</abbr>ã‹ã‚‰é«˜é€Ÿã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ãŒã§ããªã„ãŸã‚ã€ãƒ‡ãƒ¼ã‚¿ã®ã‚¹ãƒ¯ãƒƒãƒ—"
+"ã¯éžå¸¸ã«é…ã„処ç†ã§ã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¾ã™ã€‚"
msgid "Ignore <code>/etc/hosts</code>"
msgstr "<code>/etc/hosts</code>を無視"
@@ -1541,7 +1531,7 @@ msgid "Ignore interface"
msgstr "インターフェースを無視ã™ã‚‹"
msgid "Ignore resolve file"
-msgstr "リゾルãƒãƒ•ã‚¡ã‚¤ãƒ«ã‚’無視ã™ã‚‹"
+msgstr "リゾルムファイルを無視ã™ã‚‹"
msgid "Image"
msgstr "イメージ"
@@ -1618,7 +1608,7 @@ msgid "Internal"
msgstr "内部"
msgid "Internal Server Error"
-msgstr "内部サーãƒãƒ¼ã‚¨ãƒ©ãƒ¼"
+msgstr "内部サーãƒãƒ¼ エラー"
msgid "Invalid"
msgstr "入力値ãŒä¸æ­£ã§ã™"
@@ -1630,7 +1620,11 @@ msgid "Invalid VLAN ID given! Only unique IDs are allowed"
msgstr "無効ãªVLAN IDã§ã™! ユニークãªIDを入力ã—ã¦ãã ã•ã„。"
msgid "Invalid username and/or password! Please try again."
-msgstr "ユーザーåã¨ãƒ‘スワードãŒä¸æ­£ã§ã™! ã‚‚ã†ä¸€åº¦å…¥åŠ›ã—ã¦ãã ã•ã„。"
+msgstr ""
+"ユーザーåã‹ãƒ‘スワードã€ã‚‚ã—ãã¯ä¸¡æ–¹ãŒä¸æ­£ã§ã™ï¼ã‚‚ã†ä¸€åº¦å…¥åŠ›ã—ã¦ãã ã•ã„。"
+
+msgid "Isolate Clients"
+msgstr ""
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1639,7 +1633,7 @@ msgstr ""
"æ›´æ–°ã—よã†ã¨ã—ãŸã‚¤ãƒ¡ãƒ¼ã‚¸ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã“ã®ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ãƒ¡ãƒ¢ãƒªã«é©åˆã—ã¾ã›ã‚“。イメー"
"ジファイルを確èªã—ã¦ãã ã•ã„!"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr "JavaScriptを有効ã«ã—ã¦ãã ã•ã„!"
msgid "Join Network"
@@ -1649,16 +1643,16 @@ msgid "Join Network: Wireless Scan"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«æŽ¥ç¶šã™ã‚‹: ç„¡ç·šLANスキャン"
msgid "Joining Network: %q"
-msgstr "次ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«å‚加: %q"
+msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«æŽ¥ç¶š: %q"
msgid "Keep settings"
msgstr "設定をä¿æŒã™ã‚‹"
msgid "Kernel Log"
-msgstr "カーãƒãƒ«ãƒ­ã‚°"
+msgstr "カーãƒãƒ« ログ"
msgid "Kernel Version"
-msgstr "カーãƒãƒ«ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
+msgstr "カーãƒãƒ« ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
msgid "Key"
msgstr "æš—å·ã‚­ãƒ¼"
@@ -1815,13 +1809,13 @@ msgid "Local Service Only"
msgstr ""
msgid "Local Startup"
-msgstr "ローカル Startup"
+msgstr "ローカル スタートアップ"
msgid "Local Time"
msgstr "時刻"
msgid "Local domain"
-msgstr "ローカルドメイン"
+msgstr "ローカル ドメイン"
msgid ""
"Local domain specification. Names matching this domain are never forwarded "
@@ -1830,11 +1824,11 @@ msgstr ""
msgid "Local domain suffix appended to DHCP names and hosts file entries"
msgstr ""
-"DHCPåã¨hostsファイルã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã«ä»˜ã•ã‚Œã‚‹ã€ãƒ­ãƒ¼ã‚«ãƒ«ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚µãƒ•ã‚£ãƒƒã‚¯ã‚¹ã§"
+"DHCPåã¨hostsファイルã®ã‚¨ãƒ³ãƒˆãƒªãƒ¼ã«ä»˜ã•ã‚Œã‚‹ã€ãƒ­ãƒ¼ã‚«ãƒ«ãƒ‰ãƒ¡ã‚¤ãƒ³ サフィックスã§"
"ã™ã€‚"
msgid "Local server"
-msgstr "ローカルサーãƒãƒ¼"
+msgstr "ローカル サーãƒãƒ¼"
msgid ""
"Localise hostname depending on the requesting subnet if multiple IPs are "
@@ -1851,7 +1845,7 @@ msgid "Log output level"
msgstr "ログ出力レベル"
msgid "Log queries"
-msgstr "ログクエリー"
+msgstr "ログ クエリ"
msgid "Logging"
msgstr "ログ"
@@ -1873,7 +1867,7 @@ msgid "MAC-Address"
msgstr "MAC-アドレス"
msgid "MAC-Address Filter"
-msgstr "MAC-アドレスフィルタ"
+msgstr "MAC-アドレス フィルタ"
msgid "MAC-Filter"
msgstr "MAC-フィルタ"
@@ -1882,7 +1876,7 @@ msgid "MAC-List"
msgstr "MAC-リスト"
msgid "MAP / LW4over6"
-msgstr ""
+msgstr "MAP / LW4over6"
msgid "MB/s"
msgstr "MB/s"
@@ -1908,9 +1902,6 @@ msgstr "手動"
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "最大レート"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "DHCPリースã®è¨±å¯ã•ã‚Œã‚‹æœ€å¤§æ•°"
@@ -1948,9 +1939,6 @@ msgstr "メモリ使用率 (%)"
msgid "Metric"
msgstr "メトリック"
-msgid "Minimum Rate"
-msgstr "最å°ãƒ¬ãƒ¼ãƒˆ"
-
msgid "Minimum hold time"
msgstr "最短ä¿æŒæ™‚é–“"
@@ -1973,7 +1961,7 @@ msgid "Model"
msgstr "モデル"
msgid "Modem device"
-msgstr "モデムデãƒã‚¤ã‚¹"
+msgstr "モデム デãƒã‚¤ã‚¹"
msgid "Modem init timeout"
msgstr "モデムåˆæœŸåŒ–タイムアウト"
@@ -2024,11 +2012,8 @@ msgstr "下ã¸"
msgid "Move up"
msgstr "上ã¸"
-msgid "Multicast Rate"
-msgstr "マルãƒã‚­ãƒ£ã‚¹ãƒˆãƒ¬ãƒ¼ãƒˆ"
-
msgid "Multicast address"
-msgstr "マルãƒã‚­ãƒ£ã‚¹ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹"
+msgstr "マルãƒã‚­ãƒ£ã‚¹ãƒˆ アドレス"
msgid "NAS ID"
msgstr "NAS ID"
@@ -2039,6 +2024,9 @@ msgstr "NAT-T モード"
msgid "NAT64 Prefix"
msgstr "NAT64 プレフィクス"
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr "NDP-プロキシ"
@@ -2070,10 +2058,10 @@ msgid "Network"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯"
msgid "Network Utilities"
-msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ»ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£"
+msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ ユーティリティ"
msgid "Network boot image"
-msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ»ãƒ–ート用イメージ"
+msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ–ート用イメージ"
msgid "Network without interfaces."
msgstr ""
@@ -2106,7 +2094,7 @@ msgid "No network name specified"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯åãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
msgid "No package lists available"
-msgstr "パッケージリストãŒã‚ã‚Šã¾ã›ã‚“"
+msgstr "パッケージ リストãŒã‚ã‚Šã¾ã›ã‚“"
msgid "No password set!"
msgstr "パスワードãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“!"
@@ -2182,18 +2170,18 @@ msgid ""
"<samp>INTERFACE.VLANNR</samp> (<abbr title=\"for example\">e.g.</abbr>: "
"<samp>eth0.1</samp>)."
msgstr ""
-"ã“ã®ãƒšãƒ¼ã‚¸ã§ã¯ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®è¨­å®šã‚’è¡Œã†ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚\"ブ"
-"リッジインターフェース\"フィールドをãƒã‚§ãƒƒã‚¯ã—ã€è¤‡æ•°ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¤ãƒ³ã‚¿ãƒ¼"
-"フェースåをスペースã§åŒºåˆ‡ã‚Šã§å…¥åŠ›ã™ã‚‹ã“ã¨ã§è¤‡æ•°ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã‚’ブリッジ"
-"ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ã¾ãŸã€<samp>INTERFACE.VLANNR</samp>ã¨ã„ã†è¡¨è¨˜ã«ã‚ˆã‚Š<abbr "
-"title=\"Virtual Local Area Network\">VLAN</abbr>も使用ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚"
-"(<abbr title=\"for example\">例</abbr>: <samp>eth0.1</samp>)"
+"ã“ã®ãƒšãƒ¼ã‚¸ã§ã¯ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ インターフェースã®è¨­å®šã‚’è¡Œã†ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚\"ブ"
+"リッジインターフェース\"フィールドã«ãƒã‚§ãƒƒã‚¯ã‚’付ã‘ã€è¤‡æ•°ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ イン"
+"ターフェースをリストã‹ã‚‰é¸æŠžã™ã‚‹ã“ã¨ã§è¤‡æ•°ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã‚’ブリッジã™ã‚‹ã“"
+"ã¨ãŒå‡ºæ¥ã¾ã™ã€‚ã¾ãŸã€<samp>INTERFACE.VLANNR</samp>ã¨ã„ã†è¡¨è¨˜ã«ã‚ˆã‚Š<abbr title="
+"\"Virtual Local Area Network\">VLAN</abbr>も使用ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚(<abbr "
+"title=\"for example\">例</abbr>: <samp>eth0.1</samp>)"
msgid "On-State Delay"
msgstr "点ç¯æ™‚é–“"
msgid "One of hostname or mac address must be specified!"
-msgstr "1ã¤ä»¥ä¸Šã®ãƒ›ã‚¹ãƒˆåã¾ãŸã¯macアドレスを設定ã—ã¦ãã ã•ã„!"
+msgstr "1ã¤ä»¥ä¸Šã®ãƒ›ã‚¹ãƒˆåã¾ãŸã¯MACアドレスを設定ã—ã¦ãã ã•ã„!"
msgid "One or more fields contain invalid values!"
msgstr "1ã¤ä»¥ä¸Šã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ç„¡åŠ¹ãªå€¤ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã™ï¼"
@@ -2232,8 +2220,13 @@ msgid "Optional."
msgstr "(オプション)"
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2274,9 +2267,6 @@ msgstr "アウト"
msgid "Outbound:"
msgstr "é€ä¿¡:"
-msgid "Outdoor Channels"
-msgstr "屋外用周波数"
-
msgid "Output Interface"
msgstr "出力インターフェース"
@@ -2360,7 +2350,7 @@ msgid "Package libiwinfo required!"
msgstr "libiwinfo パッケージをインストールã—ã¦ãã ã•ã„ï¼"
msgid "Package lists are older than 24 hours"
-msgstr "パッケージリストã¯24時間以上å‰ã®ã‚‚ã®ã§ã™"
+msgstr "パッケージ リストã¯24時間以上å‰ã®ã‚‚ã®ã§ã™"
msgid "Package name"
msgstr "パッケージå"
@@ -2458,6 +2448,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr "委任ã•ã‚ŒãŸãƒ—レフィクス (PD)"
@@ -2505,7 +2501,7 @@ msgid "Protocol of the new interface"
msgstr "æ–°ã—ã„インターフェースã®ãƒ—ロトコル"
msgid "Protocol support is not installed"
-msgstr "プロトコルサãƒãƒ¼ãƒˆãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“"
+msgstr "プロトコル サãƒãƒ¼ãƒˆãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“"
msgid "Provide NTP server"
msgstr "NTPサーãƒãƒ¼æ©Ÿèƒ½ã‚’有効ã«ã™ã‚‹"
@@ -2538,7 +2534,7 @@ msgid "RFC3947 NAT-T mode"
msgstr "RFC3947 NAT-Tモード"
msgid "RTS/CTS Threshold"
-msgstr "RTS/CTS閾値"
+msgstr "RTS/CTSã—ãã„値"
msgid "RX"
msgstr "RX"
@@ -2550,7 +2546,7 @@ msgid "RaLink 802.11%s Wireless Controller"
msgstr "RaLink 802.11%s 無線LANコントローラ"
msgid "Radius-Accounting-Port"
-msgstr "Radiusアカウントサーãƒãƒ¼ãƒ»ãƒãƒ¼ãƒˆç•ªå·"
+msgstr "Radiusアカウントサーãƒãƒ¼ ãƒãƒ¼ãƒˆç•ªå·"
msgid "Radius-Accounting-Secret"
msgstr "Radiusアカウント秘密éµ"
@@ -2559,7 +2555,7 @@ msgid "Radius-Accounting-Server"
msgstr "Radiusアカウントサーãƒãƒ¼"
msgid "Radius-Authentication-Port"
-msgstr "Radiusèªè¨¼ã‚µãƒ¼ãƒãƒ¼ãƒ»ãƒãƒ¼ãƒˆç•ªå·"
+msgstr "Radiusèªè¨¼ã‚µãƒ¼ãƒãƒ¼ ãƒãƒ¼ãƒˆç•ªå·"
msgid "Radius-Authentication-Secret"
msgstr "Radiusèªè¨¼ç§˜å¯†éµ"
@@ -2618,7 +2614,7 @@ msgid "Realtime Connections"
msgstr "リアルタイム・コãƒã‚¯ã‚·ãƒ§ãƒ³"
msgid "Realtime Graphs"
-msgstr "リアルタイム・グラフ"
+msgstr "リアルタイム グラフ"
msgid "Realtime Load"
msgstr "リアルタイム・ロード"
@@ -2662,9 +2658,6 @@ msgstr "インターフェースå†æŽ¥ç¶šä¸­"
msgid "References"
msgstr "å‚照カウンタ"
-msgid "Regulatory Domain"
-msgstr "è¦åˆ¶ãƒ‰ãƒ¡ã‚¤ãƒ³"
-
msgid "Relay"
msgstr "リレー"
@@ -2678,7 +2671,7 @@ msgid "Relay bridge"
msgstr "リレーブリッジ"
msgid "Remote IPv4 address"
-msgstr "リモートIPv4アドレス"
+msgstr "リモート IPv4アドレス"
msgid "Remote IPv4 address or FQDN"
msgstr "リモート IPv4アドレス ã¾ãŸã¯ FQDN"
@@ -2713,21 +2706,21 @@ msgstr "DOCSIS 3.0を使用ã™ã‚‹ã„ãã¤ã‹ã®ISPã§ã¯å¿…è¦ã«ãªã‚Šã¾ã™"
msgid "Required. Base64-encoded private key for this interface."
msgstr "ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã«ä½¿ç”¨ã™ã‚‹Base64-エンコード 秘密éµï¼ˆå¿…須)"
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr "ピアã®å…¬é–‹éµï¼ˆå¿…須)"
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
msgstr ""
"'フル' ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® wpad/hostapd ã¨ã€ç„¡ç·šLANドライãƒãƒ¼ã«ã‚ˆã‚‹ã‚µãƒãƒ¼ãƒˆãŒå¿…è¦ã§"
-"ã™ã€‚<br />(2017å¹´2月ç¾åœ¨: ath9k 㨠ath10kã€LEDE内ã§ã¯ mwlwifi 㨠mt76)"
+"ã™ã€‚<br />(2017å¹´2月ç¾åœ¨: ath9k åŠã³ ath10kã€LEDE内ã§ã¯ mwlwifi åŠã³ mt76)"
msgid ""
"Requires upstream supports DNSSEC; verify unsigned domain responses really "
@@ -2786,7 +2779,7 @@ msgid "Router Advertisement-Service"
msgstr "ルーター アドãƒã‚¿ã‚¤ã‚ºãƒ¡ãƒ³ãƒˆ-サービス"
msgid "Router Password"
-msgstr "ルーター・パスワード"
+msgstr "ルーター パスワード"
msgid "Routes"
msgstr "経路情報"
@@ -2870,9 +2863,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "クライアントã®åˆ†é›¢"
-msgid "Separate WDS"
-msgstr "WDSを分離ã™ã‚‹"
-
msgid "Server Settings"
msgstr "サーãƒãƒ¼è¨­å®š"
@@ -2896,6 +2886,11 @@ msgstr "サービスタイプ"
msgid "Services"
msgstr "サービス"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr "時刻åŒæœŸè¨­å®š"
@@ -3033,9 +3028,6 @@ msgstr "é™çš„リース"
msgid "Static Routes"
msgstr "é™çš„ルーティング"
-msgid "Static WDS"
-msgstr "é™çš„WDS"
-
msgid "Static address"
msgstr "é™çš„アドレス"
@@ -3104,10 +3096,10 @@ msgid "System Log"
msgstr "システムログ"
msgid "System Properties"
-msgstr "システム・プロパティ"
+msgstr "システム プロパティ"
msgid "System log buffer size"
-msgstr "システムログ・ãƒãƒƒãƒ•ã‚¡ã‚µã‚¤ã‚º"
+msgstr "システムログ ãƒãƒƒãƒ•ã‚¡ã‚µã‚¤ã‚º"
msgid "TCP:"
msgstr "TCP:"
@@ -3331,21 +3323,21 @@ msgid ""
"This is the content of /etc/rc.local. Insert your own commands here (in "
"front of 'exit 0') to execute them at the end of the boot process."
msgstr ""
-"/etc/rc.localを表示ã—ã¦ã„ã¾ã™ã€‚ã‚ãªãŸã®å®Ÿè¡Œã—ãŸã„コマンドを'exit 0'行より上ã«"
-"入力ã—ã¦ãã ã•ã„。ã“れらã®ã‚³ãƒžãƒ³ãƒ‰ã¯ãƒ–ートプロセスã®æœ€å¾Œã«å®Ÿè¡Œã•ã‚Œã¾ã™ã€‚"
+"/etc/rc.localを表示ã—ã¦ã„ã¾ã™ã€‚実行ã—ãŸã„コマンドを'exit 0'行より上ã«å…¥åŠ›ã—ã¦"
+"ãã ã•ã„。ã“れらã®ã‚³ãƒžãƒ³ãƒ‰ã¯ãƒ–ートプロセスã®æœ€å¾Œã«å®Ÿè¡Œã•ã‚Œã¾ã™ã€‚"
msgid ""
"This is the local endpoint address assigned by the tunnel broker, it usually "
"ends with <code>:2</code>"
msgstr ""
-"プロãƒã‚¤ãƒ€ã‹ã‚‰ã‚¢ã‚µã‚¤ãƒ³ã•ã‚ŒãŸã€ãƒ­ãƒ¼ã‚«ãƒ«ã®ã‚¨ãƒ³ãƒ‰ãƒã‚¤ãƒ³ãƒˆãƒ»ã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã™ã€‚通常ã€"
+"プロãƒã‚¤ãƒ€ã‹ã‚‰ã‚¢ã‚µã‚¤ãƒ³ã•ã‚ŒãŸã€ãƒ­ãƒ¼ã‚«ãƒ«ã®ã‚¨ãƒ³ãƒ‰ãƒã‚¤ãƒ³ãƒˆ アドレスã§ã™ã€‚通常ã€"
"<code>:2</code>ãŒçµ‚端ã«è¨­å®šã•ã‚Œã¾ã™ã€‚"
msgid ""
"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
"abbr> in the local network"
msgstr ""
-"ローカルãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯å†…ã®ã¿ã® <abbr title=\"Dynamic Host Configuration "
+"ローカル ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯å†…ã®ã¿ã® <abbr title=\"Dynamic Host Configuration "
"Protocol\">DHCP</abbr>ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹"
msgid "This is the plain username for logging into the account"
@@ -3357,7 +3349,7 @@ msgstr ""
msgid "This is the system crontab in which scheduled tasks can be defined."
msgstr ""
-"スケジュールタスクシステムを使用ã™ã‚‹ã“ã¨ã§ã€å®šæœŸçš„ã«ç‰¹å®šã®ã‚¿ã‚¹ã‚¯ã®å®Ÿè¡Œã‚’è¡Œã†"
+"スケジュールタスク システムを使用ã™ã‚‹ã“ã¨ã§ã€å®šæœŸçš„ã«ç‰¹å®šã®ã‚¿ã‚¹ã‚¯ã®å®Ÿè¡Œã‚’è¡Œã†"
"ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚"
msgid ""
@@ -3393,7 +3385,7 @@ msgid ""
"To restore configuration files, you can upload a previously generated backup "
"archive here."
msgstr ""
-"設定を復元ã™ã‚‹ã«ã¯ã€ä½œæˆã—ã¦ãŠã„ãŸãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—アーカイブをアップロードã—ã¦ã"
+"設定を復元ã™ã‚‹ã«ã¯ã€ä½œæˆã—ã¦ãŠã„ãŸãƒãƒƒã‚¯ã‚¢ãƒƒãƒ— アーカイブをアップロードã—ã¦ã"
"ã ã•ã„。"
msgid "Tone"
@@ -3447,9 +3439,6 @@ msgstr "トンãƒãƒ«ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ— サーãƒãƒ¼"
msgid "Tunnel type"
msgstr "トンãƒãƒ«ã‚¿ã‚¤ãƒ—"
-msgid "Turbo Mode"
-msgstr "ターボモード"
-
msgid "Tx-Power"
msgstr "é€ä¿¡é›»åŠ›"
@@ -3506,13 +3495,13 @@ msgid ""
"Check \"Keep settings\" to retain the current configuration (requires a "
"compatible firmware image)."
msgstr ""
-"システムをアップデートã™ã‚‹å ´åˆã€sysupgrade機能ã«äº’æ›æ€§ã®ã‚るファームウェアイ"
-"メージをアップロードã—ã¦ãã ã•ã„。\"設定ã®ä¿æŒ\"を有効ã«ã™ã‚‹ã¨ã€ç¾åœ¨ã®è¨­å®šã‚’"
-"維æŒã—ã¦ã‚¢ãƒƒãƒ—デートを行ã„ã¾ã™ã€‚ãŸã ã—ã€OpenWrt/LEDE互æ›ã®ãƒ•ã‚¡ãƒ¼ãƒ ã‚¦ã‚§ã‚¢ã‚¤"
-"メージãŒã‚¢ãƒƒãƒ—ロードã•ã‚ŒãŸå ´åˆã®ã¿ã€è¨­å®šã¯ä¿æŒã•ã‚Œã¾ã™ã€‚"
+"システムをアップデートã™ã‚‹å ´åˆã€sysupgrade機能ã«äº’æ›æ€§ã®ã‚るファームウェア イ"
+"メージをã“ã“ã«ã‚¢ãƒƒãƒ—ロードã—ã¦ãã ã•ã„。\"設定ã®ä¿æŒ\"を有効ã«ã™ã‚‹ã¨ã€ç¾åœ¨ã®"
+"設定を維æŒã—ã¦ã‚¢ãƒƒãƒ—デートを行ã„ã¾ã™ï¼ˆäº’æ›æ€§ã®ã‚るファームウェア イメージãŒå¿…"
+"è¦ï¼‰ã€‚"
msgid "Upload archive..."
-msgstr "アーカイブをアップロード"
+msgstr "アーカイブをアップロード..."
msgid "Uploaded File"
msgstr "アップロード完了"
@@ -3533,10 +3522,10 @@ msgid "Use ISO/IEC 3166 alpha2 country codes."
msgstr "ISO/IEC 3166 alpha2ã®å›½ã‚³ãƒ¼ãƒ‰ã‚’使用ã—ã¾ã™ã€‚"
msgid "Use MTU on tunnel interface"
-msgstr "トンãƒãƒ«ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®MTUを設定"
+msgstr "トンãƒãƒ« インターフェースã®MTUを設定"
msgid "Use TTL on tunnel interface"
-msgstr "トンãƒãƒ«ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®TTLを設定"
+msgstr "トンãƒãƒ« インターフェースã®TTLを設定"
msgid "Use as external overlay (/overlay)"
msgstr "外部オーãƒãƒ¼ãƒ¬ã‚¤ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ (/overlay)"
@@ -3545,7 +3534,7 @@ msgid "Use as root filesystem (/)"
msgstr "ルート ファイルシステムã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ (/)"
msgid "Use broadcast flag"
-msgstr "ブロードキャスト・フラグを使用ã™ã‚‹"
+msgstr "ブロードキャスト フラグを使用ã™ã‚‹"
msgid "Use builtin IPv6-management"
msgstr "ビルトインã®IPv6-マãƒã‚¸ãƒ¡ãƒ³ãƒˆã‚’使用ã™ã‚‹"
@@ -3554,10 +3543,10 @@ msgid "Use custom DNS servers"
msgstr "DNSサーãƒãƒ¼ã‚’手動ã§è¨­å®š"
msgid "Use default gateway"
-msgstr "デフォルトゲートウェイを使用ã™ã‚‹"
+msgstr "デフォルト ゲートウェイを使用ã™ã‚‹"
msgid "Use gateway metric"
-msgstr "ゲートウェイ・メトリックを使用ã™ã‚‹"
+msgstr "ゲートウェイ メトリックを使用ã™ã‚‹"
msgid "Use routing table"
msgstr ""
@@ -3738,9 +3727,6 @@ msgstr "å—ä¿¡ã—ãŸDNSリクエストをsyslogã¸è¨˜éŒ²ã—ã¾ã™"
msgid "Write system log to file"
msgstr "システムログをファイルã«æ›¸ã込む"
-msgid "XR Support"
-msgstr "XRサãƒãƒ¼ãƒˆ"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3752,8 +3738,8 @@ msgstr ""
"</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
-msgstr "Java Scriptを有効ã«ã—ãªã„å ´åˆã€LuCIã¯æ­£ã—ã動作ã—ã¾ã›ã‚“。"
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr "JavaScriptを有効ã«ã—ãªã„å ´åˆã€LuCIã¯æ­£ã—ã動作ã—ã¾ã›ã‚“。"
msgid ""
"Your Internet Explorer is too old to display this page correctly. Please "
@@ -3927,6 +3913,57 @@ msgstr "ã¯ã„"
msgid "« Back"
msgstr "« 戻る"
+#~ msgid "AR Support"
+#~ msgstr "ARサãƒãƒ¼ãƒˆ"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s 無線LANコントローラ"
+
+#~ msgid "Background Scan"
+#~ msgstr "ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã‚¹ã‚­ãƒ£ãƒ³"
+
+#~ msgid "Compression"
+#~ msgstr "圧縮"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "HWビーコンタイマーを無効ã«ã™ã‚‹"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "プローブレスãƒãƒ³ã‚¹ã‚’é€ä¿¡ã—ãªã„"
+
+#~ msgid "Fast Frames"
+#~ msgstr "ファスト・フレーム"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "最大レート"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "最å°ãƒ¬ãƒ¼ãƒˆ"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "マルãƒã‚­ãƒ£ã‚¹ãƒˆãƒ¬ãƒ¼ãƒˆ"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "屋外用周波数"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "è¦åˆ¶ãƒ‰ãƒ¡ã‚¤ãƒ³"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDSを分離ã™ã‚‹"
+
+#~ msgid "Static WDS"
+#~ msgstr "é™çš„WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "ターボモード"
+
+#~ msgid "XR Support"
+#~ msgstr "XRサãƒãƒ¼ãƒˆ"
+
+#~ msgid "Required. Public key of peer."
+#~ msgstr "ピアã®å…¬é–‹éµï¼ˆå¿…須)"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ãŒã‚ªãƒ•ã®å ´åˆã€è¿½åŠ ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãŒä½œæˆã•ã‚Œã¾ã™ã€‚"
diff --git a/modules/luci-base/po/ko/base.po b/modules/luci-base/po/ko/base.po
index 59372bd976..7683df180a 100644
--- a/modules/luci-base/po/ko/base.po
+++ b/modules/luci-base/po/ko/base.po
@@ -148,6 +148,11 @@ msgstr "<abbr title=\"maximal\">최대</abbr> ë™ì‹œ 처리 query 수"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr ""
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -166,9 +171,6 @@ msgstr ""
msgid "APN"
msgstr ""
-msgid "AR Support"
-msgstr ""
-
msgid "ARP retry threshold"
msgstr ""
@@ -406,9 +408,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "ì—°ê²°ëœ station 들"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
msgid "Auth Group"
msgstr ""
@@ -487,9 +486,6 @@ msgstr ""
msgid "Back to scan results"
msgstr ""
-msgid "Background Scan"
-msgstr ""
-
msgid "Backup / Flash Firmware"
msgstr "Firmware 백업 / Flash"
@@ -658,9 +654,6 @@ msgstr "명령어"
msgid "Common Configuration"
msgstr "공통 설정"
-msgid "Compression"
-msgstr ""
-
msgid "Configuration"
msgstr "설정"
@@ -883,9 +876,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
msgid "Disabled"
msgstr ""
@@ -929,9 +919,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr ""
-
msgid "Domain required"
msgstr ""
@@ -1127,9 +1114,6 @@ msgstr "외부 system log 서버 프로토콜"
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr ""
-
msgid "File"
msgstr ""
@@ -1165,6 +1149,9 @@ msgstr ""
msgid "Firewall"
msgstr "방화벽"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "방화벽 설정"
@@ -1210,6 +1197,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1601,12 +1591,15 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr ""
+msgid "Isolate Clients"
+msgstr ""
+
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
msgstr ""
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
msgid "Join Network"
@@ -1869,9 +1862,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr ""
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Active DHCP lease ê±´ì˜ ìµœëŒ€ 허용 숫ìž"
@@ -1907,9 +1897,6 @@ msgstr "메모리 사용량 (%)"
msgid "Metric"
msgstr ""
-msgid "Minimum Rate"
-msgstr ""
-
msgid "Minimum hold time"
msgstr ""
@@ -1981,9 +1968,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr ""
-
msgid "Multicast address"
msgstr ""
@@ -1996,6 +1980,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2189,8 +2176,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2227,9 +2219,6 @@ msgstr ""
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr ""
-
msgid "Output Interface"
msgstr ""
@@ -2411,6 +2400,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2601,9 +2596,6 @@ msgstr "ì¸í„°íŽ˜ì´ìŠ¤ 재연결중입니다"
msgid "References"
msgstr ""
-msgid "Regulatory Domain"
-msgstr ""
-
msgid "Relay"
msgstr ""
@@ -2652,15 +2644,15 @@ msgstr "특정 ISP ë“¤ì— ìš”êµ¬ë¨. 예: Charter (DOCSIS 3 기반)"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2805,9 +2797,6 @@ msgstr ""
msgid "Separate Clients"
msgstr ""
-msgid "Separate WDS"
-msgstr ""
-
msgid "Server Settings"
msgstr "서버 설정"
@@ -2831,6 +2820,11 @@ msgstr ""
msgid "Services"
msgstr "서비스"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2965,9 +2959,6 @@ msgstr "Static Lease 들"
msgid "Static Routes"
msgstr "Static Route 경로"
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3354,9 +3345,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr ""
-
msgid "Tx-Power"
msgstr ""
@@ -3642,9 +3630,6 @@ msgstr "ë°›ì€ DNS 요청 ë‚´ìš©ì„ systlog ì— ê¸°ë¡í•©ë‹ˆë‹¤"
msgid "Write system log to file"
msgstr "System log 출력 íŒŒì¼ ê²½ë¡œ"
-msgid "XR Support"
-msgstr ""
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3656,7 +3641,7 @@ msgstr ""
"다!</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
diff --git a/modules/luci-base/po/ms/base.po b/modules/luci-base/po/ms/base.po
index 517d237d91..f847e1a0c5 100644
--- a/modules/luci-base/po/ms/base.po
+++ b/modules/luci-base/po/ms/base.po
@@ -145,6 +145,11 @@ msgstr ""
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr ""
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -163,9 +168,6 @@ msgstr ""
msgid "APN"
msgstr ""
-msgid "AR Support"
-msgstr "AR-Penyokong"
-
msgid "ARP retry threshold"
msgstr ""
@@ -401,9 +403,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "Associated Stesen"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
msgid "Auth Group"
msgstr ""
@@ -482,9 +481,6 @@ msgstr "Kembali ke ikhtisar"
msgid "Back to scan results"
msgstr "Kembali ke keputusan scan"
-msgid "Background Scan"
-msgstr "Latar Belakang Scan"
-
msgid "Backup / Flash Firmware"
msgstr ""
@@ -640,9 +636,6 @@ msgstr "Perintah"
msgid "Common Configuration"
msgstr ""
-msgid "Compression"
-msgstr "Mampatan"
-
msgid "Configuration"
msgstr "Konfigurasi"
@@ -856,9 +849,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Mematikan pemasa HW-Beacon"
-
msgid "Disabled"
msgstr ""
@@ -904,9 +894,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr "Jangan menghantar jawapan penyelidikan"
-
msgid "Domain required"
msgstr "Domain diperlukan"
@@ -1099,9 +1086,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Frame Cepat"
-
msgid "File"
msgstr ""
@@ -1137,6 +1121,9 @@ msgstr "Selesai"
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Tetapan Firewall"
@@ -1182,6 +1169,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1577,6 +1567,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "Username dan / atau password tak sah! Sila cuba lagi."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1585,7 +1578,7 @@ msgstr ""
"Tampak bahawa anda cuba untuk flash fail gambar yang tidak sesuai dengan "
"memori flash, sila buat pengesahan pada fail gambar!"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
#, fuzzy
@@ -1847,9 +1840,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Rate Maksimum"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1886,9 +1876,6 @@ msgstr "Penggunaan Memori (%)"
msgid "Metric"
msgstr "Metrik"
-msgid "Minimum Rate"
-msgstr "Rate Minimum"
-
#, fuzzy
msgid "Minimum hold time"
msgstr "Memegang masa minimum"
@@ -1963,9 +1950,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr "Multicast Rate"
-
msgid "Multicast address"
msgstr ""
@@ -1978,6 +1962,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2170,8 +2157,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2208,9 +2200,6 @@ msgstr "Keluar"
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr "Saluran Outdoor"
-
msgid "Output Interface"
msgstr ""
@@ -2390,6 +2379,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2577,9 +2572,6 @@ msgstr ""
msgid "References"
msgstr "Rujukan"
-msgid "Regulatory Domain"
-msgstr "Peraturan Domain"
-
msgid "Relay"
msgstr ""
@@ -2628,15 +2620,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2781,9 +2773,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Pisahkan Pelanggan"
-msgid "Separate WDS"
-msgstr "Pisahkan WDS"
-
msgid "Server Settings"
msgstr ""
@@ -2807,6 +2796,11 @@ msgstr ""
msgid "Services"
msgstr "Perkhidmatan"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2942,9 +2936,6 @@ msgstr "Statische Einträge"
msgid "Static Routes"
msgstr "Laluan Statik"
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3328,9 +3319,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Mod Turbo"
-
msgid "Tx-Power"
msgstr ""
@@ -3610,9 +3598,6 @@ msgstr ""
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Sokongan XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3620,7 +3605,7 @@ msgid ""
msgstr ""
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
@@ -3789,3 +3774,45 @@ msgstr ""
msgid "« Back"
msgstr "« Kembali"
+
+#~ msgid "AR Support"
+#~ msgstr "AR-Penyokong"
+
+#~ msgid "Background Scan"
+#~ msgstr "Latar Belakang Scan"
+
+#~ msgid "Compression"
+#~ msgstr "Mampatan"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Mematikan pemasa HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Jangan menghantar jawapan penyelidikan"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Frame Cepat"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Rate Maksimum"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Rate Minimum"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicast Rate"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Saluran Outdoor"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Peraturan Domain"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Pisahkan WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Mod Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Sokongan XR"
diff --git a/modules/luci-base/po/no/base.po b/modules/luci-base/po/no/base.po
index d17e4aadd9..65fc39e39a 100644
--- a/modules/luci-base/po/no/base.po
+++ b/modules/luci-base/po/no/base.po
@@ -147,6 +147,11 @@ msgstr "<abbr title=\"Maksimal\">Maks.</abbr> samtidige spørringer"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr "<abbr title='Parvis: %s / Gruppe: %s'>%s - %s</abbr>"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -165,9 +170,6 @@ msgstr ""
msgid "APN"
msgstr "<abbr title=\"Aksesspunkt Navn\">APN</abbr>"
-msgid "AR Support"
-msgstr "AR Støtte"
-
msgid "ARP retry threshold"
msgstr "APR terskel for nytt forsøk"
@@ -410,9 +412,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "Tilkoblede Klienter"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s Trådløs Kontroller"
-
msgid "Auth Group"
msgstr ""
@@ -491,9 +490,6 @@ msgstr "Tilbake til oversikt"
msgid "Back to scan results"
msgstr "Tilbake til skanne resultat"
-msgid "Background Scan"
-msgstr "Bakgrunns Skanning"
-
msgid "Backup / Flash Firmware"
msgstr "Sikkerhetskopiering/Firmware oppgradering"
@@ -662,9 +658,6 @@ msgstr "Kommando"
msgid "Common Configuration"
msgstr "Vanlige Innstillinger"
-msgid "Compression"
-msgstr "Komprimering"
-
msgid "Configuration"
msgstr "Konfigurasjon"
@@ -884,9 +877,6 @@ msgstr "Deaktiver DNS oppsett"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Deaktiver HW-Beacon timer"
-
msgid "Disabled"
msgstr "Deaktivert"
@@ -933,9 +923,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Ikke videresend reverserte oppslag for lokale nettverk"
-msgid "Do not send probe responses"
-msgstr "Ikke send probe svar"
-
msgid "Domain required"
msgstr "Domene kreves"
@@ -1135,9 +1122,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Fast Frames"
-
msgid "File"
msgstr "Fil"
@@ -1173,6 +1157,9 @@ msgstr "Fullfør"
msgid "Firewall"
msgstr "Brannmur"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Brannmur Innstillinger"
@@ -1219,6 +1206,9 @@ msgstr "Bruk TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Bruk TKIP og CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1615,6 +1605,9 @@ msgstr "Ugyldig VLAN ID gitt! Bare unike ID'er er tillatt"
msgid "Invalid username and/or password! Please try again."
msgstr "Ugyldig brukernavn og/eller passord! Vennligst prøv igjen."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1623,8 +1616,8 @@ msgstr ""
"Det virker som du prøver å flashe med en firmware som ikke passer inn i "
"flash-minnet, vennligst kontroller firmware filen!"
-msgid "Java Script required!"
-msgstr "Java Script kreves!"
+msgid "JavaScript required!"
+msgstr "JavaScript kreves!"
msgid "Join Network"
msgstr "Koble til nettverket"
@@ -1892,9 +1885,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Maksimal hastighet"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Maksimalt antall aktive DHCP leieavtaler"
@@ -1930,9 +1920,6 @@ msgstr "Minne forbruk (%)"
msgid "Metric"
msgstr "Metrisk"
-msgid "Minimum Rate"
-msgstr "Minimum hastighet"
-
msgid "Minimum hold time"
msgstr "Minimum holde tid"
@@ -2006,9 +1993,6 @@ msgstr "Flytt ned"
msgid "Move up"
msgstr "Flytt opp"
-msgid "Multicast Rate"
-msgstr "Multicast hastighet"
-
msgid "Multicast address"
msgstr "Multicast adresse"
@@ -2021,6 +2005,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2214,8 +2201,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2252,9 +2244,6 @@ msgstr "Ut"
msgid "Outbound:"
msgstr "Ugående:"
-msgid "Outdoor Channels"
-msgstr "Utendørs Kanaler"
-
msgid "Output Interface"
msgstr ""
@@ -2436,6 +2425,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2638,9 +2633,6 @@ msgstr "Kobler til igjen"
msgid "References"
msgstr "Referanser"
-msgid "Regulatory Domain"
-msgstr "Regulerende Domene"
-
msgid "Relay"
msgstr "Relay"
@@ -2689,15 +2681,15 @@ msgstr "Er nødvendig for noen nettleverandører, f.eks Charter med DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2844,9 +2836,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Separerte Klienter"
-msgid "Separate WDS"
-msgstr "Separert WDS"
-
msgid "Server Settings"
msgstr "Server Innstillinger"
@@ -2870,6 +2859,11 @@ msgstr "Tjeneste type"
msgid "Services"
msgstr "Tjenester"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Oppsett tidssynkronisering"
@@ -3009,9 +3003,6 @@ msgstr "Statiske Leier"
msgid "Static Routes"
msgstr "Statiske Ruter"
-msgid "Static WDS"
-msgstr "Statisk WDS"
-
msgid "Static address"
msgstr "Statisk adresse"
@@ -3433,9 +3424,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Turbo Modus"
-
msgid "Tx-Power"
msgstr "Tx-Styrke"
@@ -3722,9 +3710,6 @@ msgstr "Skriv mottatte DNS forespørsler til syslog"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "XR Støtte"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3736,9 +3721,9 @@ msgstr ""
"utilgjengelig! </strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Du må aktivere Java Script i nettleseren din ellers vil ikke LuCI fungere "
+"Du må aktivere JavaScript i nettleseren din ellers vil ikke LuCI fungere "
"skikkelig."
msgid ""
@@ -3910,6 +3895,54 @@ msgstr "ja"
msgid "« Back"
msgstr "« Tilbake"
+#~ msgid "AR Support"
+#~ msgstr "AR Støtte"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s Trådløs Kontroller"
+
+#~ msgid "Background Scan"
+#~ msgstr "Bakgrunns Skanning"
+
+#~ msgid "Compression"
+#~ msgstr "Komprimering"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Deaktiver HW-Beacon timer"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Ikke send probe svar"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Fast Frames"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Maksimal hastighet"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Minimum hastighet"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicast hastighet"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Utendørs Kanaler"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Regulerende Domene"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Separert WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "Statisk WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo Modus"
+
+#~ msgid "XR Support"
+#~ msgstr "XR Støtte"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Et nytt nettverk vil bli opprettet hvis du tar bort haken."
diff --git a/modules/luci-base/po/pl/base.po b/modules/luci-base/po/pl/base.po
index 8b0368bdeb..2223f53078 100644
--- a/modules/luci-base/po/pl/base.po
+++ b/modules/luci-base/po/pl/base.po
@@ -152,6 +152,11 @@ msgstr "<abbr title=\"Maksymalna ilość\">Maks.</abbr> zapytań równoczesnych"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr "<abbr title='Par: %s / Grup: %s'>%s - %s</abbr>"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -170,10 +175,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-# Wydaje mi się że brakuje litery R...
-msgid "AR Support"
-msgstr "Wsparcie dla ARP"
-
msgid "ARP retry threshold"
msgstr "Próg powtórzeń ARP"
@@ -425,9 +426,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "Połączone stacje"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Bezprzewodowy kontroler Atheros 802.11%s"
-
msgid "Auth Group"
msgstr ""
@@ -507,9 +505,6 @@ msgstr "Wróć do przeglądu"
msgid "Back to scan results"
msgstr "Wróć do wyników skanowania"
-msgid "Background Scan"
-msgstr "Skanowanie w tle"
-
msgid "Backup / Flash Firmware"
msgstr "Kopia zapasowa/aktualizacja firmware"
@@ -681,9 +676,6 @@ msgstr "Polecenie"
msgid "Common Configuration"
msgstr "Konfiguracja podstawowa"
-msgid "Compression"
-msgstr "Kompresja"
-
msgid "Configuration"
msgstr "Konfiguracja"
@@ -906,9 +898,6 @@ msgstr "Wyłącz konfigurowanie DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Wyłącz zegar HW-Beacon"
-
msgid "Disabled"
msgstr "Wyłączony"
@@ -957,9 +946,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Nie przekazuj odwrotnych lookup`ów do sieci lokalnych"
-msgid "Do not send probe responses"
-msgstr "Nie wysyłaj ramek probe response"
-
msgid "Domain required"
msgstr "Wymagana domena"
@@ -1166,9 +1152,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Szybkie ramki (Fast Frames)"
-
msgid "File"
msgstr "Plik"
@@ -1204,6 +1187,9 @@ msgstr "Zakończ"
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
# Nie ma potrzeby pisania z dużej litery
msgid "Firewall Settings"
msgstr "Ustawienia firewalla"
@@ -1251,6 +1237,9 @@ msgstr "WymuÅ› TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "WymuÅ› TKIP i CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1660,6 +1649,9 @@ msgstr "Podano niewłaściwy ID VLAN`u! Dozwolone są tylko unikalne ID."
msgid "Invalid username and/or password! Please try again."
msgstr "Niewłaściwy login i/lub hasło! Spróbuj ponownie."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1668,8 +1660,8 @@ msgstr ""
"Wygląda na to, że próbujesz wgrać obraz większy niż twoja pamięć flash, "
"proszę sprawdź czy to właściwy obraz!"
-msgid "Java Script required!"
-msgstr "Java Script jest wymagany!"
+msgid "JavaScript required!"
+msgstr "JavaScript jest wymagany!"
msgid "Join Network"
msgstr "Połącz z siecią"
@@ -1938,9 +1930,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Maksymalna Szybkość"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Maksymalna dozwolona liczba aktywnych dzierżaw DHCP"
@@ -1976,9 +1965,6 @@ msgstr "Użycie pamięci (%)"
msgid "Metric"
msgstr "Metryka"
-msgid "Minimum Rate"
-msgstr "Minimalna Szybkość"
-
msgid "Minimum hold time"
msgstr "Minimalny czas podtrzymania"
@@ -2052,9 +2038,6 @@ msgstr "Przesuń w dół"
msgid "Move up"
msgstr "Przesuń w górę"
-msgid "Multicast Rate"
-msgstr "Szybkość Multicast`u"
-
msgid "Multicast address"
msgstr "Adres Multicast`u"
@@ -2067,6 +2050,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2259,8 +2245,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2297,9 +2288,6 @@ msgstr "WychodzÄ…ce"
msgid "Outbound:"
msgstr "WychodzÄ…cy:"
-msgid "Outdoor Channels"
-msgstr "Kanały zewnętrzne"
-
msgid "Output Interface"
msgstr ""
@@ -2483,6 +2471,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2687,9 +2681,6 @@ msgstr "ÅÄ…czÄ™ ponownie interfejs"
msgid "References"
msgstr "Referencje"
-msgid "Regulatory Domain"
-msgstr "Domena regulacji"
-
msgid "Relay"
msgstr "Przekaźnik"
@@ -2738,15 +2729,15 @@ msgstr "Wymagany dla niektórych dostawców internetu, np. Charter z DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2895,9 +2886,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Rozdziel klientów"
-msgid "Separate WDS"
-msgstr "Rozdziel WDS"
-
msgid "Server Settings"
msgstr "Ustawienia serwera"
@@ -2921,6 +2909,11 @@ msgstr "Typ serwisu"
msgid "Services"
msgstr "Serwisy"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Ustawienia synchronizacji czasu"
@@ -3062,9 +3055,6 @@ msgstr "Dzierżawy statyczne"
msgid "Static Routes"
msgstr "Statyczne ścieżki routingu"
-msgid "Static WDS"
-msgstr "Statyczny WDS"
-
msgid "Static address"
msgstr "Stały adres"
@@ -3496,9 +3486,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Tryb Turbo"
-
msgid "Tx-Power"
msgstr "Moc nadawania"
@@ -3787,9 +3774,6 @@ msgstr "Zapisz otrzymane żądania DNS do syslog'a"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Wsparcie XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3801,9 +3785,9 @@ msgstr ""
"siÄ™ nieosiÄ…galne!</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Musisz włączyć obsługę Java Script w swojej przeglądarce, inaczej LuCI nie "
+"Musisz włączyć obsługę JavaScript w swojej przeglądarce, inaczej LuCI nie "
"będzie działać poprawnie."
msgid ""
@@ -3976,6 +3960,55 @@ msgstr "tak"
msgid "« Back"
msgstr "« Wróć"
+# Wydaje mi się że brakuje litery R...
+#~ msgid "AR Support"
+#~ msgstr "Wsparcie dla ARP"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Bezprzewodowy kontroler Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "Skanowanie w tle"
+
+#~ msgid "Compression"
+#~ msgstr "Kompresja"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Wyłącz zegar HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Nie wysyłaj ramek probe response"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Szybkie ramki (Fast Frames)"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Maksymalna Szybkość"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Minimalna Szybkość"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Szybkość Multicast`u"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Kanały zewnętrzne"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Domena regulacji"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Rozdziel WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "Statyczny WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Tryb Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Wsparcie XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr ""
#~ "Zostanie utworzona dodatkowa sieć jeśli zostawisz tą opcję niezaznaczoną."
diff --git a/modules/luci-base/po/pt-br/base.po b/modules/luci-base/po/pt-br/base.po
index 413cc79296..2767ceea5d 100644
--- a/modules/luci-base/po/pt-br/base.po
+++ b/modules/luci-base/po/pt-br/base.po
@@ -1,20 +1,20 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2014-03-29 23:31+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-02-22 20:30-0300\n"
+"Last-Translator: Luiz Angelo Daros de Luca <luizluca@gmail.com>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"Language-Team: \n"
msgid "%s is untagged in multiple VLANs!"
-msgstr ""
+msgstr "%s está sem etiqueta em múltiplas VLANs!"
msgid "(%d minute window, %d second interval)"
msgstr "(janela de %d minutos, intervalo de %d segundos)"
@@ -38,13 +38,15 @@ msgid "-- custom --"
msgstr "-- personalizado --"
msgid "-- match by device --"
-msgstr ""
+msgstr "-- casar por dispositivo --"
msgid "-- match by label --"
-msgstr ""
+msgstr "-- casar por rótulo --"
msgid "-- match by uuid --"
msgstr ""
+"-- casar por <abbr title=\"Universal Unique IDentifier/Identificador Único "
+"Universal\">UUID</abbr> --"
msgid "1 Minute Load:"
msgstr "Carga 1 Minuto:"
@@ -53,34 +55,36 @@ msgid "15 Minute Load:"
msgstr "Carga 15 Minutos:"
msgid "4-character hexadecimal ID"
-msgstr ""
+msgstr "Identificador hexadecimal de 4 caracteres"
msgid "464XLAT (CLAT)"
-msgstr ""
+msgstr "464XLAT (CLAT)"
msgid "5 Minute Load:"
msgstr "Carga 5 Minutos:"
msgid "6-octet identifier as a hex string - no colons"
msgstr ""
+"Identificador de 6 octetos como uma cadeia hexadecimal - sem dois pontos"
msgid "802.11r Fast Transition"
-msgstr ""
+msgstr "802.11r Fast Transition"
msgid "802.11w Association SA Query maximum timeout"
-msgstr ""
+msgstr "Tempo de expiração máximo da consulta da Associação SA do 802.11w"
msgid "802.11w Association SA Query retry timeout"
msgstr ""
+"Tempo de expiração de tentativa de consulta da Associação SA do 802.11w"
msgid "802.11w Management Frame Protection"
-msgstr ""
+msgstr "Proteção do Quadro de Gerenciamento do 802.11w"
msgid "802.11w maximum timeout"
-msgstr ""
+msgstr "Estouro de tempo máximo do 802.11w"
msgid "802.11w retry timeout"
-msgstr ""
+msgstr "Estouro de tempo da nova tentativa do 802.11w"
msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
msgstr ""
@@ -127,6 +131,8 @@ msgstr "Roteador <abbr title=\"Protocolo de Internet Versão 6\">IPv6</abbr>"
msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
msgstr ""
+"<abbr title=\"Internet Protocol Version 6/Protocolo Internet Versão "
+"6\">IPv6</abbr>-Suffix (hex)"
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "Configuração do <abbr title=\"Diodo Emissor de Luz\">LED</abbr>"
@@ -157,43 +163,53 @@ msgstr "Número máximo de consultas concorrentes"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr "<abbr title='Par: %s / Grupo: %s'>%s - %s</abbr>"
-msgid "A43C + J43 + A43"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
msgstr ""
+msgid "A43C + J43 + A43"
+msgstr "A43C + J43 + A43"
+
msgid "A43C + J43 + A43 + V43"
-msgstr ""
+msgstr "A43C + J43 + A43 + V43"
msgid "ADSL"
msgstr ""
+"<abbr title=\"Assymetrical Digital Subscriber Line/Linha Digital Assimétrica "
+"para Assinante\">ADSL</abbr>"
msgid "AICCU (SIXXS)"
msgstr ""
+"<abbr title=\"Automatic IPv6 Connectivity Client Utility/Utilitário Cliente "
+"de Conectividade IPv6 Automática\">AICCU (SIXXS)</abbr>"
msgid "ANSI T1.413"
-msgstr ""
+msgstr "ANSI T1.413"
msgid "APN"
msgstr "<abbr title=\"Access Point Name\">APN</abbr>"
-msgid "AR Support"
-msgstr "Suporte AR"
-
msgid "ARP retry threshold"
msgstr ""
"Limite de retentativas do <abbr title=\"Address Resolution Protocol\">ARP</"
"abbr>"
msgid "ATM (Asynchronous Transfer Mode)"
-msgstr ""
+msgstr "ATM (Asynchronous Transfer Mode)"
msgid "ATM Bridges"
msgstr "Ponte ATM"
msgid "ATM Virtual Channel Identifier (VCI)"
-msgstr "Identificador de Canal Virtual ATM (VCI)"
+msgstr ""
+"Identificador de Canal Virtual ATM (<abbr title=\"Virtual Channel Identifier"
+"\">VCI</abbr>)"
msgid "ATM Virtual Path Identifier (VPI)"
-msgstr "Identificador de Caminho Virtual ATM (VPI)"
+msgstr ""
+"Identificador de Caminho Virtual ATM (<abbr title=\"Virtual Path Identifier"
+"\">VPI</abbr>)"
msgid ""
"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual "
@@ -208,10 +224,10 @@ msgid "ATM device number"
msgstr "Número do dispositivo ATM"
msgid "ATU-C System Vendor ID"
-msgstr ""
+msgstr "Identificador de"
msgid "AYIYA"
-msgstr ""
+msgstr "AYIYA"
msgid "Access Concentrator"
msgstr "Concentrador de Acesso"
@@ -261,7 +277,7 @@ msgid "Additional Hosts files"
msgstr "Arquivos adicionais de equipamentos conhecidos (hosts)"
msgid "Additional servers file"
-msgstr ""
+msgstr "Arquivo de servidores adicionais"
msgid "Address"
msgstr "Endereço"
@@ -277,6 +293,8 @@ msgstr "Opções Avançadas"
msgid "Aggregate Transmit Power(ACTATP)"
msgstr ""
+"Potência de Transmissão Agregada (<abbr title=\"Aggregate Transmit Power"
+"\">ACTATP</abbr>)"
msgid "Alert"
msgstr "Alerta"
@@ -285,9 +303,11 @@ msgid ""
"Allocate IP addresses sequentially, starting from the lowest available "
"address"
msgstr ""
+"Alocar endereços IP sequencialmente, iniciando a partir do endereço mais "
+"baixo disponível"
msgid "Allocate IP sequentially"
-msgstr ""
+msgstr "Alocar endereços IP sequencialmente"
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr ""
@@ -320,78 +340,81 @@ msgstr ""
"exemplo, para os serviços RBL"
msgid "Allowed IPs"
-msgstr ""
+msgstr "Endereços IP autorizados"
msgid ""
"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison"
"\">Tunneling Comparison</a> on SIXXS"
msgstr ""
+"Veja também a <a href=\"https://www.sixxs.net/faq/connectivity/?"
+"faq=comparison\">Comparação de Tunelamentos</a> em SIXXS"
msgid "Always announce default router"
-msgstr ""
+msgstr "Sempre anuncie o roteador padrão"
msgid "Annex"
-msgstr ""
+msgstr "Anexo"
msgid "Annex A + L + M (all)"
-msgstr ""
+msgstr "Anexos A + L + M (todo)"
msgid "Annex A G.992.1"
-msgstr ""
+msgstr "Anexo A G.992.1"
msgid "Annex A G.992.2"
-msgstr ""
+msgstr "Anexo A G.992.2"
msgid "Annex A G.992.3"
-msgstr ""
+msgstr "Anexo A G.992.3"
msgid "Annex A G.992.5"
-msgstr ""
+msgstr "Anexo A G.992.5"
msgid "Annex B (all)"
-msgstr ""
+msgstr "Anexo B (todo)"
msgid "Annex B G.992.1"
-msgstr ""
+msgstr "Anexo B G.992.1"
msgid "Annex B G.992.3"
-msgstr ""
+msgstr "Anexo B G.992.3"
msgid "Annex B G.992.5"
-msgstr ""
+msgstr "Anexo B G.992.5"
msgid "Annex J (all)"
-msgstr ""
+msgstr "Anexo J (todo)"
msgid "Annex L G.992.3 POTS 1"
-msgstr ""
+msgstr "Anexo L G.992.3 POTS 1"
msgid "Annex M (all)"
-msgstr ""
+msgstr "Anexo M (todo)"
msgid "Annex M G.992.3"
-msgstr ""
+msgstr "Anexo M G.992.3"
msgid "Annex M G.992.5"
-msgstr ""
+msgstr "Anexo M G.992.5"
msgid "Announce as default router even if no public prefix is available."
msgstr ""
+"Anuncie-se como rotador padrão mesmo se não existir um prefixo público."
msgid "Announced DNS domains"
-msgstr ""
+msgstr "Domínios DNS anunciados"
msgid "Announced DNS servers"
-msgstr ""
+msgstr "Servidores DNS anunciados"
msgid "Anonymous Identity"
-msgstr ""
+msgstr "Identidade Anônima"
msgid "Anonymous Mount"
-msgstr ""
+msgstr "Montagem Anônima"
msgid "Anonymous Swap"
-msgstr ""
+msgstr "Espaço de Troca (swap) Anônimo"
msgid "Antenna 1"
msgstr "Antena 1"
@@ -414,6 +437,8 @@ msgstr "Aplicar as alterações"
msgid ""
"Assign a part of given length of every public IPv6-prefix to this interface"
msgstr ""
+"Atribua uma parte do comprimento de cada prefixo IPv6 público para esta "
+"interface"
msgid "Assign interfaces..."
msgstr "atribuir as interfaces"
@@ -421,24 +446,23 @@ msgstr "atribuir as interfaces"
msgid ""
"Assign prefix parts using this hexadecimal subprefix ID for this interface."
msgstr ""
+"Atribua partes do prefixo usando este identificador hexadecimal do "
+"subprefixo para esta interface"
msgid "Associated Stations"
msgstr "Estações associadas"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Controlador Wireless Atheros 802.11%s"
-
msgid "Auth Group"
-msgstr ""
+msgstr "Grupo de Autenticação"
msgid "AuthGroup"
-msgstr ""
+msgstr "Grupo de Autenticação"
msgid "Authentication"
msgstr "Autenticação"
msgid "Authentication Type"
-msgstr ""
+msgstr "Tipo de Autenticação"
msgid "Authoritative"
msgstr "Autoritário"
@@ -450,25 +474,29 @@ msgid "Auto Refresh"
msgstr "Atualização Automática"
msgid "Automatic"
-msgstr ""
+msgstr "Automático"
msgid "Automatic Homenet (HNCP)"
msgstr ""
+"Rede Doméstica Automática (<abbr title=\"Homenet Control Protocol\">HNCP</"
+"abbr>)"
msgid "Automatically check filesystem for errors before mounting"
msgstr ""
+"Execute automaticamente a verificação do sistema de arquivos antes da "
+"montagem do dispositivo"
msgid "Automatically mount filesystems on hotplug"
-msgstr ""
+msgstr "Monte automaticamente o espaço de troca (swap) ao conectar"
msgid "Automatically mount swap on hotplug"
-msgstr ""
+msgstr "Monte automaticamente o espaço de troca (swap) ao conectar"
msgid "Automount Filesystem"
-msgstr ""
+msgstr "Montagem Automática de Sistema de Arquivo"
msgid "Automount Swap"
-msgstr ""
+msgstr "Montagem Automática do Espaço de Troca (swap) "
msgid "Available"
msgstr "Disponível"
@@ -480,13 +508,13 @@ msgid "Average:"
msgstr "Média:"
msgid "B43 + B43C"
-msgstr ""
+msgstr "B43 + B43C"
msgid "B43 + B43C + V43"
-msgstr ""
+msgstr "B43 + B43C + V43"
msgid "BR / DMR / AFTR"
-msgstr ""
+msgstr "BR / DMR / AFTR"
msgid "BSSID"
msgstr "BSSID"
@@ -506,9 +534,6 @@ msgstr "Voltar para visão geral"
msgid "Back to scan results"
msgstr "Voltar para os resultados da busca"
-msgid "Background Scan"
-msgstr "Busca em Segundo Plano"
-
msgid "Backup / Flash Firmware"
msgstr "Cópia de Segurança / Gravar Firmware"
@@ -522,10 +547,10 @@ msgid "Bad address specified!"
msgstr "Endereço especificado está incorreto!"
msgid "Band"
-msgstr ""
+msgstr "Banda"
msgid "Behind NAT"
-msgstr ""
+msgstr "Atrás da NAT"
msgid ""
"Below is the determined list of files to backup. It consists of changed "
@@ -537,13 +562,15 @@ msgstr ""
"padrões para a cópia de segurança definidos pelo usuário."
msgid "Bind interface"
-msgstr ""
+msgstr "Interface Vinculada"
msgid "Bind only to specific interfaces rather than wildcard address."
msgstr ""
+"Vincule somente para as explicitamenteinterfaces ao invés do endereço "
+"coringa."
msgid "Bind the tunnel to this interface (optional)."
-msgstr ""
+msgstr "Vincule o túnel a esta interface (opcional)"
msgid "Bitrate"
msgstr "Taxa de bits"
@@ -576,12 +603,15 @@ msgid ""
"Build/distribution specific feed definitions. This file will NOT be "
"preserved in any sysupgrade."
msgstr ""
+"Fonte de pacotes específico da compilação/distribuição. Esta NÃO será "
+"preservada em qualquer atualização do sistema."
msgid "Buttons"
msgstr "Botões"
msgid "CA certificate; if empty it will be saved after the first connection."
msgstr ""
+"Certificado da CA; se em branco, será salvo depois da primeira conexão."
msgid "CPU usage (%)"
msgstr "Uso da CPU (%)"
@@ -590,7 +620,7 @@ msgid "Cancel"
msgstr "Cancelar"
msgid "Category"
-msgstr ""
+msgstr "Categoria"
msgid "Chain"
msgstr "Cadeia"
@@ -612,9 +642,10 @@ msgstr "Verificar"
msgid "Check fileystems before mount"
msgstr ""
+"Execute a verificação do sistema de arquivos antes da montagem do dispositivo"
msgid "Check this option to delete the existing networks from this radio."
-msgstr ""
+msgstr "Marque esta opção para remover as redes existentes neste rádio."
msgid "Checksum"
msgstr "Soma de verificação"
@@ -641,7 +672,7 @@ msgid "Cipher"
msgstr "Cifra"
msgid "Cisco UDP encapsulation"
-msgstr ""
+msgstr "Encapsulamento UDP da Cisco"
msgid ""
"Click \"Generate archive\" to download a tar archive of the current "
@@ -678,9 +709,6 @@ msgstr "Comando"
msgid "Common Configuration"
msgstr "Configuração Comum"
-msgid "Compression"
-msgstr "Compressão"
-
msgid "Configuration"
msgstr "Configuração"
@@ -703,7 +731,7 @@ msgid "Connection Limit"
msgstr "Limite de conexão"
msgid "Connection to server fails when TLS cannot be used"
-msgstr ""
+msgstr "A conexão para este servidor falhará quando o TLS não puder ser usado"
msgid "Connections"
msgstr "Conexões"
@@ -739,15 +767,17 @@ msgid "Custom Interface"
msgstr "Interface Personalizada"
msgid "Custom delegated IPv6-prefix"
-msgstr ""
+msgstr "Prefixo IPv6 delegado personalizado"
msgid ""
"Custom feed definitions, e.g. private feeds. This file can be preserved in a "
"sysupgrade."
msgstr ""
+"Definições de fonte de pacotes personalizadas, ex: fontes privadas. Este "
+"arquivo será preservado em uma atualização do sistema."
msgid "Custom feeds"
-msgstr ""
+msgstr "Fontes de pacotes customizadas"
msgid ""
"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
@@ -775,13 +805,13 @@ msgid "DHCPv6 Leases"
msgstr "Alocações DHCPv6"
msgid "DHCPv6 client"
-msgstr ""
+msgstr "Cliente DHCPv6"
msgid "DHCPv6-Mode"
-msgstr ""
+msgstr "Modo DHCPv6"
msgid "DHCPv6-Service"
-msgstr ""
+msgstr "Serviço DHCPv6"
msgid "DNS"
msgstr "DNS"
@@ -790,34 +820,34 @@ msgid "DNS forwardings"
msgstr "Encaminhamentos DNS"
msgid "DNS-Label / FQDN"
-msgstr ""
+msgstr "Rótulo DNS / FQDN"
msgid "DNSSEC"
-msgstr ""
+msgstr "DNSSEC"
msgid "DNSSEC check unsigned"
-msgstr ""
+msgstr "Verificar DNSSEC sem assinatura"
msgid "DPD Idle Timeout"
-msgstr ""
+msgstr "Tempo de expiração para ociosidade do DPD"
msgid "DS-Lite AFTR address"
-msgstr ""
+msgstr "Endereço DS-Lite AFTR"
msgid "DSL"
-msgstr ""
+msgstr "DSL"
msgid "DSL Status"
-msgstr ""
+msgstr "Estado da DSL"
msgid "DSL line mode"
-msgstr ""
+msgstr "Modo de linha DSL"
msgid "DUID"
msgstr "DUID"
msgid "Data Rate"
-msgstr ""
+msgstr "Taxa de Dados"
msgid "Debug"
msgstr "Depurar"
@@ -829,10 +859,10 @@ msgid "Default gateway"
msgstr "Roteador Padrão"
msgid "Default is stateless + stateful"
-msgstr ""
+msgstr "O padrão é sem estado + com estado"
msgid "Default route"
-msgstr ""
+msgstr "Rota padrão"
msgid "Default state"
msgstr "Estado padrão"
@@ -871,10 +901,10 @@ msgid "Device Configuration"
msgstr "Configuração do Dispositivo"
msgid "Device is rebooting..."
-msgstr ""
+msgstr "O dispositivo está reiniciando..."
msgid "Device unreachable"
-msgstr ""
+msgstr "Dispositivo não alcançável"
msgid "Diagnostics"
msgstr "Diagnóstico"
@@ -899,16 +929,13 @@ msgid "Disable DNS setup"
msgstr "Desabilita a configuração do DNS"
msgid "Disable Encryption"
-msgstr ""
-
-msgid "Disable HW-Beacon timer"
-msgstr "Desativar temporizador de Beacon de Hardware"
+msgstr "Desabilitar Cifragem"
msgid "Disabled"
msgstr "Desabilitado"
msgid "Disabled (default)"
-msgstr ""
+msgstr "Desabilitado (padrão)"
msgid "Discard upstream RFC1918 responses"
msgstr ""
@@ -924,7 +951,7 @@ msgid "Distance to farthest network member in meters."
msgstr "Distância para o computador mais distante da rede (em metros)."
msgid "Distribution feeds"
-msgstr ""
+msgstr "Fontes de pacotes da distribuição"
msgid "Diversity"
msgstr "Diversidade"
@@ -953,9 +980,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Não encaminhe buscas por endereço reverso das redes local"
-msgid "Do not send probe responses"
-msgstr "Não enviar respostas de exames"
-
msgid "Domain required"
msgstr "Requerer domínio"
@@ -963,7 +987,7 @@ msgid "Domain whitelist"
msgstr "Lista branca de domínios"
msgid "Don't Fragment"
-msgstr ""
+msgstr "Não Fragmentar"
msgid ""
"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
@@ -991,7 +1015,7 @@ msgstr ""
"integrado"
msgid "Dual-Stack Lite (RFC6333)"
-msgstr ""
+msgstr "Duas Pilhas Leve (RFC6333)"
msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
msgstr ""
@@ -1009,7 +1033,7 @@ msgstr ""
"somente os clientes com atribuições estáticas serão servidos. "
msgid "EA-bits length"
-msgstr ""
+msgstr "Comprimento dos bits EA"
msgid "EAP-Method"
msgstr "Método EAP"
@@ -1021,6 +1045,8 @@ msgid ""
"Edit the raw configuration data above to fix any error and hit \"Save\" to "
"reload the page."
msgstr ""
+"Edite os dados de configuração brutos abaixo para arrumar qualquer erro e "
+"clique em \"Salvar\" para recarregar a página."
msgid "Edit this interface"
msgstr "Editar esta interface"
@@ -1041,7 +1067,7 @@ msgid "Enable HE.net dynamic endpoint update"
msgstr "Ativar a atualização de ponto final dinâmico HE.net"
msgid "Enable IPv6 negotiation"
-msgstr ""
+msgstr "Ativar a negociação de IPv6"
msgid "Enable IPv6 negotiation on the PPP link"
msgstr "Ativar a negociação de IPv6 no enlace PPP"
@@ -1053,7 +1079,7 @@ msgid "Enable NTP client"
msgstr "Ativar o cliente <abbr title=\"Network Time Protocol\">NTP</abbr>"
msgid "Enable Single DES"
-msgstr ""
+msgstr "Habilitar DES Simples"
msgid "Enable TFTP server"
msgstr "Ativar servidor TFTP"
@@ -1062,19 +1088,19 @@ msgid "Enable VLAN functionality"
msgstr "Ativar funcionalidade de VLAN"
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
-msgstr ""
+msgstr "Habilite o botão WPS. requer WPA(2)-PSK"
msgid "Enable learning and aging"
msgstr "Ativar o aprendizado e obsolescência"
msgid "Enable mirroring of incoming packets"
-msgstr ""
+msgstr "Habilitar espelhamento dos pacotes entrantes"
msgid "Enable mirroring of outgoing packets"
-msgstr ""
+msgstr "Habilitar espelhamento dos pacotes saintes"
msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
-msgstr ""
+msgstr "Habilita o campo DF (Não Fragmentar) dos pacotes encapsulados."
msgid "Enable this mount"
msgstr "Ativar esta montagem"
@@ -1092,6 +1118,8 @@ msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
msgstr ""
+"Ativa a troca rápida entre pontos de acesso que pertencem ao mesmo Domínio "
+"de Mobilidade"
msgid "Enables the Spanning Tree Protocol on this bridge"
msgstr "Ativa o protocolo STP nesta ponte"
@@ -1103,10 +1131,10 @@ msgid "Encryption"
msgstr "Cifragem"
msgid "Endpoint Host"
-msgstr ""
+msgstr "Equipamento do ponto final"
msgid "Endpoint Port"
-msgstr ""
+msgstr "Porta do ponto final"
msgid "Erasing..."
msgstr "Apagando..."
@@ -1115,7 +1143,7 @@ msgid "Error"
msgstr "Erro"
msgid "Errored seconds (ES)"
-msgstr ""
+msgstr "Segundos com erro (ES)"
msgid "Ethernet Adapter"
msgstr "Adaptador Ethernet"
@@ -1124,7 +1152,7 @@ msgid "Ethernet Switch"
msgstr "Switch Ethernet"
msgid "Exclude interfaces"
-msgstr ""
+msgstr "Excluir interfaces"
msgid "Expand hosts"
msgstr "Expandir arquivos de equipamentos conhecidos (hosts)"
@@ -1132,7 +1160,6 @@ msgstr "Expandir arquivos de equipamentos conhecidos (hosts)"
msgid "Expires"
msgstr "Expira"
-#, fuzzy
msgid ""
"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
msgstr ""
@@ -1140,13 +1167,13 @@ msgstr ""
"code>)."
msgid "External"
-msgstr ""
+msgstr "Externo"
msgid "External R0 Key Holder List"
-msgstr ""
+msgstr "Lista dos Detentor de Chave R0 Externa"
msgid "External R1 Key Holder List"
-msgstr ""
+msgstr "Lista dos Detentor de Chave R1 Externa"
msgid "External system log server"
msgstr "Servidor externo de registros do sistema (syslog)"
@@ -1155,13 +1182,10 @@ msgid "External system log server port"
msgstr "Porta do servidor externo de registro do sistema (syslog)"
msgid "External system log server protocol"
-msgstr ""
+msgstr "Protocolo do servidor externo de registro do sistema (syslog)"
msgid "Extra SSH command options"
-msgstr ""
-
-msgid "Fast Frames"
-msgstr "Quadros Rápidos"
+msgstr "Opções adicionais do comando SSH"
msgid "File"
msgstr "Arquivo"
@@ -1185,6 +1209,9 @@ msgid ""
"Find all currently attached filesystems and swap and replace configuration "
"with defaults based on what was detected"
msgstr ""
+"Encontre todos os sistemas de arquivos e espaços de troca (swap) atualmente "
+"conectados e substitua a configuração com valores padrão baseados no que foi "
+"detectado"
msgid "Find and join network"
msgstr "Procurar e conectar à rede"
@@ -1198,6 +1225,9 @@ msgstr "Terminar"
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Configurações do Firewall"
@@ -1205,7 +1235,7 @@ msgid "Firewall Status"
msgstr "Estado do Firewall"
msgid "Firmware File"
-msgstr ""
+msgstr "Arquivo da Firmware"
msgid "Firmware Version"
msgstr "Versão do Firmware"
@@ -1243,17 +1273,22 @@ msgstr "Forçar TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Forçar TKIP e CCMP (AES)"
-msgid "Force use of NAT-T"
+msgid "Force link"
msgstr ""
+msgid "Force use of NAT-T"
+msgstr "Force o uso do NAT-T"
+
msgid "Form token mismatch"
-msgstr ""
+msgstr "Chave eletrônica do formulário não casa"
msgid "Forward DHCP traffic"
msgstr "Encaminhar tráfego DHCP"
msgid "Forward Error Correction Seconds (FECS)"
msgstr ""
+"Segundos a frente de correção de erros ( <abbr title=\"Forward Error "
+"Correction Seconds\">FECS</abbr>)"
msgid "Forward broadcast traffic"
msgstr "Encaminhar tráfego broadcast"
@@ -1277,6 +1312,8 @@ msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
msgstr ""
+"Mais informações sobre interfaces e parceiros WireGuard em <a href=\"http://"
+"wireguard.io\">wireguard.io</a>."
msgid "GHz"
msgstr "GHz"
@@ -1297,10 +1334,10 @@ msgid "General Setup"
msgstr "Configurações Gerais"
msgid "General options for opkg"
-msgstr ""
+msgstr "Opções gerais para o opkg"
msgid "Generate Config"
-msgstr ""
+msgstr "Gerar Configuração"
msgid "Generate archive"
msgstr "Gerar arquivo"
@@ -1312,10 +1349,10 @@ msgid "Given password confirmation did not match, password not changed!"
msgstr "A senha de confirmação informada não casa. Senha não alterada!"
msgid "Global Settings"
-msgstr ""
+msgstr "Configurações Globais"
msgid "Global network options"
-msgstr ""
+msgstr "Opções de rede globais"
msgid "Go to password configuration..."
msgstr "Ir para a configuração de senha..."
@@ -1324,19 +1361,21 @@ msgid "Go to relevant configuration page"
msgstr "Ir para a página de configuração pertinente"
msgid "Group Password"
-msgstr ""
+msgstr "Senha do Grupo"
msgid "Guest"
-msgstr ""
+msgstr "Convidado\t"
msgid "HE.net password"
msgstr "Senha HE.net"
msgid "HE.net username"
-msgstr ""
+msgstr "Usuário do HE.net"
msgid "HT mode (802.11n)"
msgstr ""
+"Modo <abbr title=\"High Throughput/Alta Taxa de Transferência\">HT</abbr> "
+"(802.11n)"
# Não sei que contexto isto está sendo usado
msgid "Handler"
@@ -1347,9 +1386,11 @@ msgstr "Suspender"
msgid "Header Error Code Errors (HEC)"
msgstr ""
+"Erros de Código de Erro de Cabeçalho (<abbr title=\"Header Error Code\">HEC</"
+"abbr>)"
msgid "Heartbeat"
-msgstr ""
+msgstr "Pulso de vida"
msgid ""
"Here you can configure the basic aspects of your device like its hostname or "
@@ -1374,7 +1415,7 @@ msgstr ""
"\">ESSID</abbr>"
msgid "Host"
-msgstr ""
+msgstr "Equipamento"
msgid "Host entries"
msgstr "Entradas de Equipamentos"
@@ -1397,13 +1438,15 @@ msgid "Hostnames"
msgstr "Nome dos equipamentos"
msgid "Hybrid"
-msgstr ""
+msgstr "Híbrido"
msgid "IKE DH Group"
msgstr ""
+"Grupo <abbr title=\"Diffie-Hellman\">DH</abbr> do <abbr title=\"Internet "
+"Key Exchange/Troca de Chaves na Internet\">IKE</abbr>"
msgid "IP Addresses"
-msgstr ""
+msgstr "Endereços IP"
msgid "IP address"
msgstr "Endereço IP"
@@ -1424,7 +1467,7 @@ msgid "IPv4 and IPv6"
msgstr "IPv4 e IPv6"
msgid "IPv4 assignment length"
-msgstr ""
+msgstr "Tamanho da atribuição IPv4"
msgid "IPv4 broadcast"
msgstr "Broadcast IPv4"
@@ -1439,7 +1482,7 @@ msgid "IPv4 only"
msgstr "Somente IPv4"
msgid "IPv4 prefix"
-msgstr ""
+msgstr "Prefixo IPv4"
msgid "IPv4 prefix length"
msgstr "Tamanho do prefixo IPv4"
@@ -1448,7 +1491,7 @@ msgid "IPv4-Address"
msgstr "Endereço IPv4"
msgid "IPv4-in-IPv4 (RFC2003)"
-msgstr ""
+msgstr "IPv4-in-IPv4 (RFC2003)"
msgid "IPv6"
msgstr "IPv6"
@@ -1457,13 +1500,15 @@ msgid "IPv6 Firewall"
msgstr "Firewall para IPv6"
msgid "IPv6 Neighbours"
-msgstr ""
+msgstr "Vizinhos IPv6"
msgid "IPv6 Settings"
-msgstr ""
+msgstr "Configurações IPv6"
msgid "IPv6 ULA-Prefix"
msgstr ""
+"Prefixo <abbr title=\"Unique Local Address/Endereço Local Único\">ULA</abbr> "
+"IPv6"
msgid "IPv6 WAN Status"
msgstr "Estado IPv6 da WAN"
@@ -1472,13 +1517,13 @@ msgid "IPv6 address"
msgstr "Endereço IPv6"
msgid "IPv6 address delegated to the local tunnel endpoint (optional)"
-msgstr ""
+msgstr "Endereços IPv6 delegados para o ponta local do túnel (opcional)"
msgid "IPv6 assignment hint"
-msgstr ""
+msgstr "Sugestão de atribuição IPv6"
msgid "IPv6 assignment length"
-msgstr ""
+msgstr "Tamanho da atribuição IPv6"
msgid "IPv6 gateway"
msgstr "Roteador padrão do IPv6"
@@ -1493,13 +1538,13 @@ msgid "IPv6 prefix length"
msgstr "Tamanho Prefixo IPv6"
msgid "IPv6 routed prefix"
-msgstr ""
+msgstr "Prefixo roteável IPv6"
msgid "IPv6-Address"
msgstr "Endereço IPv6"
msgid "IPv6-PD"
-msgstr ""
+msgstr "IPv6-PD"
msgid "IPv6-in-IPv4 (RFC4213)"
msgstr "IPv6-in-IPv4 (RFC4213)"
@@ -1514,10 +1559,10 @@ msgid "Identity"
msgstr "Identidade PEAP"
msgid "If checked, 1DES is enaled"
-msgstr ""
+msgstr "Se marcado, a cifragem 1DES será habilitada"
msgid "If checked, encryption is disabled"
-msgstr ""
+msgstr "Se marcado, a cifragem estará desabilitada"
msgid ""
"If specified, mount the device by its UUID instead of a fixed device node"
@@ -1573,6 +1618,8 @@ msgid ""
"In order to prevent unauthorized access to the system, your request has been "
"blocked. Click \"Continue »\" below to return to the previous page."
msgstr ""
+"Para prevenir acesso não autorizado neste sistema, sua requisição foi "
+"bloqueada. Clique abaixo em \"Continuar »\" para retornar à página anterior."
msgid "Inactivity timeout"
msgstr "Tempo limite de inatividade"
@@ -1593,7 +1640,7 @@ msgid "Install"
msgstr "Instalar"
msgid "Install iputils-traceroute6 for IPv6 traceroute"
-msgstr ""
+msgstr "Instale iputils-traceroute6 para rastrear rotas IPv6"
msgid "Install package %q"
msgstr "Instalar pacote %q"
@@ -1620,7 +1667,7 @@ msgid "Interface is shutting down..."
msgstr "A interface está desligando..."
msgid "Interface name"
-msgstr ""
+msgstr "Nome da Interface"
msgid "Interface not present or not connected yet."
msgstr "A interface não está presente ou não está conectada ainda."
@@ -1635,7 +1682,7 @@ msgid "Interfaces"
msgstr "Interfaces"
msgid "Internal"
-msgstr ""
+msgstr "Interno"
msgid "Internal Server Error"
msgstr "erro no servidor interno"
@@ -1656,7 +1703,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "Usuário e/ou senha inválida! Por favor, tente novamente."
-#, fuzzy
+msgid "Isolate Clients"
+msgstr ""
+
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
@@ -1664,8 +1713,8 @@ msgstr ""
"A imagem que está a tentar carregar aparenta nao caber na flash do "
"equipamento. Por favor verifique o arquivo da imagem!"
-msgid "Java Script required!"
-msgstr "É necessário Java Script!"
+msgid "JavaScript required!"
+msgstr "É necessário JavaScript!"
msgid "Join Network"
msgstr "Conectar à Rede"
@@ -1674,7 +1723,7 @@ msgid "Join Network: Wireless Scan"
msgstr "Conectar à Rede: Busca por Rede Sem Fio"
msgid "Joining Network: %q"
-msgstr ""
+msgstr "Juntando-se à rede %q"
msgid "Keep settings"
msgstr "Manter configurações"
@@ -1719,13 +1768,13 @@ msgid "Language and Style"
msgstr "Idioma e Estilo"
msgid "Latency"
-msgstr ""
+msgstr "Latência"
msgid "Leaf"
-msgstr ""
+msgstr "Folha"
msgid "Lease time"
-msgstr ""
+msgstr "Tempo de concessão"
msgid "Lease validity time"
msgstr "Tempo de validade da atribuição"
@@ -1753,21 +1802,23 @@ msgstr "Limite"
msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
msgstr ""
+"Limite o serviço DNS para subredes das interfaces nas quais estamos servindo "
+"DNS."
msgid "Limit listening to these interfaces, and loopback."
-msgstr ""
+msgstr "Escute somente nestas interfaces e na interface local (loopback) "
msgid "Line Attenuation (LATN)"
-msgstr ""
+msgstr "Atenuação de Linha (<abbr title=\"Line Attenuation\">LATN</abbr>)"
msgid "Line Mode"
-msgstr ""
+msgstr "Modo da Linha"
msgid "Line State"
-msgstr ""
+msgstr "Estado da Linha"
msgid "Line Uptime"
-msgstr ""
+msgstr "Tempo de Atividade da Linha"
msgid "Link On"
msgstr "Enlace Ativo"
@@ -1786,6 +1837,11 @@ msgid ""
"from the R0KH that the STA used during the Initial Mobility Domain "
"Association."
msgstr ""
+"Lista dos R0KHs no mesmo Domínio de Mobilidade. <br /> Formato: Endereço "
+"MAC, Identificador NAS, chave de 128 bits como cadeia hexadecimal. <br /> "
+"Esta lista é usada para mapear o Identificador R0KH (Identificador NAS) para "
+"um endereço MAC de destino ao solicitar a chave PMK-R1 a partir do R0KH que "
+"o STA usado durante a Associação de Domínio de Mobilidade Inicial."
msgid ""
"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
@@ -1794,9 +1850,14 @@ msgid ""
"R0KH. This is also the list of authorized R1KHs in the MD that can request "
"PMK-R1 keys."
msgstr ""
+"Lista dos R1KHs no mesmo Domínio de Mobilidade. <br /> Formato: Endereço "
+"MAC, R1KH-ID como 6 octetos com dois pontos, chave de 128 bits como cadeia "
+"hexadecimal. <br /> Esta lista é usada para mapear o identificador R1KH para "
+"um endereço MAC de destino ao enviar a chave PMK-R1 a partir do R0KH. Esta é "
+"também a lista de R1KHs autorizados no MD que podem solicitar chaves PMK-R1."
msgid "List of SSH key files for auth"
-msgstr ""
+msgstr "Lista de arquivos de chaves SSH para autenticação"
msgid "List of domains to allow RFC1918 responses for"
msgstr ""
@@ -1809,10 +1870,10 @@ msgstr ""
"fornecem resultados errados para consultas a domínios inexistentes (NX)"
msgid "Listen Interfaces"
-msgstr ""
+msgstr "Interfaces de Escuta"
msgid "Listen Port"
-msgstr ""
+msgstr "Porta de Escuta"
msgid "Listen only on the given interface or, if unspecified, on all"
msgstr ""
@@ -1831,7 +1892,7 @@ msgid "Loading"
msgstr "Carregando"
msgid "Local IP address to assign"
-msgstr ""
+msgstr "Endereço IP local para atribuir"
msgid "Local IPv4 address"
msgstr "Endereço IPv4 local"
@@ -1840,7 +1901,7 @@ msgid "Local IPv6 address"
msgstr "Endereço IPv6 local"
msgid "Local Service Only"
-msgstr ""
+msgstr "Somente Serviço Local"
msgid "Local Startup"
msgstr "Iniciação Local"
@@ -1851,7 +1912,6 @@ msgstr "Hora Local"
msgid "Local domain"
msgstr "Domínio Local"
-#, fuzzy
msgid ""
"Local domain specification. Names matching this domain are never forwarded "
"and are resolved from DHCP or hosts files only"
@@ -1879,7 +1939,7 @@ msgid "Localise queries"
msgstr "Localizar consultas"
msgid "Locked to channel %s used by: %s"
-msgstr ""
+msgstr "Travado no canal %s usado por: %s"
msgid "Log output level"
msgstr "Nível de detalhamento de saída dos registros"
@@ -1898,6 +1958,8 @@ msgstr "Sair"
msgid "Loss of Signal Seconds (LOSS)"
msgstr ""
+"Segundos de Perda de Sinal (<abbr title=\"Loss of Signal Seconds\">LOSS</"
+"abbr>)"
msgid "Lowest leased address as offset from the network address."
msgstr "O endereço mais baixo concedido como deslocamento do endereço da rede."
@@ -1915,13 +1977,13 @@ msgid "MAC-List"
msgstr "Lista de MAC"
msgid "MAP / LW4over6"
-msgstr ""
+msgstr "MAP / LW4over6"
msgid "MB/s"
msgstr "MB/s"
msgid "MD5"
-msgstr ""
+msgstr "MD5"
msgid "MHz"
msgstr "MHz"
@@ -1935,15 +1997,16 @@ msgid ""
"Make sure to clone the root filesystem using something like the commands "
"below:"
msgstr ""
+"Certifique-se que clonou o sistema de arquivos raiz com algo como o comando "
+"abaixo:"
msgid "Manual"
-msgstr ""
+msgstr "Manual"
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-
-msgid "Maximum Rate"
-msgstr "Taxa Máxima"
+"Taxa de Dados Atingível Máxima (<abbr title=\"Maximum Attainable Data Rate"
+"\">ATTNDR</abbr>)"
msgid "Maximum allowed number of active DHCP leases"
msgstr "Número máximo permitido de alocações DHCP ativas"
@@ -1965,6 +2028,8 @@ msgid ""
"Maximum length of the name is 15 characters including the automatic protocol/"
"bridge prefix (br-, 6in4-, pppoe- etc.)"
msgstr ""
+"Comprimento máximo do nome é de 15 caracteres, incluindo o prefixo "
+"automático do protocolo/ponte (br-, 6in4- pppoe-, etc.)"
msgid "Maximum number of leased addresses."
msgstr "Número máximo de endereços atribuídos."
@@ -1981,29 +2046,26 @@ msgstr "Uso da memória (%)"
msgid "Metric"
msgstr "Métrica"
-msgid "Minimum Rate"
-msgstr "Taxa Mínima"
-
msgid "Minimum hold time"
msgstr "Tempo mínimo de espera"
msgid "Mirror monitor port"
-msgstr ""
+msgstr "Porta de monitoramento do espelho"
msgid "Mirror source port"
-msgstr ""
+msgstr "Porta de origem do espelho"
msgid "Missing protocol extension for proto %q"
msgstr "Extensão para o protocolo %q está ausente"
msgid "Mobility Domain"
-msgstr ""
+msgstr "Domínio da Mobilidade"
msgid "Mode"
msgstr "Modo"
msgid "Model"
-msgstr ""
+msgstr "Modelo"
msgid "Modem device"
msgstr "Dispositivo do Modem"
@@ -2037,7 +2099,7 @@ msgstr ""
"anexado ao sistema de arquivos"
msgid "Mount filesystems not specifically configured"
-msgstr ""
+msgstr "Monte sistemas de arquivos não especificamente configurados"
msgid "Mount options"
msgstr "Opções de montagem"
@@ -2046,7 +2108,7 @@ msgid "Mount point"
msgstr "Ponto de montagem"
msgid "Mount swap not specifically configured"
-msgstr ""
+msgstr "Montar espalho de troca (swap) não especificamente configurado"
msgid "Mounted file systems"
msgstr "Sistemas de arquivos montados"
@@ -2057,9 +2119,6 @@ msgstr "Mover para baixo"
msgid "Move up"
msgstr "Mover para cima"
-msgid "Multicast Rate"
-msgstr "Taxa de Multicast"
-
msgid "Multicast address"
msgstr "Endereço de Multicast"
@@ -2067,22 +2126,25 @@ msgid "NAS ID"
msgstr "NAS ID"
msgid "NAT-T Mode"
-msgstr ""
+msgstr "Modo NAT-T"
msgid "NAT64 Prefix"
+msgstr "Prefixo NAT64"
+
+msgid "NCM"
msgstr ""
msgid "NDP-Proxy"
-msgstr ""
+msgstr "Proxy NDP"
msgid "NT Domain"
-msgstr ""
+msgstr "Domínio NT"
msgid "NTP server candidates"
msgstr "Candidatos a servidor NTP"
msgid "NTP sync time-out"
-msgstr ""
+msgstr "Tempo limite da sincronia do NTP"
msgid "Name"
msgstr "Nome"
@@ -2118,7 +2180,7 @@ msgid "No DHCP Server configured for this interface"
msgstr "Nenhum Servidor DHCP configurado para esta interface"
msgid "No NAT-T"
-msgstr ""
+msgstr "Sem NAT-T"
msgid "No chains in this table"
msgstr "Nenhuma cadeira nesta tabela"
@@ -2154,16 +2216,18 @@ msgid "Noise"
msgstr "Ruído"
msgid "Noise Margin (SNR)"
-msgstr ""
+msgstr "Margem de Ruído (<abbr title=\"Noise Margin\">SNR</abbr>)"
msgid "Noise:"
msgstr "Ruído:"
msgid "Non Pre-emtive CRC errors (CRC_P)"
msgstr ""
+"Erros CRC Não Preemptivos<abbr title=\"Non Pre-emptive CRC errors\">CRC_P</"
+"abbr>"
msgid "Non-wildcard"
-msgstr ""
+msgstr "Sem caracter curinga"
msgid "None"
msgstr "Nenhum"
@@ -2184,7 +2248,7 @@ msgid "Note: Configuration files will be erased."
msgstr "Nota: Os arquivos de configuração serão apagados."
msgid "Note: interface name length"
-msgstr ""
+msgstr "Aviso: tamanho do nome da interface"
msgid "Notice"
msgstr "Aviso"
@@ -2199,10 +2263,10 @@ msgid "OPKG-Configuration"
msgstr "Configuração-OPKG"
msgid "Obfuscated Group Password"
-msgstr ""
+msgstr "Senha Ofuscada do Grupo"
msgid "Obfuscated Password"
-msgstr ""
+msgstr "Senha Ofuscada"
msgid "Off-State Delay"
msgstr "Atraso no estado de desligado"
@@ -2233,7 +2297,7 @@ msgid "One or more fields contain invalid values!"
msgstr "Um ou mais campos contém valores inválidos!"
msgid "One or more invalid/required values on tab"
-msgstr ""
+msgstr "Um ou mais valores inválidos/obrigatórios na aba"
msgid "One or more required fields have no value!"
msgstr "Um ou mais campos obrigatórios não tem valor!"
@@ -2242,10 +2306,10 @@ msgid "Open list..."
msgstr "Abrir lista..."
msgid "OpenConnect (CISCO AnyConnect)"
-msgstr ""
+msgstr "OpenConnect (CISCO AnyConnect)"
msgid "Operating frequency"
-msgstr ""
+msgstr "Frequência de Operação"
msgid "Option changed"
msgstr "Opção alterada"
@@ -2254,43 +2318,56 @@ msgid "Option removed"
msgstr "Opção removida"
msgid "Optional"
-msgstr ""
+msgstr "Opcional"
msgid "Optional, specify to override default server (tic.sixxs.net)"
msgstr ""
+"Opcional, especifique para sobrescrever o servidor padrão (tic.sixxs.net)"
msgid "Optional, use when the SIXXS account has more than one tunnel"
-msgstr ""
+msgstr "Opcional, para usar quando a conta SIXXS tem mais de um túnel"
msgid "Optional."
+msgstr "Opcional."
+
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
+"Opcional. Adiciona uma camada extra de cifragem simétrica para resistência "
+"pós quântica."
msgid "Optional. Create routes for Allowed IPs for this peer."
-msgstr ""
+msgstr "Opcional. Cria rotas para endereços IP Autorizados para este parceiro."
msgid ""
"Optional. Host of peer. Names are resolved prior to bringing up the "
"interface."
msgstr ""
+"Opcional. Equipamento do parceiro. Nomes serão resolvido antes de levantar a "
+"interface."
msgid "Optional. Maximum Transmission Unit of tunnel interface."
-msgstr ""
+msgstr "Opcional. Unidade Máxima de Transmissão da interface do túnel."
msgid "Optional. Port of peer."
-msgstr ""
+msgstr "Opcional. Porta do parceiro."
msgid ""
"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
"Recommended value if this device is behind a NAT is 25."
msgstr ""
+"Opcional. Segundos entre mensagens para manutenção da conexão. O padrão é 0 "
+"(desabilitado). O valor recomendado caso este dispositivo esteja atrás de "
+"uma NAT é 25."
msgid "Optional. UDP port used for outgoing and incoming packets."
-msgstr ""
+msgstr "opcional. Porta UDP usada para pacotes saintes ou entrantes."
msgid "Options"
msgstr "Opções"
@@ -2304,26 +2381,25 @@ msgstr "Saída"
msgid "Outbound:"
msgstr "Saindo:"
-msgid "Outdoor Channels"
-msgstr "Canais para externo"
-
msgid "Output Interface"
-msgstr ""
+msgstr "Interface de Saída"
msgid "Override MAC address"
msgstr "Sobrescrever o endereço MAC"
msgid "Override MTU"
-msgstr "Sobrescrever o MTU"
+msgstr ""
+"Sobrescrever o <abbr title=\"Maximum Transmission Unit/Unidade Máxima de "
+"Transmissão\">MTU</abbr>"
msgid "Override TOS"
-msgstr ""
+msgstr "Sobrescrever o TOS"
msgid "Override TTL"
-msgstr ""
+msgstr "Sobrescrever o TTL"
msgid "Override default interface name"
-msgstr ""
+msgstr "Sobrescrever o nome da nova interface"
msgid "Override the gateway in DHCP responses"
msgstr "Sobrescrever o roteador padrão nas respostas do DHCP"
@@ -2358,7 +2434,7 @@ msgid "PIN"
msgstr "PIN"
msgid "PMK R1 Push"
-msgstr ""
+msgstr "PMK R1 Push"
msgid "PPP"
msgstr "PPP"
@@ -2373,19 +2449,19 @@ msgid "PPPoE"
msgstr "PPPoE"
msgid "PPPoSSH"
-msgstr ""
+msgstr "PPPoSSH"
msgid "PPtP"
msgstr "PPtP"
msgid "PSID offset"
-msgstr ""
+msgstr "Deslocamento PSID"
msgid "PSID-bits length"
-msgstr ""
+msgstr "Comprimento dos bits PSID"
msgid "PTM/EFM (Packet Transfer Mode)"
-msgstr ""
+msgstr "PTM/EFM (Modo de Transferência de Pacotes)"
msgid "Package libiwinfo required!"
msgstr "O pacote libiwinfo é necessário!"
@@ -2412,7 +2488,7 @@ msgid "Password of Private Key"
msgstr "Senha da Chave Privada"
msgid "Password of inner Private Key"
-msgstr ""
+msgstr "Senha da Chave Privada interna"
msgid "Password successfully changed!"
msgstr "A senha foi alterada com sucesso!"
@@ -2430,25 +2506,25 @@ msgid "Path to executable which handles the button event"
msgstr "Caminho para o executável que trata o evento do botão"
msgid "Path to inner CA-Certificate"
-msgstr ""
+msgstr "Caminho para os certificados CA interno"
msgid "Path to inner Client-Certificate"
-msgstr ""
+msgstr "Caminho para o Certificado do Cliente interno"
msgid "Path to inner Private Key"
-msgstr ""
+msgstr "Caminho para a Chave Privada interna"
msgid "Peak:"
msgstr "Pico:"
msgid "Peer IP address to assign"
-msgstr ""
+msgstr "Endereço IP do parceiro para atribuir"
msgid "Peers"
-msgstr ""
+msgstr "Parceiros"
msgid "Perfect Forward Secrecy"
-msgstr ""
+msgstr "Sigilo Encaminhado Perfeito"
msgid "Perform reboot"
msgstr "Reiniciar o sistema"
@@ -2457,7 +2533,7 @@ msgid "Perform reset"
msgstr "Zerar configuração"
msgid "Persistent Keep Alive"
-msgstr ""
+msgstr "Manutenção da Conexão Persistente"
msgid "Phy Rate:"
msgstr "Taxa física:"
@@ -2484,17 +2560,24 @@ msgid "Port status:"
msgstr "Status da porta"
msgid "Power Management Mode"
-msgstr ""
+msgstr "Modo de Gerenciamento de Energia"
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+"Erros CRC Preemptivos<abbr title=\"Pre-emptive CRC errors\">CRCP_P</abbr>"
-msgid "Prefix Delegated"
+msgid "Prefer LTE"
msgstr ""
-msgid "Preshared Key"
+msgid "Prefer UMTS"
msgstr ""
+msgid "Prefix Delegated"
+msgstr "Prefixo Delegado"
+
+msgid "Preshared Key"
+msgstr "Chave Compartilhada"
+
msgid ""
"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
"ignore failures"
@@ -2503,7 +2586,7 @@ msgstr ""
"echo do LCP. Use 0 para ignorar as falhas"
msgid "Prevent listening on these interfaces."
-msgstr ""
+msgstr "Evite escutar nestas Interfaces."
msgid "Prevents client-to-client communication"
msgstr "Impede a comunicação de cliente para cliente"
@@ -2512,7 +2595,7 @@ msgid "Prism2/2.5/3 802.11b Wireless Controller"
msgstr "Prism2/2.5/3 802.11b Wireless Controlador"
msgid "Private Key"
-msgstr ""
+msgstr "Chave Privada"
msgid "Proceed"
msgstr "Proceder"
@@ -2521,7 +2604,7 @@ msgid "Processes"
msgstr "Processos"
msgid "Profile"
-msgstr ""
+msgstr "Perfil"
msgid "Prot."
msgstr "Protocolo"
@@ -2548,25 +2631,27 @@ msgid "Pseudo Ad-Hoc (ahdemo)"
msgstr "Ad-Hoc falso (ahdemo)"
msgid "Public Key"
-msgstr ""
+msgstr "Chave Pública"
msgid "Public prefix routed to this device for distribution to clients."
msgstr ""
+"Prefixo público roteado para este dispositivo para distribuição a seus "
+"clientes."
msgid "QMI Cellular"
-msgstr ""
+msgstr "Celular QMI"
msgid "Quality"
msgstr "Qualidade"
msgid "R0 Key Lifetime"
-msgstr ""
+msgstr "Validade da Chave R0"
msgid "R1 Key Holder"
-msgstr ""
+msgstr "Detentor da Chave R1"
msgid "RFC3947 NAT-T mode"
-msgstr ""
+msgstr "Modo NAT-T (RFC3947)"
msgid "RTS/CTS Threshold"
msgstr "Limiar RTS/CTS"
@@ -2625,7 +2710,6 @@ msgstr ""
msgid "Really reset all changes?"
msgstr "Realmente limpar todas as mudanças?"
-#, fuzzy
msgid ""
"Really shut down network?\\nYou might lose access to this device if you are "
"connected via this interface."
@@ -2661,7 +2745,7 @@ msgid "Realtime Wireless"
msgstr "Rede sem fio em Tempo Real"
msgid "Reassociation Deadline"
-msgstr ""
+msgstr "Limite para Reassociação"
msgid "Rebind protection"
msgstr "Proteção contra \"Rebind\""
@@ -2682,7 +2766,7 @@ msgid "Receiver Antenna"
msgstr "Antena de Recepção"
msgid "Recommended. IP addresses of the WireGuard interface."
-msgstr ""
+msgstr "Recomendado. Endereços IP da interface do WireGuard."
msgid "Reconnect this interface"
msgstr "Reconectar esta interface"
@@ -2693,9 +2777,6 @@ msgstr "Reconectando interface"
msgid "References"
msgstr "Referências"
-msgid "Regulatory Domain"
-msgstr "Domínio Regulatório"
-
msgid "Relay"
msgstr "Retransmissor"
@@ -2712,7 +2793,7 @@ msgid "Remote IPv4 address"
msgstr "Endereço IPv4 remoto"
msgid "Remote IPv4 address or FQDN"
-msgstr ""
+msgstr "Endereço IPv4 remoto ou FQDN"
msgid "Remove"
msgstr "Remover"
@@ -2727,41 +2808,47 @@ msgid "Replace wireless configuration"
msgstr "Substituir a configuração da rede sem fio"
msgid "Request IPv6-address"
-msgstr ""
+msgstr "Solicita endereço IPv6"
msgid "Request IPv6-prefix of length"
-msgstr ""
+msgstr "Solicita prefixo IPv6 de tamanho"
msgid "Require TLS"
-msgstr ""
+msgstr "Requer TLS"
msgid "Required"
-msgstr ""
+msgstr "Necessário"
msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
-msgstr "Requerido para alguns provedores de internet, ex. Charter com DOCSIS 3"
+msgstr ""
+"Obrigatório para alguns provedores de internet, ex. Charter com DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
-msgstr ""
+msgstr "Obrigatório. Chave privada codificada em Base64 para esta interface."
+
+msgid "Required. Base64-encoded public key of peer."
+msgstr "Necessário. Chave Pública do parceiro codificada como Base64."
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-
-msgid "Required. Public key of peer."
-msgstr ""
+"Obrigatório. Endereços IP e prefixos que este parceiro está autorizado a "
+"usar dentro do túnel. Normalmente é o endereço IP do parceiro no túnel e as "
+"redes que o parceiro roteia através do túnel."
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
-msgstr ""
+msgstr "Obrigatório. Chave Pública do parceiro."
msgid ""
"Requires upstream supports DNSSEC; verify unsigned domain responses really "
"come from unsigned domains"
msgstr ""
+"Exige o suporte DNSSEC do servidor superior; verifica se resposta não "
+"assinadas realmente vẽm de domínios não assinados."
msgid "Reset"
msgstr "Limpar"
@@ -2800,19 +2887,19 @@ msgid "Root directory for files served via TFTP"
msgstr "Diretório raiz para arquivos disponibilizados pelo TFTP"
msgid "Root preparation"
-msgstr ""
+msgstr "Prepação da raiz (/)"
msgid "Route Allowed IPs"
-msgstr ""
+msgstr "Roteie Andereços IP Autorizados"
msgid "Route type"
-msgstr ""
+msgstr "Tipo de rota"
msgid "Routed IPv6 prefix for downstream interfaces"
-msgstr ""
+msgstr "Prefixo roteável IPv6 para interfaces internas"
msgid "Router Advertisement-Service"
-msgstr ""
+msgstr "Serviço de Anúncio de Roteador"
msgid "Router Password"
msgstr "Senha do Roteador"
@@ -2835,30 +2922,32 @@ msgid "Run filesystem check"
msgstr "Execute a verificação do sistema de arquivos "
msgid "SHA256"
-msgstr ""
+msgstr "SHA256"
msgid ""
"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) "
"use 6in4 instead"
msgstr ""
+"O SIXXS suporta somente TIC. Use o 6in4 para túneis estáticos usando o "
+"protocolo IP 41 (RFC4213)"
msgid "SIXXS-handle[/Tunnel-ID]"
-msgstr ""
+msgstr "Identificador do SIXXS[/Identificador do Túnel]"
msgid "SNR"
-msgstr ""
+msgstr "SNR"
msgid "SSH Access"
msgstr "Acesso SSH"
msgid "SSH server address"
-msgstr ""
+msgstr "Endereço do servidor SSH"
msgid "SSH server port"
-msgstr ""
+msgstr "Porta do servidor SSH"
msgid "SSH username"
-msgstr ""
+msgstr "Usuário do SSH"
msgid "SSH-Keys"
msgstr "Chaves SSH"
@@ -2900,22 +2989,21 @@ msgstr ""
msgid "Separate Clients"
msgstr "Isolar Clientes"
-msgid "Separate WDS"
-msgstr "Separar WDS"
-
msgid "Server Settings"
msgstr "Configurações do Servidor"
msgid "Server password"
-msgstr ""
+msgstr "Senha do servidor"
msgid ""
"Server password, enter the specific password of the tunnel when the username "
"contains the tunnel ID"
msgstr ""
+"Senha do servidor. Informe a senha para este túnel quando o nome do usuário "
+"contiver o identificador do túnel"
msgid "Server username"
-msgstr ""
+msgstr "Usuário do servidor"
msgid "Service Name"
msgstr "Nome do Serviço"
@@ -2926,7 +3014,11 @@ msgstr "Tipo do Serviço"
msgid "Services"
msgstr "Serviços"
-#, fuzzy
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr "Configurar a Sincronização do Horário"
@@ -2935,9 +3027,11 @@ msgstr "Configurar Servidor DHCP"
msgid "Severely Errored Seconds (SES)"
msgstr ""
+"Segundos com erro severos (<abbr title=\"Severely Errored Seconds\">SES</"
+"abbr>)"
msgid "Short GI"
-msgstr ""
+msgstr "Intervalo de guarda curto"
msgid "Show current backup file list"
msgstr "Mostra a lista atual de arquivos para a cópia de segurança"
@@ -2952,7 +3046,7 @@ msgid "Signal"
msgstr "Sinal"
msgid "Signal Attenuation (SATN)"
-msgstr ""
+msgstr "Atenuação do Sinal (<abbr title=\"Signal Attenuation\">SATN</abbr>)"
msgid "Signal:"
msgstr "Sinal:"
@@ -2961,7 +3055,7 @@ msgid "Size"
msgstr "Tamanho"
msgid "Size (.ipk)"
-msgstr ""
+msgstr "Tamanho (.ipk)"
msgid "Skip"
msgstr "Pular"
@@ -2979,7 +3073,7 @@ msgid "Software"
msgstr "Software"
msgid "Software VLAN"
-msgstr ""
+msgstr "VLAN em Software"
msgid "Some fields are invalid, cannot save values!"
msgstr "Alguns campos estão inválidos e os valores não podem ser salvos!"
@@ -3006,7 +3100,7 @@ msgid "Source"
msgstr "Origem"
msgid "Source routing"
-msgstr ""
+msgstr "Roteamento pela origem"
msgid "Specifies the button state to handle"
msgstr "Especifica o estado do botão para ser tratado"
@@ -3032,17 +3126,21 @@ msgstr ""
"equipamento está morto"
msgid "Specify a TOS (Type of Service)."
-msgstr ""
+msgstr "Especifique um Tipo de Serviço (TOS)"
msgid ""
"Specify a TTL (Time to Live) for the encapsulating packet other than the "
"default (64)."
msgstr ""
+"Especifica o tempo de vida (<abbr title=\"Time to Live\">TTL</abbr>) para os "
+"pacotes encapsulados ao invés do padrão (64)."
msgid ""
"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
"bytes)."
msgstr ""
+"Especifica a unidade máxima de transmissão (<abbr title=\"Maximum "
+"Transmission Unit\">MTU</abbr>) ao invés do valor padrão (1280 bytes)"
msgid "Specify the secret encryption key here."
msgstr "Especifique a chave de cifragem secreta aqui."
@@ -3068,9 +3166,6 @@ msgstr "Alocações Estáticas"
msgid "Static Routes"
msgstr "Rotas Estáticas"
-msgid "Static WDS"
-msgstr "WDS Estático"
-
msgid "Static address"
msgstr "Endereço Estático"
@@ -3097,13 +3192,13 @@ msgid "Submit"
msgstr "Enviar"
msgid "Suppress logging"
-msgstr ""
+msgstr "Suprimir registros (log)"
msgid "Suppress logging of the routine operation of these protocols"
-msgstr ""
+msgstr "Suprimir registros (log) de operações rotineiras destes protocolos"
msgid "Swap"
-msgstr ""
+msgstr "Espaço de Troca (swap)"
msgid "Swap Entry"
msgstr "Entrada do espaço de troca (Swap)"
@@ -3120,9 +3215,11 @@ msgstr "Switch %q (%s)"
msgid ""
"Switch %q has an unknown topology - the VLAN settings might not be accurate."
msgstr ""
+"O Switch %q tem uma topologia desconhecida - as configurações de VLAN podem "
+"não ser precisas."
msgid "Switch VLAN"
-msgstr ""
+msgstr "Switch VLAN"
msgid "Switch protocol"
msgstr "Trocar o protocolo"
@@ -3167,12 +3264,11 @@ msgid "Target"
msgstr "Destino"
msgid "Target network"
-msgstr ""
+msgstr "Rede de destino"
msgid "Terminate"
msgstr "Terminar"
-#, fuzzy
msgid ""
"The <em>Device Configuration</em> section covers physical settings of the "
"radio hardware such as channel, transmit power or antenna selection which "
@@ -3198,10 +3294,12 @@ msgid ""
"The HE.net endpoint update configuration changed, you must now use the plain "
"username instead of the user ID!"
msgstr ""
+"A configuração da atualização de pontas HE.net mudou. Você deve agora usar o "
+"nome do usuário ao invés do identificador do usuário!"
msgid ""
"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
-msgstr ""
+msgstr "O endereço IPv4 ou o nome completo (FQDN) da ponta remota do túnel."
msgid ""
"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
@@ -3217,13 +3315,14 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
+"O arquivo de configuração não pode ser carregado devido ao seguinte erro:"
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
msgstr ""
-"O arquivo do dispositivo de armazenamento ou da partição (<abbr title=\"por "
-"exemplo\">ex.</abbr> <code>/dev/sda1</code>)"
+"O arquivo do dispositivo de armazenamento ou da partição (ex: <code>/dev/"
+"sda1</code>)"
msgid ""
"The filesystem that was used to format the memory (<abbr title=\"for example"
@@ -3256,7 +3355,6 @@ msgstr "As seguintes regras estão atualmente ativas neste sistema."
msgid "The given network name is not unique"
msgstr "O nome de rede informado não é único"
-#, fuzzy
msgid ""
"The hardware is not multi-SSID capable and the existing configuration will "
"be replaced if you proceed."
@@ -3274,7 +3372,7 @@ msgid "The length of the IPv6 prefix in bits"
msgstr "O comprimento do prefixo IPv6 em bits"
msgid "The local IPv4 address over which the tunnel is created (optional)."
-msgstr ""
+msgstr "O endereço IPv4 local sobre o qual o túnel será criado (opcional)."
msgid ""
"The network ports on this device can be combined to several <abbr title="
@@ -3296,7 +3394,7 @@ msgid "The selected protocol needs a device assigned"
msgstr "O protocolo selecionado necessita estar associado a um dispositivo"
msgid "The submitted security token is invalid or already expired!"
-msgstr ""
+msgstr "A chave eletrônica enviada é inválida ou já expirou!"
msgid ""
"The system is erasing the configuration partition now and will reboot itself "
@@ -3305,7 +3403,6 @@ msgstr ""
"O sistema está apagando agora a partição da configuração e irá reiniciar "
"quando terminado."
-#, fuzzy
msgid ""
"The system is flashing now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a "
"few minutes before you try to reconnect. It might be necessary to renew the "
@@ -3321,6 +3418,8 @@ msgid ""
"The tunnel end-point is behind NAT, defaults to disabled and only applies to "
"AYIYA"
msgstr ""
+"O final do túnel está atrás de um NAT. Por padrão será desabilitado e "
+"somente se aplica a AYIYA"
msgid ""
"The uploaded image file does not contain a supported format. Make sure that "
@@ -3363,6 +3462,9 @@ msgid ""
"'server=1.2.3.4' fordomain-specific or full upstream <abbr title=\"Domain "
"Name System\">DNS</abbr> servers."
msgstr ""
+"Este arquivo deve conter linhas como 'server=/domain/1.2.3.4' ou "
+"'server=1.2.3.4' para servidores <abbr title=\"Domain Name System/Sistema de "
+"Nomes de Domínios\">DNS</abbr> por domínio ou completos."
msgid ""
"This is a list of shell glob patterns for matching files and directories to "
@@ -3378,6 +3480,8 @@ msgid ""
"This is either the \"Update Key\" configured for the tunnel or the account "
"password if no update key has been configured"
msgstr ""
+"Isto é a \"Update Key\" configurada para o túnel ou a senha da cpnta se não "
+"tem uma \"Update Keu\" configurada"
msgid ""
"This is the content of /etc/rc.local. Insert your own commands here (in "
@@ -3401,11 +3505,13 @@ msgstr ""
"\">DHCP</abbr> na rede local"
msgid "This is the plain username for logging into the account"
-msgstr ""
+msgstr "Este é o nome do usuário em para se autenticar na sua conta"
msgid ""
"This is the prefix routed to you by the tunnel broker for use by clients"
msgstr ""
+"Este é o prefixo roteado pelo agente do tunel para você usar com seus "
+"clientes"
msgid "This is the system crontab in which scheduled tasks can be defined."
msgstr "Este é o sistema de agendamento de tarefas."
@@ -3449,7 +3555,7 @@ msgstr ""
"de segurança anterior."
msgid "Tone"
-msgstr ""
+msgstr "Tom"
msgid "Total Available"
msgstr "Total Disponível"
@@ -3488,19 +3594,16 @@ msgid "Tunnel Interface"
msgstr "Interface de Tunelamento"
msgid "Tunnel Link"
-msgstr ""
+msgstr "Enlace do túnel"
msgid "Tunnel broker protocol"
-msgstr ""
+msgstr "Protocolo do agente do túnel"
msgid "Tunnel setup server"
-msgstr ""
+msgstr "Servidor de configuração do túnel"
msgid "Tunnel type"
-msgstr ""
-
-msgid "Turbo Mode"
-msgstr "Modo Turbo"
+msgstr "Tipo de túnel"
msgid "Tx-Power"
msgstr "Potência de transmissão"
@@ -3521,7 +3624,7 @@ msgid "USB Device"
msgstr "Dispositivo USB"
msgid "USB Ports"
-msgstr ""
+msgstr "Portas USB"
msgid "UUID"
msgstr "UUID"
@@ -3531,6 +3634,8 @@ msgstr "Não é possível a expedição"
msgid "Unavailable Seconds (UAS)"
msgstr ""
+"Segundos de indisponibilidade (<abbr title=\"Unavailable Seconds\">UAS</"
+"abbr>)"
msgid "Unknown"
msgstr "Desconhecido"
@@ -3542,7 +3647,7 @@ msgid "Unmanaged"
msgstr "Não gerenciado"
msgid "Unmount"
-msgstr ""
+msgstr "Desmontar"
msgid "Unsaved Changes"
msgstr "Alterações Não Salvas"
@@ -3584,22 +3689,24 @@ msgid "Use ISO/IEC 3166 alpha2 country codes."
msgstr "Usar códigos de países ISO/IEC 3166 alpha2."
msgid "Use MTU on tunnel interface"
-msgstr "Use MTU na interface do túnel"
+msgstr ""
+"Use o <abbr title=\"Maximum Transmission Unit/Unidade Máxima de Transmissão"
+"\">MTU</abbr> na interface do túnel"
msgid "Use TTL on tunnel interface"
msgstr "Use TTL na interface do túnel"
msgid "Use as external overlay (/overlay)"
-msgstr ""
+msgstr "Use como uma sobreposição externa (/overlay)"
msgid "Use as root filesystem (/)"
-msgstr ""
+msgstr "Usar como o sistema de arquivos raiz (/)"
msgid "Use broadcast flag"
msgstr "Use a marcação de broadcast"
msgid "Use builtin IPv6-management"
-msgstr ""
+msgstr "Use o gerenciamento do IPv6 embarcado"
msgid "Use custom DNS servers"
msgstr "Use servidores DNS personalizados"
@@ -3636,12 +3743,14 @@ msgid ""
"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
"needed with normal WPA(2)-PSK."
msgstr ""
+"Usado para dois diferentes propósitos: identificador do RADIUS NAS e do "
+"802.11r R0KH. Não necessário com o WPA(2)-PSK normal."
msgid "User certificate (PEM encoded)"
-msgstr ""
+msgstr "Certificado do usuário (codificado em formato PEM)"
msgid "User key (PEM encoded)"
-msgstr ""
+msgstr "Chave do usuário (codificada em formato PEM)"
msgid "Username"
msgstr "Usuário"
@@ -3650,7 +3759,7 @@ msgid "VC-Mux"
msgstr "VC-Mux"
msgid "VDSL"
-msgstr ""
+msgstr "VDSL"
msgid "VLANs on %q"
msgstr "VLANs em %q"
@@ -3659,34 +3768,34 @@ msgid "VLANs on %q (%s)"
msgstr "VLANs em %q (%s)"
msgid "VPN Local address"
-msgstr ""
+msgstr "Endereço Local da VPN"
msgid "VPN Local port"
-msgstr ""
+msgstr "Porta Local da VPN"
msgid "VPN Server"
msgstr "Servidor VPN"
msgid "VPN Server port"
-msgstr ""
+msgstr "Porta do Servidor VPN"
msgid "VPN Server's certificate SHA1 hash"
-msgstr ""
+msgstr "Resumo digital SHA1 do certificado do servidor VPN"
msgid "VPNC (CISCO 3000 (and others) VPN)"
-msgstr ""
+msgstr "VPNC (VPN do CISCO 3000 (e outros))"
msgid "Vendor"
-msgstr ""
+msgstr "Fabricante"
msgid "Vendor Class to send when requesting DHCP"
msgstr "Classe do fabricante para enviar quando requisitar o DHCP"
msgid "Verbose"
-msgstr ""
+msgstr "Detalhado"
msgid "Verbose logging by aiccu daemon"
-msgstr ""
+msgstr "Habilite registros detalhados do serviço AICCU"
msgid "Verify"
msgstr "Verificar"
@@ -3722,6 +3831,8 @@ msgstr ""
msgid ""
"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)"
msgstr ""
+"Espere esta quantidade de segundos pela sincronia do NTP. Definindo como 0 "
+"desabilita a espera (opcional)"
msgid "Waiting for changes to be applied..."
msgstr "Esperando a aplicação das mudanças..."
@@ -3730,25 +3841,25 @@ msgid "Waiting for command to complete..."
msgstr "Esperando o término do comando..."
msgid "Waiting for device..."
-msgstr ""
+msgstr "Esperando pelo dispositivo..."
msgid "Warning"
msgstr "Atenção"
msgid "Warning: There are unsaved changes that will get lost on reboot!"
-msgstr ""
+msgstr "Atenção: Existem mudanças não salvas que serão perdidas ao reiniciar!"
msgid "Whether to create an IPv6 default route over the tunnel"
-msgstr ""
+msgstr "Se deve criar uma rota padrão IPv6 sobre o túnel"
msgid "Whether to route only packets from delegated prefixes"
-msgstr ""
+msgstr "Se deve rotear somente pacotes de prefixos delegados"
msgid "Width"
-msgstr ""
+msgstr "Largura"
msgid "WireGuard VPN"
-msgstr ""
+msgstr "VPN WireGuard"
msgid "Wireless"
msgstr "Rede sem fio"
@@ -3787,10 +3898,7 @@ msgid "Write received DNS requests to syslog"
msgstr "Escreva as requisições DNS para o servidor de registro (syslog)"
msgid "Write system log to file"
-msgstr ""
-
-msgid "XR Support"
-msgstr "Suporte a XR"
+msgstr "Escrever registo do sistema (log) no arquivo"
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
@@ -3804,7 +3912,7 @@ msgstr ""
"inacessível!</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
"Você precisa habilitar o JavaScript no seu navegador ou o LuCI não irá "
"funcionar corretamente."
@@ -3814,6 +3922,9 @@ msgid ""
"upgrade it to at least version 7 or use another browser like Firefox, Opera "
"or Safari."
msgstr ""
+"Seu Internet Explorer é muito velho para mostrar esta página corretamente. "
+"Por favor, atualiza para, ao menos, a versão 7 ou use outro navegador como o "
+"Firefox, Opera ou Safari."
msgid "any"
msgstr "qualquer"
@@ -3821,9 +3932,8 @@ msgstr "qualquer"
msgid "auto"
msgstr "automático"
-#, fuzzy
msgid "automatic"
-msgstr "estático"
+msgstr "automático"
msgid "baseT"
msgstr "baseT"
@@ -3847,7 +3957,7 @@ msgid "disable"
msgstr "desativar"
msgid "disabled"
-msgstr ""
+msgstr "desabilitado"
msgid "expired"
msgstr "expirado"
@@ -3875,7 +3985,7 @@ msgid "hidden"
msgstr "ocultar"
msgid "hybrid mode"
-msgstr ""
+msgstr "Modo Híbrido"
msgid "if target is a network"
msgstr "se o destino for uma rede"
@@ -3897,13 +4007,13 @@ msgstr ""
"Arquivo local de <abbr title=\"Sistema de Nomes de Domínios\">DNS</abbr>"
msgid "minimum 1280, maximum 1480"
-msgstr ""
+msgstr "mínimo 1280, máximo 1480"
msgid "minutes"
-msgstr ""
+msgstr "minutos"
msgid "navigation Navigation"
-msgstr ""
+msgstr "navegação Navegação"
# Is this yes/no or no like in no one?
msgid "no"
@@ -3916,7 +4026,7 @@ msgid "none"
msgstr "nenhum"
msgid "not present"
-msgstr ""
+msgstr "não presente "
msgid "off"
msgstr "desligado"
@@ -3928,37 +4038,37 @@ msgid "open"
msgstr "aberto"
msgid "overlay"
-msgstr ""
+msgstr "sobreposição"
msgid "relay mode"
-msgstr ""
+msgstr "modo retransmissor"
msgid "routed"
msgstr "roteado"
msgid "server mode"
-msgstr ""
+msgstr "modo servidor"
msgid "skiplink1 Skip to navigation"
-msgstr ""
+msgstr "skiplink1 Pular para a navegação"
msgid "skiplink2 Skip to content"
-msgstr ""
+msgstr "skiplink2 Pular para o conteúdo"
msgid "stateful-only"
-msgstr ""
+msgstr "somente com estado"
msgid "stateless"
-msgstr ""
+msgstr "sem estado"
msgid "stateless + stateful"
-msgstr ""
+msgstr "sem estado + com estado"
msgid "tagged"
msgstr "etiquetado"
msgid "time units (TUs / 1.024 ms) [1000-65535]"
-msgstr ""
+msgstr "unidades de tempo (TUs / 1.024 ms) [1000-65535]"
msgid "unknown"
msgstr "desconhecido"
@@ -3981,6 +4091,54 @@ msgstr "sim"
msgid "« Back"
msgstr "« Voltar"
+#~ msgid "AR Support"
+#~ msgstr "Suporte AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Controlador Wireless Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "Busca em Segundo Plano"
+
+#~ msgid "Compression"
+#~ msgstr "Compressão"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Desativar temporizador de Beacon de Hardware"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Não enviar respostas de exames"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Quadros Rápidos"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Taxa Máxima"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Taxa Mínima"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Taxa de Multicast"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Canais para externo"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Domínio Regulatório"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Separar WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS Estático"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Modo Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Suporte a XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Uma rede adicional será criada se você deixar isto desmarcado."
diff --git a/modules/luci-base/po/pt/base.po b/modules/luci-base/po/pt/base.po
index 389b077a32..2c1567397f 100644
--- a/modules/luci-base/po/pt/base.po
+++ b/modules/luci-base/po/pt/base.po
@@ -157,6 +157,11 @@ msgstr "<abbr title=\"máximo\">Max.</abbr> consultas concorrentes"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr "<abbr title='Emparelhada: %s / Grupo: %s'>%s - %s</abbr>"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -175,9 +180,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "Suporte AR"
-
msgid "ARP retry threshold"
msgstr "Limiar de tentativas ARP"
@@ -423,9 +425,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "Estações Associadas"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Controlador Wireless Atheros 802.11%s"
-
msgid "Auth Group"
msgstr ""
@@ -504,9 +503,6 @@ msgstr "Voltar à vista global"
msgid "Back to scan results"
msgstr "Voltar aos resultados do scan"
-msgid "Background Scan"
-msgstr "Procurar em Segundo Plano"
-
msgid "Backup / Flash Firmware"
msgstr "Backup / Flashar Firmware"
@@ -675,9 +671,6 @@ msgstr "Comando"
msgid "Common Configuration"
msgstr "Configuração comum"
-msgid "Compression"
-msgstr "Compressão"
-
msgid "Configuration"
msgstr "Configuração"
@@ -898,9 +891,6 @@ msgstr "Desativar configuração de DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Desativar temporizador de HW-Beacon"
-
msgid "Disabled"
msgstr "Desativado"
@@ -948,9 +938,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Não encaminhar lookups reversos para as redes locais"
-msgid "Do not send probe responses"
-msgstr "Não enviar respostas a sondas"
-
msgid "Domain required"
msgstr "Requerer domínio"
@@ -1153,9 +1140,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Frames Rápidas"
-
msgid "File"
msgstr "Ficheiro"
@@ -1191,6 +1175,9 @@ msgstr "Terminar"
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Definições da Firewall"
@@ -1236,6 +1223,9 @@ msgstr "Forçar TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Forçar TKIP e CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1639,6 +1629,9 @@ msgstr "O ID de VLAN fornecido é inválido! Só os IDs únicos são permitidos.
msgid "Invalid username and/or password! Please try again."
msgstr "Username inválido e/ou a password! Por favor, tente novamente."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1647,8 +1640,8 @@ msgstr ""
"A imagem que está a tentar carregar aparenta não caber na flash do "
"equipamento. Por favor verifique o ficheiro de imagem."
-msgid "Java Script required!"
-msgstr "É necessário Javascript!"
+msgid "JavaScript required!"
+msgstr "É necessário JavaScript!"
msgid "Join Network"
msgstr "Associar Rede"
@@ -1916,9 +1909,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Taxa Máxima"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Número máximo permitido de concessões DHCP ativas"
@@ -1954,9 +1944,6 @@ msgstr "Uso de memória (%)"
msgid "Metric"
msgstr "Métrica"
-msgid "Minimum Rate"
-msgstr "Taxa Mínima"
-
msgid "Minimum hold time"
msgstr "Tempo de retenção mínimo"
@@ -2030,9 +2017,6 @@ msgstr "Subir"
msgid "Move up"
msgstr "Descer"
-msgid "Multicast Rate"
-msgstr "Taxa de Multicast"
-
msgid "Multicast address"
msgstr "Endereço de multicast"
@@ -2045,6 +2029,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2238,8 +2225,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2276,9 +2268,6 @@ msgstr "Saída"
msgid "Outbound:"
msgstr "Saída:"
-msgid "Outdoor Channels"
-msgstr "Canais de Outdoor"
-
msgid "Output Interface"
msgstr ""
@@ -2458,6 +2447,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2657,9 +2652,6 @@ msgstr "A reconectar interface"
msgid "References"
msgstr "Referências"
-msgid "Regulatory Domain"
-msgstr "Domínio Regulatório"
-
msgid "Relay"
msgstr ""
@@ -2708,15 +2700,15 @@ msgstr "Necessário para certos ISPs, p.ex. Charter with DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2862,9 +2854,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Isolar Clientes"
-msgid "Separate WDS"
-msgstr "Separar WDS"
-
msgid "Server Settings"
msgstr ""
@@ -2888,6 +2877,11 @@ msgstr "Tipo de Serviço"
msgid "Services"
msgstr "Serviços"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Configurar Sincronização Horária"
@@ -3023,9 +3017,6 @@ msgstr "Atribuições Estáticas"
msgid "Static Routes"
msgstr "Rotas Estáticas"
-msgid "Static WDS"
-msgstr "WDS Estático"
-
msgid "Static address"
msgstr "Endereço estático"
@@ -3434,9 +3425,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Modo Turbo"
-
msgid "Tx-Power"
msgstr "Potência de Tx"
@@ -3716,9 +3704,6 @@ msgstr "Escrever os pedidos de DNS para o syslog"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Suporte XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3731,9 +3716,9 @@ msgstr ""
"inacessível!</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Tem de activar o Java Script no seu browser ou a LuCI não funcionará "
+"Tem de activar o JavaScript no seu browser ou a LuCI não funcionará "
"corretamente."
msgid ""
@@ -3907,6 +3892,54 @@ msgstr "sim"
msgid "« Back"
msgstr "« Voltar"
+#~ msgid "AR Support"
+#~ msgstr "Suporte AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Controlador Wireless Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "Procurar em Segundo Plano"
+
+#~ msgid "Compression"
+#~ msgstr "Compressão"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Desativar temporizador de HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Não enviar respostas a sondas"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Frames Rápidas"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Taxa Máxima"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Taxa Mínima"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Taxa de Multicast"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Canais de Outdoor"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Domínio Regulatório"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Separar WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS Estático"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Modo Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Suporte XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Uma rede adicional será criada se deixar isto desmarcado."
diff --git a/modules/luci-base/po/ro/base.po b/modules/luci-base/po/ro/base.po
index 365574b174..1de4157766 100644
--- a/modules/luci-base/po/ro/base.po
+++ b/modules/luci-base/po/ro/base.po
@@ -148,6 +148,11 @@ msgstr "<abbr title=\"maximal\">Max.</abbr> interogari simultane"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -166,9 +171,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "Suport AR"
-
msgid "ARP retry threshold"
msgstr "ARP prag reincercare"
@@ -409,9 +411,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "Statiile asociate"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s Controler Fara Fir"
-
msgid "Auth Group"
msgstr ""
@@ -490,9 +489,6 @@ msgstr "Inapoi la vedere generala"
msgid "Back to scan results"
msgstr "Inapoi la rezultatele scanarii"
-msgid "Background Scan"
-msgstr "Scanare in fundal"
-
msgid "Backup / Flash Firmware"
msgstr "Salveaza / Scrie Firmware"
@@ -650,9 +646,6 @@ msgstr "Comanda"
msgid "Common Configuration"
msgstr "Configurarea obisnuita"
-msgid "Compression"
-msgstr "Comprimare"
-
msgid "Configuration"
msgstr "Configurare"
@@ -868,9 +861,6 @@ msgstr "Dezactiveaza configuratia DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
msgid "Disabled"
msgstr "Dezactivat"
@@ -911,9 +901,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr ""
-
msgid "Domain required"
msgstr "Domeniul necesar"
@@ -1105,9 +1092,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr ""
-
msgid "File"
msgstr "Fisier"
@@ -1143,6 +1127,9 @@ msgstr "Termina"
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Setarile firewall-ului"
@@ -1189,6 +1176,9 @@ msgstr "Forteaza TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Forteaza TKIP si CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1579,6 +1569,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "Utilizator si/sau parola invalide! Incearcati din nou."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1587,8 +1580,8 @@ msgstr ""
"Se pare ca ai incercat sa rescrii o imagine care nu are loc in memoria "
"flash, verifica fisierul din nou!"
-msgid "Java Script required!"
-msgstr "Ai nevoie de Java Script !"
+msgid "JavaScript required!"
+msgstr "Ai nevoie de JavaScript !"
msgid "Join Network"
msgstr ""
@@ -1848,9 +1841,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Rata maxima"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1886,9 +1876,6 @@ msgstr "Utilizarea memoriei (%)"
msgid "Metric"
msgstr "Metrica"
-msgid "Minimum Rate"
-msgstr "Rata minima"
-
msgid "Minimum hold time"
msgstr ""
@@ -1960,9 +1947,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr "Rata de multicast"
-
msgid "Multicast address"
msgstr ""
@@ -1975,6 +1959,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2162,8 +2149,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2200,9 +2192,6 @@ msgstr "Iesire"
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr ""
-
msgid "Output Interface"
msgstr ""
@@ -2382,6 +2371,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2570,9 +2565,6 @@ msgstr "Interfata se reconecteaza chiar acum"
msgid "References"
msgstr "Referinte"
-msgid "Regulatory Domain"
-msgstr "Domeniu regulatoriu"
-
msgid "Relay"
msgstr ""
@@ -2621,15 +2613,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2772,9 +2764,6 @@ msgstr ""
msgid "Separate Clients"
msgstr ""
-msgid "Separate WDS"
-msgstr ""
-
msgid "Server Settings"
msgstr "Setarile serverului"
@@ -2798,6 +2787,11 @@ msgstr "Tip de serviciu"
msgid "Services"
msgstr "Servicii"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Configurare sincronizare timp"
@@ -2933,9 +2927,6 @@ msgstr ""
msgid "Static Routes"
msgstr "Rute statice"
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3301,9 +3292,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Mod turbo"
-
msgid "Tx-Power"
msgstr "Puterea TX"
@@ -3583,9 +3571,6 @@ msgstr "Scrie cererile DNS primite in syslog"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Suport XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3593,7 +3578,7 @@ msgid ""
msgstr ""
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
@@ -3763,6 +3748,36 @@ msgstr "da"
msgid "« Back"
msgstr "« Inapoi"
+#~ msgid "AR Support"
+#~ msgstr "Suport AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s Controler Fara Fir"
+
+#~ msgid "Background Scan"
+#~ msgstr "Scanare in fundal"
+
+#~ msgid "Compression"
+#~ msgstr "Comprimare"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Rata maxima"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Rata minima"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Rata de multicast"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Domeniu regulatoriu"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Mod turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Suport XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr ""
#~ "Daca lasati aceasta optiune neselectata va fi creata o retea aditionala"
diff --git a/modules/luci-base/po/ru/base.po b/modules/luci-base/po/ru/base.po
index d11fbc2cde..29077054f8 100644
--- a/modules/luci-base/po/ru/base.po
+++ b/modules/luci-base/po/ru/base.po
@@ -155,6 +155,11 @@ msgstr ""
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr "<abbr title='Парный: %s / Групповой: %s'>%s - %s</abbr>"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -173,9 +178,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "Поддержка AR"
-
msgid "ARP retry threshold"
msgstr "Порог повтора ARP"
@@ -422,9 +424,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "Подключенные клиенты"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "БеÑпроводной 802.11%s контроллер Atheros"
-
msgid "Auth Group"
msgstr ""
@@ -503,9 +502,6 @@ msgstr "Ðазад к обзору"
msgid "Back to scan results"
msgstr "Ðазад к результатам ÑканированиÑ"
-msgid "Background Scan"
-msgstr "Фоновое Ñканирование"
-
msgid "Backup / Flash Firmware"
msgstr "Ð ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ / прошивка"
@@ -675,9 +671,6 @@ msgstr "Команда"
msgid "Common Configuration"
msgstr "ÐžÐ±Ñ‰Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ"
-msgid "Compression"
-msgstr "Сжатие"
-
msgid "Configuration"
msgstr "КонфигурациÑ"
@@ -897,9 +890,6 @@ msgstr "Отключить наÑтройку DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Отключить таймер HW-Beacon"
-
msgid "Disabled"
msgstr "Отключено"
@@ -946,9 +936,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Ðе перенаправлÑÑ‚ÑŒ обратные DNS-запроÑÑ‹ Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñетей"
-msgid "Do not send probe responses"
-msgstr "Ðе поÑылать теÑтовые ответы"
-
msgid "Domain required"
msgstr "ТребуетÑÑ Ð´Ð¾Ð¼ÐµÐ½"
@@ -1154,9 +1141,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "БыÑтрые кадры"
-
msgid "File"
msgstr "Файл"
@@ -1192,6 +1176,9 @@ msgstr "Завершить"
msgid "Firewall"
msgstr "МежÑетевой Ñкран"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "ÐаÑтройки межÑетевого Ñкрана"
@@ -1238,6 +1225,9 @@ msgstr "Требовать TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "TKIP или CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1643,6 +1633,9 @@ msgstr "Указан неверный VLAN ID! ДоÑтупны только уÐ
msgid "Invalid username and/or password! Please try again."
msgstr "Ðеверный логин и/или пароль! ПожалуйÑта попробуйте Ñнова."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1651,8 +1644,8 @@ msgstr ""
"Ð’Ñ‹ пытаетеÑÑŒ обновить прошивку файлом, который не помещаетÑÑ Ð² памÑÑ‚ÑŒ "
"уÑтройÑтва! ПожалуйÑта, проверьте файл образа."
-msgid "Java Script required!"
-msgstr "ТребуетÑÑ Java Script!"
+msgid "JavaScript required!"
+msgstr "ТребуетÑÑ JavaScript!"
msgid "Join Network"
msgstr "Подключение к Ñети"
@@ -1921,9 +1914,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑкороÑÑ‚ÑŒ"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "МакÑимальное количеÑтво активных арендованных DHCP-адреÑов"
@@ -1959,9 +1949,6 @@ msgstr "ИÑпользование памÑти (%)"
msgid "Metric"
msgstr "Метрика"
-msgid "Minimum Rate"
-msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑкороÑÑ‚ÑŒ"
-
msgid "Minimum hold time"
msgstr "Минимальное Ð²Ñ€ÐµÐ¼Ñ ÑƒÐ´ÐµÑ€Ð¶Ð°Ð½Ð¸Ñ"
@@ -2036,9 +2023,6 @@ msgstr "ПеремеÑтить вниз"
msgid "Move up"
msgstr "ПеремеÑтить вверх"
-msgid "Multicast Rate"
-msgstr "СкороÑÑ‚ÑŒ групповой передачи"
-
msgid "Multicast address"
msgstr "ÐÐ´Ñ€ÐµÑ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð¾Ð¹ передачи"
@@ -2051,6 +2035,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2244,8 +2231,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2282,9 +2274,6 @@ msgstr "Вне"
msgid "Outbound:"
msgstr "ИÑходÑщий:"
-msgid "Outdoor Channels"
-msgstr "Внешние каналы"
-
msgid "Output Interface"
msgstr ""
@@ -2466,6 +2455,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2668,9 +2663,6 @@ msgstr "Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð°ÐµÑ‚ÑÑ"
msgid "References"
msgstr "СÑылки"
-msgid "Regulatory Domain"
-msgstr "ÐÐ¾Ñ€Ð¼Ð°Ñ‚Ð¸Ð²Ð½Ð°Ñ Ð·Ð¾Ð½Ð°"
-
msgid "Relay"
msgstr "РетранÑлÑтор"
@@ -2719,15 +2711,15 @@ msgstr "ТребуетÑÑ Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… интернет-прова
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2874,9 +2866,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "РазделÑÑ‚ÑŒ клиентов"
-msgid "Separate WDS"
-msgstr "Отдельный WDS"
-
msgid "Server Settings"
msgstr "ÐаÑтройки Ñервера"
@@ -2900,6 +2889,11 @@ msgstr "Тип Ñлужбы"
msgid "Services"
msgstr "СервиÑÑ‹"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "ÐаÑтроить Ñинхронизацию времени"
@@ -3041,9 +3035,6 @@ msgstr "ПоÑтоÑнные аренды"
msgid "Static Routes"
msgstr "СтатичеÑкие маршруты"
-msgid "Static WDS"
-msgstr "СтатичеÑкий WDS"
-
msgid "Static address"
msgstr "СтатичеÑкий адреÑ"
@@ -3468,9 +3459,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Турбо-режим"
-
msgid "Tx-Power"
msgstr "МощноÑÑ‚ÑŒ передатчика"
@@ -3758,9 +3746,6 @@ msgstr "ЗапиÑывать полученные DNS-запроÑÑ‹ в ÑиÑÑ‚
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Поддержка XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3772,9 +3757,9 @@ msgstr ""
"(например \"network\"), ваше уÑтройÑтво может оказатьÑÑ Ð½ÐµÐ´Ð¾Ñтупным!</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Вам необходимо включить Java Script в вашем браузере Ð´Ð»Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¹ работы "
+"Вам необходимо включить JavaScript в вашем браузере Ð´Ð»Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¹ работы "
"LuCI."
msgid ""
@@ -3948,6 +3933,54 @@ msgstr "да"
msgid "« Back"
msgstr "« Ðазад"
+#~ msgid "AR Support"
+#~ msgstr "Поддержка AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "БеÑпроводной 802.11%s контроллер Atheros"
+
+#~ msgid "Background Scan"
+#~ msgstr "Фоновое Ñканирование"
+
+#~ msgid "Compression"
+#~ msgstr "Сжатие"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Отключить таймер HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Ðе поÑылать теÑтовые ответы"
+
+#~ msgid "Fast Frames"
+#~ msgstr "БыÑтрые кадры"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑкороÑÑ‚ÑŒ"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑкороÑÑ‚ÑŒ"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "СкороÑÑ‚ÑŒ групповой передачи"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Внешние каналы"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "ÐÐ¾Ñ€Ð¼Ð°Ñ‚Ð¸Ð²Ð½Ð°Ñ Ð·Ð¾Ð½Ð°"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Отдельный WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "СтатичеÑкий WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Турбо-режим"
+
+#~ msgid "XR Support"
+#~ msgstr "Поддержка XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr ""
#~ "ЕÑли вы не выберите Ñту опцию, то будет Ñоздана Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñеть."
diff --git a/modules/luci-base/po/sk/base.po b/modules/luci-base/po/sk/base.po
index 017865d138..318d6f3081 100644
--- a/modules/luci-base/po/sk/base.po
+++ b/modules/luci-base/po/sk/base.po
@@ -139,6 +139,11 @@ msgstr ""
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr ""
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -157,9 +162,6 @@ msgstr ""
msgid "APN"
msgstr ""
-msgid "AR Support"
-msgstr ""
-
msgid "ARP retry threshold"
msgstr ""
@@ -395,9 +397,6 @@ msgstr ""
msgid "Associated Stations"
msgstr ""
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
msgid "Auth Group"
msgstr ""
@@ -476,9 +475,6 @@ msgstr ""
msgid "Back to scan results"
msgstr ""
-msgid "Background Scan"
-msgstr ""
-
msgid "Backup / Flash Firmware"
msgstr ""
@@ -633,9 +629,6 @@ msgstr ""
msgid "Common Configuration"
msgstr ""
-msgid "Compression"
-msgstr ""
-
msgid "Configuration"
msgstr ""
@@ -849,9 +842,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
msgid "Disabled"
msgstr ""
@@ -892,9 +882,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr ""
-
msgid "Domain required"
msgstr ""
@@ -1086,9 +1073,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr ""
-
msgid "File"
msgstr ""
@@ -1124,6 +1108,9 @@ msgstr ""
msgid "Firewall"
msgstr ""
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr ""
@@ -1169,6 +1156,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1557,12 +1547,15 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr ""
+msgid "Isolate Clients"
+msgstr ""
+
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
msgstr ""
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
msgid "Join Network"
@@ -1823,9 +1816,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr ""
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1861,9 +1851,6 @@ msgstr ""
msgid "Metric"
msgstr ""
-msgid "Minimum Rate"
-msgstr ""
-
msgid "Minimum hold time"
msgstr ""
@@ -1935,9 +1922,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr ""
-
msgid "Multicast address"
msgstr ""
@@ -1950,6 +1934,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2137,8 +2124,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2175,9 +2167,6 @@ msgstr ""
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr ""
-
msgid "Output Interface"
msgstr ""
@@ -2357,6 +2346,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2543,9 +2538,6 @@ msgstr ""
msgid "References"
msgstr ""
-msgid "Regulatory Domain"
-msgstr ""
-
msgid "Relay"
msgstr ""
@@ -2594,15 +2586,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2745,9 +2737,6 @@ msgstr ""
msgid "Separate Clients"
msgstr ""
-msgid "Separate WDS"
-msgstr ""
-
msgid "Server Settings"
msgstr ""
@@ -2771,6 +2760,11 @@ msgstr ""
msgid "Services"
msgstr ""
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2905,9 +2899,6 @@ msgstr ""
msgid "Static Routes"
msgstr ""
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3271,9 +3262,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr ""
-
msgid "Tx-Power"
msgstr ""
@@ -3551,9 +3539,6 @@ msgstr ""
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr ""
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3561,7 +3546,7 @@ msgid ""
msgstr ""
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
diff --git a/modules/luci-base/po/sv/base.po b/modules/luci-base/po/sv/base.po
index e7e437fe5c..4e262efb16 100644
--- a/modules/luci-base/po/sv/base.po
+++ b/modules/luci-base/po/sv/base.po
@@ -145,6 +145,11 @@ msgstr ""
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr ""
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -163,9 +168,6 @@ msgstr ""
msgid "APN"
msgstr ""
-msgid "AR Support"
-msgstr ""
-
msgid "ARP retry threshold"
msgstr ""
@@ -401,9 +403,6 @@ msgstr ""
msgid "Associated Stations"
msgstr ""
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
msgid "Auth Group"
msgstr ""
@@ -482,9 +481,6 @@ msgstr ""
msgid "Back to scan results"
msgstr ""
-msgid "Background Scan"
-msgstr ""
-
msgid "Backup / Flash Firmware"
msgstr ""
@@ -639,9 +635,6 @@ msgstr ""
msgid "Common Configuration"
msgstr ""
-msgid "Compression"
-msgstr ""
-
msgid "Configuration"
msgstr ""
@@ -855,9 +848,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
msgid "Disabled"
msgstr ""
@@ -898,9 +888,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr ""
-
msgid "Domain required"
msgstr ""
@@ -1092,9 +1079,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr ""
-
msgid "File"
msgstr ""
@@ -1130,6 +1114,9 @@ msgstr ""
msgid "Firewall"
msgstr ""
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr ""
@@ -1175,6 +1162,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1563,12 +1553,15 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr ""
+msgid "Isolate Clients"
+msgstr ""
+
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
msgstr ""
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
msgid "Join Network"
@@ -1829,9 +1822,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr ""
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1867,9 +1857,6 @@ msgstr ""
msgid "Metric"
msgstr ""
-msgid "Minimum Rate"
-msgstr ""
-
msgid "Minimum hold time"
msgstr ""
@@ -1941,9 +1928,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr ""
-
msgid "Multicast address"
msgstr ""
@@ -1956,6 +1940,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2143,8 +2130,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2181,9 +2173,6 @@ msgstr ""
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr ""
-
msgid "Output Interface"
msgstr ""
@@ -2363,6 +2352,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2549,9 +2544,6 @@ msgstr ""
msgid "References"
msgstr ""
-msgid "Regulatory Domain"
-msgstr ""
-
msgid "Relay"
msgstr ""
@@ -2600,15 +2592,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2751,9 +2743,6 @@ msgstr ""
msgid "Separate Clients"
msgstr ""
-msgid "Separate WDS"
-msgstr ""
-
msgid "Server Settings"
msgstr ""
@@ -2777,6 +2766,11 @@ msgstr ""
msgid "Services"
msgstr ""
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2911,9 +2905,6 @@ msgstr ""
msgid "Static Routes"
msgstr ""
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3277,9 +3268,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr ""
-
msgid "Tx-Power"
msgstr ""
@@ -3557,9 +3545,6 @@ msgstr ""
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr ""
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3567,7 +3552,7 @@ msgid ""
msgstr ""
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
diff --git a/modules/luci-base/po/templates/base.pot b/modules/luci-base/po/templates/base.pot
index cc47c2c6f2..704c295f02 100644
--- a/modules/luci-base/po/templates/base.pot
+++ b/modules/luci-base/po/templates/base.pot
@@ -132,6 +132,11 @@ msgstr ""
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr ""
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -150,9 +155,6 @@ msgstr ""
msgid "APN"
msgstr ""
-msgid "AR Support"
-msgstr ""
-
msgid "ARP retry threshold"
msgstr ""
@@ -388,9 +390,6 @@ msgstr ""
msgid "Associated Stations"
msgstr ""
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
msgid "Auth Group"
msgstr ""
@@ -469,9 +468,6 @@ msgstr ""
msgid "Back to scan results"
msgstr ""
-msgid "Background Scan"
-msgstr ""
-
msgid "Backup / Flash Firmware"
msgstr ""
@@ -626,9 +622,6 @@ msgstr ""
msgid "Common Configuration"
msgstr ""
-msgid "Compression"
-msgstr ""
-
msgid "Configuration"
msgstr ""
@@ -842,9 +835,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
msgid "Disabled"
msgstr ""
@@ -885,9 +875,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr ""
-
msgid "Domain required"
msgstr ""
@@ -1079,9 +1066,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr ""
-
msgid "File"
msgstr ""
@@ -1117,6 +1101,9 @@ msgstr ""
msgid "Firewall"
msgstr ""
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr ""
@@ -1162,6 +1149,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1550,12 +1540,15 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr ""
+msgid "Isolate Clients"
+msgstr ""
+
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
msgstr ""
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
msgid "Join Network"
@@ -1816,9 +1809,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr ""
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1854,9 +1844,6 @@ msgstr ""
msgid "Metric"
msgstr ""
-msgid "Minimum Rate"
-msgstr ""
-
msgid "Minimum hold time"
msgstr ""
@@ -1928,9 +1915,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr ""
-
msgid "Multicast address"
msgstr ""
@@ -1943,6 +1927,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2130,8 +2117,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2168,9 +2160,6 @@ msgstr ""
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr ""
-
msgid "Output Interface"
msgstr ""
@@ -2350,6 +2339,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2536,9 +2531,6 @@ msgstr ""
msgid "References"
msgstr ""
-msgid "Regulatory Domain"
-msgstr ""
-
msgid "Relay"
msgstr ""
@@ -2587,15 +2579,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2738,9 +2730,6 @@ msgstr ""
msgid "Separate Clients"
msgstr ""
-msgid "Separate WDS"
-msgstr ""
-
msgid "Server Settings"
msgstr ""
@@ -2764,6 +2753,11 @@ msgstr ""
msgid "Services"
msgstr ""
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2898,9 +2892,6 @@ msgstr ""
msgid "Static Routes"
msgstr ""
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3264,9 +3255,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr ""
-
msgid "Tx-Power"
msgstr ""
@@ -3544,9 +3532,6 @@ msgstr ""
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr ""
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3554,7 +3539,7 @@ msgid ""
msgstr ""
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
diff --git a/modules/luci-base/po/tr/base.po b/modules/luci-base/po/tr/base.po
index 09312734a2..5f829e0b7e 100644
--- a/modules/luci-base/po/tr/base.po
+++ b/modules/luci-base/po/tr/base.po
@@ -148,6 +148,11 @@ msgstr "<abbr title=\"maximal\">Maks.</abbr> eşzamanlı sorgu"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr ""
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -166,9 +171,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "AR DesteÄŸi"
-
msgid "ARP retry threshold"
msgstr "ARP yenileme aralığı"
@@ -408,9 +410,6 @@ msgstr ""
msgid "Associated Stations"
msgstr ""
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s Kablosuz Denetleyicisi"
-
msgid "Auth Group"
msgstr ""
@@ -489,9 +488,6 @@ msgstr "Genel Bakışa dön"
msgid "Back to scan results"
msgstr "Tarama sonuçlarına dön"
-msgid "Background Scan"
-msgstr "Arka Planda Tarama"
-
msgid "Backup / Flash Firmware"
msgstr ""
@@ -646,9 +642,6 @@ msgstr ""
msgid "Common Configuration"
msgstr ""
-msgid "Compression"
-msgstr ""
-
msgid "Configuration"
msgstr ""
@@ -862,9 +855,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
msgid "Disabled"
msgstr ""
@@ -905,9 +895,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr ""
-
msgid "Domain required"
msgstr ""
@@ -1099,9 +1086,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr ""
-
msgid "File"
msgstr ""
@@ -1137,6 +1121,9 @@ msgstr ""
msgid "Firewall"
msgstr ""
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr ""
@@ -1182,6 +1169,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1570,12 +1560,15 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr ""
+msgid "Isolate Clients"
+msgstr ""
+
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
msgstr ""
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
msgid "Join Network"
@@ -1836,9 +1829,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr ""
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1874,9 +1864,6 @@ msgstr ""
msgid "Metric"
msgstr ""
-msgid "Minimum Rate"
-msgstr ""
-
msgid "Minimum hold time"
msgstr ""
@@ -1948,9 +1935,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr ""
-
msgid "Multicast address"
msgstr ""
@@ -1963,6 +1947,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2150,8 +2137,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2188,9 +2180,6 @@ msgstr ""
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr ""
-
msgid "Output Interface"
msgstr ""
@@ -2370,6 +2359,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2556,9 +2551,6 @@ msgstr ""
msgid "References"
msgstr ""
-msgid "Regulatory Domain"
-msgstr ""
-
msgid "Relay"
msgstr ""
@@ -2607,15 +2599,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2758,9 +2750,6 @@ msgstr ""
msgid "Separate Clients"
msgstr ""
-msgid "Separate WDS"
-msgstr ""
-
msgid "Server Settings"
msgstr ""
@@ -2784,6 +2773,11 @@ msgstr ""
msgid "Services"
msgstr ""
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2918,9 +2912,6 @@ msgstr ""
msgid "Static Routes"
msgstr ""
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3284,9 +3275,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr ""
-
msgid "Tx-Power"
msgstr ""
@@ -3564,9 +3552,6 @@ msgstr ""
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr ""
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3574,7 +3559,7 @@ msgid ""
msgstr ""
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
"LuCI'nin düzgün çalışması için tarayıcınızda Java Scripti "
"etkinleÅŸtirmelisiniz."
@@ -3745,3 +3730,12 @@ msgstr "evet"
msgid "« Back"
msgstr "« Geri"
+
+#~ msgid "AR Support"
+#~ msgstr "AR DesteÄŸi"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s Kablosuz Denetleyicisi"
+
+#~ msgid "Background Scan"
+#~ msgstr "Arka Planda Tarama"
diff --git a/modules/luci-base/po/uk/base.po b/modules/luci-base/po/uk/base.po
index 5abf039e85..34bfb29160 100644
--- a/modules/luci-base/po/uk/base.po
+++ b/modules/luci-base/po/uk/base.po
@@ -163,6 +163,11 @@ msgstr "<abbr title=\"МакÑимум\">Max.</abbr> одночаÑних зап
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr "<abbr title='Парний: %s / Груповий: %s'>%s - %s</abbr>"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -182,9 +187,6 @@ msgid "APN"
msgstr ""
"<abbr title=\"Access Point Name — Ñимволічна назва точки доÑтупу\">APN</abbr>"
-msgid "AR Support"
-msgstr "Підтримка AR"
-
msgid "ARP retry threshold"
msgstr "Поріг повтору ARP"
@@ -432,9 +434,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "Приєднані Ñтанції"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Бездротовий 802.11%s контролер Atheros"
-
msgid "Auth Group"
msgstr ""
@@ -513,9 +512,6 @@ msgstr "ПовернутиÑÑ Ð´Ð¾ переліку"
msgid "Back to scan results"
msgstr "ПовернутиÑÑ Ð´Ð¾ результатів ÑкануваннÑ"
-msgid "Background Scan"
-msgstr "Ð¡ÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ фоновому режимі"
-
msgid "Backup / Flash Firmware"
msgstr "Резервне ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ / ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸"
@@ -684,9 +680,6 @@ msgstr "Команда"
msgid "Common Configuration"
msgstr "Загальна конфігураціÑ"
-msgid "Compression"
-msgstr "СтиÑненнÑ"
-
msgid "Configuration"
msgstr "КонфігураціÑ"
@@ -907,9 +900,6 @@ msgstr "Вимкнути наÑÑ‚Ñ€Ð¾ÑŽÐ²Ð°Ð½Ð½Ñ DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Вимкнути таймер HW-Beacon"
-
msgid "Disabled"
msgstr "Вимкнено"
@@ -957,9 +947,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Ðе ÑпрÑмовувати зворотний переглÑд Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ñ… мереж"
-msgid "Do not send probe responses"
-msgstr "Ðе надÑилати відповіді на зондуваннÑ"
-
msgid "Domain required"
msgstr "Потрібен домен"
@@ -1162,9 +1149,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Швидкі фрейми"
-
msgid "File"
msgstr "Файл"
@@ -1200,6 +1184,9 @@ msgstr "Готово"
msgid "Firewall"
msgstr "Брандмауер"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "ÐаÑтройки брандмауера"
@@ -1245,6 +1232,9 @@ msgstr "ПримуÑово TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "ПримуÑово TKIP та CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1650,6 +1640,9 @@ msgstr "Задано невірний VLAN ID! ДоÑтупні тільки уÐ
msgid "Invalid username and/or password! Please try again."
msgstr "ÐеприпуÑтиме Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача та/або пароль! Спробуйте ще раз."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1658,8 +1651,8 @@ msgstr ""
"Схоже, що ви намагаєтеÑÑ Ð·Ð°Ð»Ð¸Ñ‚Ð¸ образ, Ñкий не вміщаєтьÑÑ Ñƒ флеш-пам'ÑÑ‚ÑŒ! "
"Перевірте файл образу!"
-msgid "Java Script required!"
-msgstr "Потрібен Java Script!"
+msgid "JavaScript required!"
+msgstr "Потрібен JavaScript!"
msgid "Join Network"
msgstr "ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ мережі"
@@ -1930,9 +1923,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "МакÑимальна швидкіÑÑ‚ÑŒ"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "МакÑимально допуÑтима кількіÑÑ‚ÑŒ активних оренд DHCP"
@@ -1968,9 +1958,6 @@ msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ð°Ð¼'ÑÑ‚Ñ–, %"
msgid "Metric"
msgstr "Метрика"
-msgid "Minimum Rate"
-msgstr "Мінімальна швидкіÑÑ‚ÑŒ"
-
msgid "Minimum hold time"
msgstr "Мінімальний Ñ‡Ð°Ñ ÑƒÑ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ"
@@ -2044,9 +2031,6 @@ msgstr "Вниз"
msgid "Move up"
msgstr "Вгору"
-msgid "Multicast Rate"
-msgstr "ШвидкіÑÑ‚ÑŒ багатоадреÑного потоку"
-
msgid "Multicast address"
msgstr "ÐдреÑа багатоадреÑного потоку"
@@ -2059,6 +2043,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2252,8 +2239,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2290,9 +2282,6 @@ msgstr "Вих."
msgid "Outbound:"
msgstr "Вихідний:"
-msgid "Outdoor Channels"
-msgstr "Зовнішні канали"
-
msgid "Output Interface"
msgstr ""
@@ -2477,6 +2466,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2681,9 +2676,6 @@ msgstr "ÐŸÐµÑ€ÐµÐ¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñу"
msgid "References"
msgstr "ПоÑиланнÑ"
-msgid "Regulatory Domain"
-msgstr "РегулÑтивний домен"
-
msgid "Relay"
msgstr "РетранÑлÑтор"
@@ -2732,15 +2724,15 @@ msgstr "Потрібно Ð´Ð»Ñ Ð´ÐµÑких провайдерів, наприÐ
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2887,9 +2879,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "РозділÑти клієнтів"
-msgid "Separate WDS"
-msgstr "РозділÑти WDS"
-
msgid "Server Settings"
msgstr "ÐаÑтройки Ñервера"
@@ -2913,6 +2902,11 @@ msgstr "Тип ÑервіÑу"
msgid "Services"
msgstr "СервіÑи"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "ÐаÑтройки Ñинхронізації чаÑу"
@@ -3055,9 +3049,6 @@ msgstr "Статичні оренди"
msgid "Static Routes"
msgstr "Статичні маршрути"
-msgid "Static WDS"
-msgstr "Статичний WDS"
-
msgid "Static address"
msgstr "Статичні адреÑи"
@@ -3484,9 +3475,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Режим Turbo"
-
msgid "Tx-Power"
msgstr "ПотужніÑÑ‚ÑŒ передавача"
@@ -3773,9 +3761,6 @@ msgstr "ЗапиÑувати отримані DNS-запити до ÑиÑтем
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Підтримка XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3787,9 +3772,9 @@ msgstr ""
"приÑтрій може Ñтати недоÑтупним!</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Ви повинні увімкнути Java Script у вашому браузері, або LuCI не буде "
+"Ви повинні увімкнути JavaScript у вашому браузері, або LuCI не буде "
"працювати належним чином."
msgid ""
@@ -3963,6 +3948,54 @@ msgstr "так"
msgid "« Back"
msgstr "« Ðазад"
+#~ msgid "AR Support"
+#~ msgstr "Підтримка AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Бездротовий 802.11%s контролер Atheros"
+
+#~ msgid "Background Scan"
+#~ msgstr "Ð¡ÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ фоновому режимі"
+
+#~ msgid "Compression"
+#~ msgstr "СтиÑненнÑ"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Вимкнути таймер HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Ðе надÑилати відповіді на зондуваннÑ"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Швидкі фрейми"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "МакÑимальна швидкіÑÑ‚ÑŒ"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Мінімальна швидкіÑÑ‚ÑŒ"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "ШвидкіÑÑ‚ÑŒ багатоадреÑного потоку"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Зовнішні канали"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "РегулÑтивний домен"
+
+#~ msgid "Separate WDS"
+#~ msgstr "РозділÑти WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "Статичний WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Режим Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Підтримка XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Якщо ви залишите це невибраним, буде Ñтворена додаткова мережа."
diff --git a/modules/luci-base/po/vi/base.po b/modules/luci-base/po/vi/base.po
index 162bd30664..213e5efb2f 100644
--- a/modules/luci-base/po/vi/base.po
+++ b/modules/luci-base/po/vi/base.po
@@ -146,6 +146,11 @@ msgstr ""
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr ""
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -164,9 +169,6 @@ msgstr ""
msgid "APN"
msgstr ""
-msgid "AR Support"
-msgstr "Hỗ trợ AR"
-
msgid "ARP retry threshold"
msgstr ""
@@ -402,9 +404,6 @@ msgstr ""
msgid "Associated Stations"
msgstr ""
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
msgid "Auth Group"
msgstr ""
@@ -483,9 +482,6 @@ msgstr ""
msgid "Back to scan results"
msgstr ""
-msgid "Background Scan"
-msgstr "Background Scan"
-
msgid "Backup / Flash Firmware"
msgstr ""
@@ -640,9 +636,6 @@ msgstr "Lệnh"
msgid "Common Configuration"
msgstr ""
-msgid "Compression"
-msgstr "Sức nén"
-
msgid "Configuration"
msgstr "Cấu hình"
@@ -858,9 +851,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Vô hiệu hóa bộ chỉnh giỠHW-Beacon"
-
msgid "Disabled"
msgstr ""
@@ -905,9 +895,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr "Không gửi nhắc hồi đáp"
-
msgid "Domain required"
msgstr "Domain yêu cầu"
@@ -1104,9 +1091,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Khung nhanh"
-
msgid "File"
msgstr ""
@@ -1142,6 +1126,9 @@ msgstr ""
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr ""
@@ -1187,6 +1174,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1582,6 +1572,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "Tên và mật mã không đúng. Xin thử lại "
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1590,7 +1583,7 @@ msgstr ""
"DÆ°á»ng nhÆ° bạn cố gắng flash má»™t hình ảnh không phù hợp vá»›i bá»™ nhá»› flash, xin "
"vui lòng xác minh các tập tin hình ảnh!"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
msgid "Join Network"
@@ -1851,9 +1844,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Mức cao nhất"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1889,9 +1879,6 @@ msgstr "Memory usage (%)"
msgid "Metric"
msgstr "Metric"
-msgid "Minimum Rate"
-msgstr "Mức thấp nhất"
-
msgid "Minimum hold time"
msgstr "Mức thấp nhất"
@@ -1965,9 +1952,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr "Multicast Rate"
-
msgid "Multicast address"
msgstr ""
@@ -1980,6 +1964,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2173,8 +2160,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2211,9 +2203,6 @@ msgstr "Ra khá»i"
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr "Kênh ngoại mạng"
-
msgid "Output Interface"
msgstr ""
@@ -2393,6 +2382,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2581,9 +2576,6 @@ msgstr ""
msgid "References"
msgstr "Tham chiếu"
-msgid "Regulatory Domain"
-msgstr "Miá»n Ä‘iá»u chỉnh"
-
msgid "Relay"
msgstr ""
@@ -2632,15 +2624,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2785,9 +2777,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Cô lập đối tượng"
-msgid "Separate WDS"
-msgstr "Phân tách WDS"
-
msgid "Server Settings"
msgstr ""
@@ -2811,6 +2800,11 @@ msgstr ""
msgid "Services"
msgstr "Dịch vụ "
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2945,9 +2939,6 @@ msgstr "Thống kê leases"
msgid "Static Routes"
msgstr "Static Routes"
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3326,9 +3317,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Turbo Mode"
-
msgid "Tx-Power"
msgstr ""
@@ -3606,9 +3594,6 @@ msgstr ""
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Hỗ trợ XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3620,7 +3605,7 @@ msgstr ""
"bạn chó thể trở nên không truy cập được</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
@@ -3792,3 +3777,45 @@ msgstr ""
msgid "« Back"
msgstr ""
+
+#~ msgid "AR Support"
+#~ msgstr "Hỗ trợ AR"
+
+#~ msgid "Background Scan"
+#~ msgstr "Background Scan"
+
+#~ msgid "Compression"
+#~ msgstr "Sức nén"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Vô hiệu hóa bộ chỉnh giỠHW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Không gửi nhắc hồi đáp"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Khung nhanh"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Mức cao nhất"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Mức thấp nhất"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicast Rate"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Kênh ngoại mạng"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Miá»n Ä‘iá»u chỉnh"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Phân tách WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo Mode"
+
+#~ msgid "XR Support"
+#~ msgstr "Hỗ trợ XR"
diff --git a/modules/luci-base/po/zh-cn/base.po b/modules/luci-base/po/zh-cn/base.po
index dca93f0a19..eb84b22f17 100644
--- a/modules/luci-base/po/zh-cn/base.po
+++ b/modules/luci-base/po/zh-cn/base.po
@@ -3,14 +3,14 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-12-21 23:08+0200\n"
-"PO-Revision-Date: 2017-01-07 21:46+0800\n"
+"PO-Revision-Date: 2017-04-09 15:04+0800\n"
"Last-Translator: Hsing-Wang Liao <kuoruan@gmail.com>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.0\n"
"Language-Team: \n"
msgid "%s is untagged in multiple VLANs!"
@@ -44,43 +44,43 @@ msgid "-- match by label --"
msgstr "-- æ ¹æ®æ ‡ç­¾åŒ¹é… --"
msgid "-- match by uuid --"
-msgstr ""
+msgstr "-- æ ¹æ® UUID åŒ¹é… --"
msgid "1 Minute Load:"
-msgstr "1分钟负载:"
+msgstr "1 分钟负载:"
msgid "15 Minute Load:"
-msgstr "15分钟负载:"
+msgstr "15 分钟负载:"
msgid "4-character hexadecimal ID"
-msgstr ""
+msgstr "4 字符的å六进制 ID"
msgid "464XLAT (CLAT)"
msgstr "464XLAT (CLAT)"
msgid "5 Minute Load:"
-msgstr "5分钟负载:"
+msgstr "5 分钟负载:"
msgid "6-octet identifier as a hex string - no colons"
-msgstr ""
+msgstr "6 个八ä½å­—节的标识符 (å六进制字符串) - 无冒å·"
msgid "802.11r Fast Transition"
-msgstr ""
+msgstr "802.11r 快速转æ¢"
msgid "802.11w Association SA Query maximum timeout"
-msgstr ""
+msgstr "802.11w å…³è” SA 查询最大超时"
msgid "802.11w Association SA Query retry timeout"
-msgstr ""
+msgstr "802.11w å…³è” SA 查询é‡è¯•è¶…æ—¶"
msgid "802.11w Management Frame Protection"
-msgstr ""
+msgstr "802.11w 管ç†å¸§ä¿æŠ¤"
msgid "802.11w maximum timeout"
-msgstr ""
+msgstr "802.11w 最大超时"
msgid "802.11w retry timeout"
-msgstr ""
+msgstr "802.11w é‡è¯•è¶…æ—¶"
msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
msgstr "<abbr title=\"基本æœåŠ¡é›†æ ‡è¯†ç¬¦\">BSSID</abbr>"
@@ -94,7 +94,7 @@ msgstr "<abbr title=\"域åæœåŠ¡ç³»ç»Ÿ\">DNS</abbr> æœåŠ¡å™¨ç«¯å£"
msgid ""
"<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
"order of the resolvfile"
-msgstr "将会按照指定的顺åºæŸ¥è¯¢<abbr title=\"域åæœåŠ¡ç³»ç»Ÿ\">DNS</abbr>"
+msgstr "将会按照指定的顺åºæŸ¥è¯¢ <abbr title=\"域åæœåŠ¡ç³»ç»Ÿ\">DNS</abbr>"
msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
msgstr "<abbr title=\"扩展æœåŠ¡é›†æ ‡è¯†ç¬¦\">ESSID</abbr>"
@@ -112,20 +112,20 @@ msgid ""
"<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
"(CIDR)"
msgstr ""
-"<abbr title=\"互è”网å议第6版\">IPv6</abbr>-地å€æˆ–超网(<abbr title=\"无类别域"
-"间路由\">CIDR</abbr>)"
+"<abbr title=\"互è”网å议第6版\">IPv6</abbr>-地å€æˆ–超网 (<abbr title=\"无类别"
+"域间路由\">CIDR</abbr>)"
msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
msgstr "<abbr title=\"互è”网å议第6版\">IPv6</abbr>-网关"
msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
-msgstr "<abbr title=\"互è”网å议第6版\">IPv6</abbr>-åŽç¼€ï¼ˆå六进制)"
+msgstr "<abbr title=\"互è”网å议第6版\">IPv6</abbr>-åŽç¼€ (å六进制)"
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
-msgstr "<abbr title=\"å‘光二æžç®¡\">LED</abbr>é…ç½®"
+msgstr "<abbr title=\"å‘光二æžç®¡\">LED</abbr> é…ç½®"
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
-msgstr "<abbr title=\"å‘光二æžç®¡\">LED</abbr>å称"
+msgstr "<abbr title=\"å‘光二æžç®¡\">LED</abbr> å称"
msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
msgstr "<abbr title=\"介质访问控制\">MAC</abbr>-地å€"
@@ -133,12 +133,12 @@ msgstr "<abbr title=\"介质访问控制\">MAC</abbr>-地å€"
msgid ""
"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
"Protocol\">DHCP</abbr> leases"
-msgstr "最大<abbr title=\"动æ€ä¸»æœºé…ç½®åè®®\">DHCP</abbr>分é…æ•°é‡"
+msgstr "最大 <abbr title=\"动æ€ä¸»æœºé…ç½®åè®®\">DHCP</abbr> 分é…æ•°é‡"
msgid ""
"<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
"Domain Name System\">EDNS0</abbr> packet size"
-msgstr "最大<abbr title=\"DNS扩展å机制\">EDNS0</abbr>æ•°æ®åŒ…大å°"
+msgstr "最大 <abbr title=\"DNS扩展å机制\">EDNS0</abbr> æ•°æ®åŒ…大å°"
msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "最大并å‘查询数"
@@ -146,6 +146,11 @@ msgstr "最大并å‘查询数"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr "A43C + J43 + A43"
@@ -164,37 +169,34 @@ msgstr "ANSI T1.413"
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "AR支æŒ"
-
msgid "ARP retry threshold"
-msgstr "ARPé‡è¯•é˜ˆå€¼"
+msgstr "ARP é‡è¯•é˜ˆå€¼"
msgid "ATM (Asynchronous Transfer Mode)"
-msgstr "ATM(异步传输模å¼)"
+msgstr "ATM (异步传输模å¼)"
msgid "ATM Bridges"
-msgstr "ATM桥接"
+msgstr "ATM 桥接"
msgid "ATM Virtual Channel Identifier (VCI)"
-msgstr "ATM虚拟通é“标识(VCI)"
+msgstr "ATM 虚拟通é“标识 (VCI)"
msgid "ATM Virtual Path Identifier (VPI)"
-msgstr "ATM虚拟路径标识(VPI)"
+msgstr "ATM 虚拟路径标识 (VPI)"
msgid ""
"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual "
"Linux network interfaces which can be used in conjunction with DHCP or PPP "
"to dial into the provider network."
msgstr ""
-"ATM桥是以AAL5åè®®å°è£…以太网的虚拟Linux网桥,用于ååŒDHCP或PPPæ¥æ‹¨å·è¿žæŽ¥åˆ°ç½‘络"
-"è¿è¥å•†ã€‚"
+"ATM 桥是以 AAL5 åè®®å°è£…以太网的虚拟 Linux 网桥,用于ååŒ DHCP 或 PPP æ¥æ‹¨å·"
+"连接到网络è¿è¥å•†ã€‚"
msgid "ATM device number"
-msgstr "ATM设备å·ç "
+msgstr "ATM 设备å·ç "
msgid "ATU-C System Vendor ID"
-msgstr "ATU-C系统供应商ID"
+msgstr "ATU-C 系统供应商 ID"
msgid "AYIYA"
msgstr "AYIYA"
@@ -203,7 +205,7 @@ msgid "Access Concentrator"
msgstr "接入集中器"
msgid "Access Point"
-msgstr "接入点AP"
+msgstr "接入点 AP"
msgid "Action"
msgstr "动作"
@@ -215,37 +217,37 @@ msgid "Activate this network"
msgstr "激活此网络"
msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
-msgstr "活动的<abbr title=\"互è”网å议第4版\">IPv4</abbr>-链路"
+msgstr "活动的 <abbr title=\"互è”网å议第4版\">IPv4</abbr>-链路"
msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
-msgstr "活动的<abbr title=\"互è”网å议第6版\">IPv6</abbr>-链路"
+msgstr "活动的 <abbr title=\"互è”网å议第6版\">IPv6</abbr>-链路"
msgid "Active Connections"
msgstr "活动连接"
msgid "Active DHCP Leases"
-msgstr "已分é…çš„DHCP租约"
+msgstr "已分é…çš„ DHCP 租约"
msgid "Active DHCPv6 Leases"
-msgstr "已分é…çš„DHCPv6租约"
+msgstr "已分é…çš„ DHCPv6 租约"
msgid "Ad-Hoc"
-msgstr "点对点Ad-Hoc"
+msgstr "点对点 Ad-Hoc"
msgid "Add"
msgstr "添加"
msgid "Add local domain suffix to names served from hosts files"
-msgstr "添加本地域ååŽç¼€åˆ°HOSTS文件中的域å"
+msgstr "添加本地域ååŽç¼€åˆ° HOSTS 文件中的域å"
msgid "Add new interface..."
msgstr "添加新接å£..."
msgid "Additional Hosts files"
-msgstr "é¢å¤–çš„HOSTS文件"
+msgstr "é¢å¤–çš„ HOSTS 文件"
msgid "Additional servers file"
-msgstr "é¢å¤–çš„SERVERS文件"
+msgstr "é¢å¤–çš„ SERVERS 文件"
msgid "Address"
msgstr "地å€"
@@ -260,7 +262,7 @@ msgid "Advanced Settings"
msgstr "高级设置"
msgid "Aggregate Transmit Power(ACTATP)"
-msgstr "总å‘射功率(ACTATP)"
+msgstr "总å‘射功率 (ACTATP)"
msgid "Alert"
msgstr "警戒"
@@ -268,13 +270,13 @@ msgstr "警戒"
msgid ""
"Allocate IP addresses sequentially, starting from the lowest available "
"address"
-msgstr "从最低å¯ç”¨åœ°å€å¼€å§‹é¡ºåºåˆ†é…IP地å€"
+msgstr "从最低å¯ç”¨åœ°å€å¼€å§‹é¡ºåºåˆ†é… IP 地å€"
msgid "Allocate IP sequentially"
-msgstr "顺åºåˆ†é…IP"
+msgstr "顺åºåˆ†é… IP"
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
-msgstr "å…许<abbr title=\"安全外壳åè®®\">SSH</abbr>密ç éªŒè¯"
+msgstr "å…许 <abbr title=\"安全外壳åè®®\">SSH</abbr> 密ç éªŒè¯"
msgid "Allow all except listed"
msgstr "ä»…å…许列表外"
@@ -286,26 +288,26 @@ msgid "Allow localhost"
msgstr "å…许本机"
msgid "Allow remote hosts to connect to local SSH forwarded ports"
-msgstr "å…许远程主机连接到本地SSH转å‘端å£"
+msgstr "å…许远程主机连接到本地 SSH 转å‘端å£"
msgid "Allow root logins with password"
-msgstr "å…许root用户凭密ç ç™»å½•"
+msgstr "å…许 Root 用户凭密ç ç™»å½•"
msgid "Allow the <em>root</em> user to login with password"
-msgstr "å…许<em>root</em>用户凭密ç ç™»å½•"
+msgstr "å…许 <em>root</em> 用户凭密ç ç™»å½•"
msgid ""
"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
-msgstr "å…许127.0.0.0/8回环范围内的上行å“应,例如:RBLæœåŠ¡"
+msgstr "å…许 127.0.0.0/8 回环范围内的上行å“应,例如: RBL æœåŠ¡"
msgid "Allowed IPs"
-msgstr "å…许的IP"
+msgstr "å…许的 IP"
msgid ""
"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison"
"\">Tunneling Comparison</a> on SIXXS"
msgstr ""
-"也请查看SIXXS上的<a href=\"https://www.sixxs.net/faq/connectivity/?"
+"也请查看 SIXXS 上的<a href=\"https://www.sixxs.net/faq/connectivity/?"
"faq=comparison\">隧é“对比</a>"
msgid "Always announce default router"
@@ -360,10 +362,10 @@ msgid "Announce as default router even if no public prefix is available."
msgstr "å³ä½¿æ²¡æœ‰å¯ç”¨çš„公共å‰ç¼€ä¹Ÿå¹¿æ’­é»˜è®¤è·¯ç”±ã€‚"
msgid "Announced DNS domains"
-msgstr "广播的DNS域å"
+msgstr "广播的 DNS 域å"
msgid "Announced DNS servers"
-msgstr "广播的DNSæœåŠ¡å™¨"
+msgstr "广播的 DNS æœåŠ¡å™¨"
msgid "Anonymous Identity"
msgstr "匿å身份"
@@ -372,7 +374,7 @@ msgid "Anonymous Mount"
msgstr "自动挂载未é…置的ç£ç›˜åˆ†åŒº"
msgid "Anonymous Swap"
-msgstr "自动挂载未é…置的Swap分区"
+msgstr "自动挂载未é…置的 Swap 分区"
msgid "Antenna 1"
msgstr "天线 1"
@@ -394,21 +396,18 @@ msgstr "正在应用更改"
msgid ""
"Assign a part of given length of every public IPv6-prefix to this interface"
-msgstr "ç»™æ¯ä¸ªå…¬å…±IPv6å‰ç¼€åˆ†é…指定长度的固定部分"
+msgstr "ç»™æ¯ä¸ªå…¬å…± IPv6 å‰ç¼€åˆ†é…指定长度的固定部分"
msgid "Assign interfaces..."
msgstr "分é…接å£..."
msgid ""
"Assign prefix parts using this hexadecimal subprefix ID for this interface."
-msgstr "指定此接å£ä½¿ç”¨çš„å六进制å­IDå‰ç¼€éƒ¨åˆ†"
+msgstr "指定此接å£ä½¿ç”¨çš„åå…­è¿›åˆ¶å­ ID å‰ç¼€éƒ¨åˆ†ã€‚"
msgid "Associated Stations"
msgstr "已连接站点"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Qualcomm/Atheros 802.11%s 无线网å¡"
-
msgid "Auth Group"
msgstr "认è¯ç»„"
@@ -422,7 +421,7 @@ msgid "Authentication Type"
msgstr "认è¯ç±»åž‹"
msgid "Authoritative"
-msgstr "授æƒçš„唯一DHCPæœåŠ¡å™¨"
+msgstr "唯一授æƒ"
msgid "Authorization Required"
msgstr "需è¦æŽˆæƒ"
@@ -434,22 +433,22 @@ msgid "Automatic"
msgstr "自动"
msgid "Automatic Homenet (HNCP)"
-msgstr "自动家庭网络(HNCP)"
+msgstr "自动家庭网络 (HNCP)"
msgid "Automatically check filesystem for errors before mounting"
msgstr "在挂载å‰è‡ªåŠ¨æ£€æŸ¥æ–‡ä»¶ç³»ç»Ÿé”™è¯¯"
msgid "Automatically mount filesystems on hotplug"
-msgstr "通过Hotplug自动挂载ç£ç›˜"
+msgstr "通过 Hotplug 自动挂载ç£ç›˜"
msgid "Automatically mount swap on hotplug"
-msgstr "通过Hotplug自动挂载Swap分区"
+msgstr "通过 Hotplug 自动挂载 Swap 分区"
msgid "Automount Filesystem"
msgstr "自动挂载ç£ç›˜"
msgid "Automount Swap"
-msgstr "自动挂载Swap"
+msgstr "自动挂载 Swap"
msgid "Available"
msgstr "å¯ç”¨"
@@ -487,9 +486,6 @@ msgstr "返回至概况"
msgid "Back to scan results"
msgstr "返回至扫æ结果"
-msgid "Background Scan"
-msgstr "åŽå°æœç´¢"
-
msgid "Backup / Flash Firmware"
msgstr "备份/å‡çº§"
@@ -506,7 +502,7 @@ msgid "Band"
msgstr "频宽"
msgid "Behind NAT"
-msgstr "在NAT网络内"
+msgstr "在 NAT 网络内"
msgid ""
"Below is the determined list of files to backup. It consists of changed "
@@ -523,7 +519,7 @@ msgid "Bind only to specific interfaces rather than wildcard address."
msgstr "仅绑定到特定接å£ï¼Œè€Œä¸æ˜¯å…¨éƒ¨åœ°å€ã€‚"
msgid "Bind the tunnel to this interface (optional)."
-msgstr "将隧é“绑定到此接å£(å¯é€‰)。"
+msgstr "将隧é“ç»‘å®šåˆ°æ­¤æŽ¥å£ (å¯é€‰)。"
msgid "Bitrate"
msgstr "传输速率"
@@ -561,10 +557,10 @@ msgid "Buttons"
msgstr "按键"
msgid "CA certificate; if empty it will be saved after the first connection."
-msgstr "CAè¯ä¹¦ï¼Œå¦‚果留空的è¯è¯ä¹¦å°†åœ¨ç¬¬ä¸€æ¬¡è¿žæŽ¥æ—¶è¢«ä¿å­˜ã€‚"
+msgstr "CA è¯ä¹¦ï¼Œå¦‚果留空的è¯è¯ä¹¦å°†åœ¨ç¬¬ä¸€æ¬¡è¿žæŽ¥æ—¶è¢«ä¿å­˜ã€‚"
msgid "CPU usage (%)"
-msgstr "CPU使用率(%)"
+msgstr "CPU 使用率 (%)"
msgid "Cancel"
msgstr "å–消"
@@ -594,7 +590,7 @@ msgid "Check fileystems before mount"
msgstr "在挂载å‰æ£€æŸ¥æ–‡ä»¶ç³»ç»Ÿ"
msgid "Check this option to delete the existing networks from this radio."
-msgstr ""
+msgstr "选中此选项以从无线中删除现有网络。"
msgid "Checksum"
msgstr "校验值"
@@ -615,24 +611,26 @@ msgid "Cipher"
msgstr "算法"
msgid "Cisco UDP encapsulation"
-msgstr "Cisco UDPå°è£…"
+msgstr "Cisco UDP å°è£…"
msgid ""
"Click \"Generate archive\" to download a tar archive of the current "
"configuration files. To reset the firmware to its initial state, click "
"\"Perform reset\" (only possible with squashfs images)."
-msgstr "备份/æ¢å¤å½“å‰ç³»ç»Ÿé…置文件或é‡ç½®OpenWrt(ä»…squashfs固件有效)。"
+msgstr ""
+"点击“生æˆå¤‡ä»½â€ä¸‹è½½å½“å‰é…置文件的 tar 存档。è¦å°†å›ºä»¶æ¢å¤åˆ°åˆå§‹çŠ¶æ€ï¼Œè¯·å•å‡»â€œæ‰§"
+"è¡Œé‡ç½®â€ (ä»… Squashfs 固件有效)。"
msgid "Client"
-msgstr "客户端Client"
+msgstr "客户端 Client"
msgid "Client ID to send when requesting DHCP"
-msgstr "请求DHCPæ—¶å‘é€çš„客户ID"
+msgstr "请求 DHCP æ—¶å‘é€çš„客户 ID"
msgid ""
"Close inactive connection after the given amount of seconds, use 0 to "
"persist connection"
-msgstr "定时关闭éžæ´»åŠ¨é“¾æŽ¥(秒),0为æŒç»­è¿žæŽ¥"
+msgstr "定时关闭éžæ´»åŠ¨é“¾æŽ¥ (秒),0 为æŒç»­è¿žæŽ¥"
msgid "Close list..."
msgstr "关闭列表..."
@@ -646,14 +644,11 @@ msgstr "进程命令"
msgid "Common Configuration"
msgstr "一般设置"
-msgid "Compression"
-msgstr "压缩"
-
msgid "Configuration"
msgstr "é…ç½®"
msgid "Configuration applied."
-msgstr "é…置已应用"
+msgstr "é…置已应用。"
msgid "Configuration files will be kept."
msgstr "é…置文件将被ä¿ç•™ã€‚"
@@ -671,7 +666,7 @@ msgid "Connection Limit"
msgstr "连接数é™åˆ¶"
msgid "Connection to server fails when TLS cannot be used"
-msgstr "当TLSä¸å¯ç”¨æ—¶è¿žæŽ¥åˆ°æœåŠ¡å™¨å¤±è´¥"
+msgstr "当 TLS ä¸å¯ç”¨æ—¶ï¼Œä¸ŽæœåŠ¡å™¨è¿žæŽ¥å¤±è´¥"
msgid "Connections"
msgstr "链接"
@@ -689,7 +684,7 @@ msgid "Cover the following interfaces"
msgstr "包括以下接å£"
msgid "Create / Assign firewall-zone"
-msgstr "创建/åˆ†é… é˜²ç«å¢™åŒºåŸŸ"
+msgstr "创建/分é…防ç«å¢™åŒºåŸŸ"
msgid "Create Interface"
msgstr "创建新接å£"
@@ -701,19 +696,19 @@ msgid "Critical"
msgstr "致命错误"
msgid "Cron Log Level"
-msgstr "Cron日志级别"
+msgstr "Cron 日志级别"
msgid "Custom Interface"
msgstr "自定义接å£"
msgid "Custom delegated IPv6-prefix"
-msgstr "自定义分é…çš„IPv6å‰ç¼€"
+msgstr "自定义分é…çš„ IPv6 å‰ç¼€"
msgid ""
"Custom feed definitions, e.g. private feeds. This file can be preserved in a "
"sysupgrade."
msgstr ""
-"自定义的软件æºåœ°å€ï¼ˆä¾‹å¦‚ç§æœ‰çš„软件æºï¼‰ã€‚此处设定的æºåœ°å€åœ¨ç³»ç»Ÿå‡çº§æ—¶å°†è¢«ä¿ç•™"
+"自定义的软件æºåœ°å€ (例如ç§æœ‰çš„软件æº)。此处设定的æºåœ°å€åœ¨ç³»ç»Ÿå‡çº§æ—¶å°†è¢«ä¿ç•™"
msgid "Custom feeds"
msgstr "自定义的软件æº"
@@ -721,40 +716,40 @@ msgstr "自定义的软件æº"
msgid ""
"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
"\">LED</abbr>s if possible."
-msgstr "自定义<abbr title=\"å‘光二æžç®¡\">LED</abbr>的活动状æ€ã€‚"
+msgstr "自定义 <abbr title=\"å‘光二æžç®¡\">LED</abbr> 的活动状æ€ã€‚"
msgid "DHCP Leases"
-msgstr "DHCP分é…"
+msgstr "DHCP 分é…"
msgid "DHCP Server"
-msgstr "DHCPæœåŠ¡å™¨"
+msgstr "DHCP æœåŠ¡å™¨"
msgid "DHCP and DNS"
msgstr "DHCP/DNS"
msgid "DHCP client"
-msgstr "DHCP客户端"
+msgstr "DHCP 客户端"
msgid "DHCP-Options"
msgstr "DHCP-选项"
msgid "DHCPv6 Leases"
-msgstr "DHCPv6分é…"
+msgstr "DHCPv6 分é…"
msgid "DHCPv6 client"
-msgstr "DHCPv6客户端"
+msgstr "DHCPv6 客户端"
msgid "DHCPv6-Mode"
-msgstr "DHCPv6模å¼"
+msgstr "DHCPv6 模å¼"
msgid "DHCPv6-Service"
-msgstr "DHCPv6æœåŠ¡"
+msgstr "DHCPv6 æœåŠ¡"
msgid "DNS"
msgstr "DNS"
msgid "DNS forwardings"
-msgstr "DNS转å‘"
+msgstr "DNS 转å‘"
msgid "DNS-Label / FQDN"
msgstr "DNS-Label / FQDN"
@@ -763,25 +758,25 @@ msgid "DNSSEC"
msgstr "DNSSEC"
msgid "DNSSEC check unsigned"
-msgstr "DNSSEC未签å检查"
+msgstr "DNSSEC 未签å检查"
msgid "DPD Idle Timeout"
-msgstr "DPD空闲超时"
+msgstr "DPD 空闲超时"
msgid "DS-Lite AFTR address"
-msgstr "DS-Lite AFTR地å€"
+msgstr "DS-Lite AFTR 地å€"
msgid "DSL"
msgstr "DSL"
msgid "DSL Status"
-msgstr "DSL状æ€"
+msgstr "DSL 状æ€"
msgid "DSL line mode"
-msgstr "DSL线路模å¼"
+msgstr "DSL 线路模å¼"
msgid "DUID"
-msgstr "DUID (DHCP唯一标识符)"
+msgstr "DUID"
msgid "Data Rate"
msgstr "æ•°æ®é€ŸçŽ‡"
@@ -790,7 +785,7 @@ msgid "Debug"
msgstr "调试"
msgid "Default %d"
-msgstr "默认%d"
+msgstr "默认 %d"
msgid "Default gateway"
msgstr "默认网关"
@@ -805,15 +800,15 @@ msgid "Default state"
msgstr "默认状æ€"
msgid "Define a name for this network."
-msgstr "为网络定义å称"
+msgstr "为网络定义å称。"
msgid ""
"Define additional DHCP options, for example "
"\"<code>6,192.168.2.1,192.168.2.2</code>\" which advertises different DNS "
"servers to clients."
msgstr ""
-"设置DHCP的附加选项,例如设定\"<code>6,192.168.2.1,192.168.2.2</code>\"表示通"
-"å‘Šä¸åŒçš„DNSæœåŠ¡å™¨ç»™å®¢æˆ·ç«¯ã€‚"
+"设置 DHCP 的附加选项,例如设定 \"<code>6,192.168.2.1,192.168.2.2</code>\" 表"
+"示通告ä¸åŒçš„ DNS æœåŠ¡å™¨ç»™å®¢æˆ·ç«¯ã€‚"
msgid "Delete"
msgstr "删除"
@@ -857,25 +852,22 @@ msgstr "ç¦ç”¨"
msgid ""
"Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
"this interface."
-msgstr "ç¦ç”¨æœ¬æŽ¥å£çš„<abbr title=\"动æ€ä¸»æœºé…ç½®åè®®\">DHCP</abbr>。"
+msgstr "ç¦ç”¨æœ¬æŽ¥å£çš„ <abbr title=\"动æ€ä¸»æœºé…ç½®åè®®\">DHCP</abbr>。"
msgid "Disable DNS setup"
-msgstr "åœç”¨DNS设定"
+msgstr "åœç”¨ DNS 设定"
msgid "Disable Encryption"
msgstr "ç¦ç”¨åŠ å¯†"
-msgid "Disable HW-Beacon timer"
-msgstr "åœç”¨HW-Beacon计时器"
-
msgid "Disabled"
msgstr "ç¦ç”¨"
msgid "Disabled (default)"
-msgstr ""
+msgstr "ç¦ç”¨ (默认)"
msgid "Discard upstream RFC1918 responses"
-msgstr "丢弃RFC1918上行å“应数æ®"
+msgstr "丢弃 RFC1918 上行å“应数æ®"
msgid "Displaying only packages containing"
msgstr "åªæ˜¾ç¤ºæœ‰å†…容的软件包"
@@ -884,32 +876,32 @@ msgid "Distance Optimization"
msgstr "è·ç¦»ä¼˜åŒ–"
msgid "Distance to farthest network member in meters."
-msgstr "最远客户端的è·ç¦»(ç±³)。"
+msgstr "最远网络用户的è·ç¦» (ç±³)。"
msgid "Distribution feeds"
msgstr "å‘行版软件æº"
msgid "Diversity"
-msgstr "分集"
+msgstr "差异"
msgid ""
"Dnsmasq is a combined <abbr title=\"Dynamic Host Configuration Protocol"
"\">DHCP</abbr>-Server and <abbr title=\"Domain Name System\">DNS</abbr>-"
"Forwarder for <abbr title=\"Network Address Translation\">NAT</abbr> "
"firewalls"
-msgstr "Dnsmasq为NAT防ç«å¢™æ供了一个集æˆçš„DHCPæœåŠ¡å™¨å’ŒDNS转å‘器"
+msgstr ""
+"Dnsmasq 为 <abbr title=\"网络地å€è½¬æ¢\">NAT</abbr> 防ç«å¢™æ供了一个集æˆçš„ "
+"<abbr title=\"动æ€ä¸»æœºé…ç½®åè®®\">DHCP</abbr> æœåŠ¡å™¨å’Œ <abbr title=\"域å系统"
+"\">DNS</abbr> 转å‘器"
msgid "Do not cache negative replies, e.g. for not existing domains"
-msgstr "ä¸ç¼“存无用的回应, 比如:ä¸å­˜åœ¨çš„域。"
+msgstr "ä¸ç¼“存无用的回应, 比如: ä¸å­˜åœ¨çš„域。"
msgid "Do not forward requests that cannot be answered by public name servers"
msgstr "ä¸è½¬å‘公共域åæœåŠ¡å™¨æ— æ³•å›žåº”的请求"
msgid "Do not forward reverse lookups for local networks"
-msgstr "ä¸è½¬å‘åå‘查询本地网络的Lookups命令"
-
-msgid "Do not send probe responses"
-msgstr "ä¸å›žé€æŽ¢æµ‹å“应"
+msgstr "ä¸è½¬å‘åå‘查询本地网络的 Lookups 命令"
msgid "Domain required"
msgstr "忽略空域å解æž"
@@ -923,7 +915,7 @@ msgstr "ç¦æ­¢ç¢Žç‰‡"
msgid ""
"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
"<abbr title=\"Domain Name System\">DNS</abbr>-Name"
-msgstr "ä¸è½¬å‘没有DNSå称的解æžè¯·æ±‚"
+msgstr "ä¸è½¬å‘没有 <abbr title=\"域å系统\">DNS</abbr> å称的解æžè¯·æ±‚"
msgid "Download and install package"
msgstr "下载并安装软件包"
@@ -932,20 +924,20 @@ msgid "Download backup"
msgstr "下载备份"
msgid "Dropbear Instance"
-msgstr "Dropbear设置"
+msgstr "Dropbear 实例"
msgid ""
"Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
"and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
msgstr ""
-"Dropbearæ供了集æˆçš„<abbr title=\"安全å¤åˆ¶\">SCP</abbr>æœåŠ¡å™¨å’ŒåŸºäºŽ<abbr "
-"title=\"安全外壳åè®®\">SSH</abbr>çš„Shell访问"
+"Dropbear æ供了集æˆçš„ <abbr title=\"安全å¤åˆ¶\">SCP</abbr> æœåŠ¡å™¨å’ŒåŸºäºŽ <abbr "
+"title=\"安全外壳åè®®\">SSH</abbr> çš„ Shell 访问"
msgid "Dual-Stack Lite (RFC6333)"
msgstr "Dual-Stack Lite (RFC6333)"
msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
-msgstr "动æ€<abbr title=\"动æ€ä¸»æœºé…ç½®åè®®\">DHCP</abbr>"
+msgstr "åŠ¨æ€ <abbr title=\"动æ€ä¸»æœºé…ç½®åè®®\">DHCP</abbr>"
msgid "Dynamic tunnel"
msgstr "动æ€éš§é“"
@@ -953,13 +945,14 @@ msgstr "动æ€éš§é“"
msgid ""
"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
"having static leases will be served."
-msgstr "动æ€åˆ†é…DHCP地å€ã€‚如果ç¦ç”¨ï¼Œåˆ™åªèƒ½ä¸ºé™æ€ç§Ÿç”¨è¡¨ä¸­çš„客户端æ供网络æœåŠ¡ã€‚"
+msgstr ""
+"动æ€åˆ†é… DHCP 地å€ã€‚如果ç¦ç”¨ï¼Œåˆ™åªèƒ½ä¸ºé™æ€ç§Ÿç”¨è¡¨ä¸­çš„客户端æ供网络æœåŠ¡ã€‚"
msgid "EA-bits length"
-msgstr "EAä½é•¿åº¦"
+msgstr "EA-bits 长度"
msgid "EAP-Method"
-msgstr "EAP类型"
+msgstr "EAP 类型"
msgid "Edit"
msgstr "修改"
@@ -982,34 +975,34 @@ msgid "Enable"
msgstr "å¯ç”¨"
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
-msgstr "å¼€å¯<abbr title=\"生æˆæ ‘åè®®\">STP</abbr>"
+msgstr "å¼€å¯ <abbr title=\"生æˆæ ‘åè®®\">STP</abbr>"
msgid "Enable HE.net dynamic endpoint update"
-msgstr "å¯ç”¨HE.net动æ€ç»ˆç«¯æ›´æ–°"
+msgstr "å¯ç”¨ HE.net 动æ€ç»ˆç«¯æ›´æ–°"
msgid "Enable IPv6 negotiation"
-msgstr "å¯ç”¨IPv6å商"
+msgstr "å¯ç”¨ IPv6 å商"
msgid "Enable IPv6 negotiation on the PPP link"
-msgstr "在PPP链路上å¯ç”¨IPv6å商"
+msgstr "在 PPP 链路上å¯ç”¨ IPv6 å商"
msgid "Enable Jumbo Frame passthrough"
msgstr "å¯ç”¨å·¨åž‹å¸§é€ä¼ "
msgid "Enable NTP client"
-msgstr "å¯ç”¨NTP客户端"
+msgstr "å¯ç”¨ NTP 客户端"
msgid "Enable Single DES"
-msgstr "å¯ç”¨å•ä¸ªDES"
+msgstr "å¯ç”¨å•ä¸ª DES"
msgid "Enable TFTP server"
-msgstr "å¯ç”¨TFTPæœåŠ¡å™¨"
+msgstr "å¯ç”¨ TFTP æœåŠ¡å™¨"
msgid "Enable VLAN functionality"
-msgstr "å¯ç”¨VLAN"
+msgstr "å¯ç”¨ VLAN"
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
-msgstr "å¯ç”¨WPS按键é…置,è¦æ±‚使用WPA(2)-PSK"
+msgstr "å¯ç”¨ WPS 按键é…置,è¦æ±‚使用 WPA(2)-PSK"
msgid "Enable learning and aging"
msgstr "å¯ç”¨æ™ºèƒ½äº¤æ¢å­¦ä¹ "
@@ -1021,7 +1014,7 @@ msgid "Enable mirroring of outgoing packets"
msgstr "å¯ç”¨æµå‡ºæ•°æ®åŒ…é•œåƒ"
msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
-msgstr "å¯ç”¨å°è£…æ•°æ®åŒ…çš„DF(ç¦æ­¢ç¢Žç‰‡)标志。"
+msgstr "å¯ç”¨å°è£…æ•°æ®åŒ…çš„ DF (ç¦æ­¢ç¢Žç‰‡) 标志。"
msgid "Enable this mount"
msgstr "å¯ç”¨æŒ‚载点"
@@ -1038,7 +1031,7 @@ msgstr "å¯ç”¨"
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
-msgstr ""
+msgstr "å¯ç”¨å±žäºŽåŒä¸€ç§»åŠ¨åŸŸçš„接入点之间的快速漫游"
msgid "Enables the Spanning Tree Protocol on this bridge"
msgstr "在此桥接上å¯ç”¨ç”Ÿæˆå议树"
@@ -1062,7 +1055,7 @@ msgid "Error"
msgstr "错误"
msgid "Errored seconds (ES)"
-msgstr "错误秒数(ES)"
+msgstr "错误秒数 (ES)"
msgid "Ethernet Adapter"
msgstr "以太网适é…器"
@@ -1074,38 +1067,35 @@ msgid "Exclude interfaces"
msgstr "排除接å£"
msgid "Expand hosts"
-msgstr "扩展HOSTS文件中的主机åŽç¼€"
+msgstr "扩展 HOSTS 文件中的主机åŽç¼€"
msgid "Expires"
msgstr "到期时间"
msgid ""
"Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
-msgstr "租用地å€çš„到期时间,最短2分钟(<code>2m</code>)。"
+msgstr "租用地å€çš„到期时间,最短 2 分钟 (<code>2m</code>)。"
msgid "External"
-msgstr "远程"
+msgstr "外部"
msgid "External R0 Key Holder List"
-msgstr ""
+msgstr "外部 R0KH (R0 Key Holder) 列表"
msgid "External R1 Key Holder List"
-msgstr ""
+msgstr "外部 R1KH (R1 Key Holder) 列表"
msgid "External system log server"
-msgstr "远程日志æœåŠ¡å™¨"
+msgstr "外部日志æœåŠ¡å™¨"
msgid "External system log server port"
-msgstr "远程日志æœåŠ¡å™¨ç«¯å£"
+msgstr "外部日志æœåŠ¡å™¨ç«¯å£"
msgid "External system log server protocol"
-msgstr "远程日志æœåŠ¡å™¨åè®®"
+msgstr "外部日志æœåŠ¡å™¨åè®®"
msgid "Extra SSH command options"
-msgstr "é¢å¤–çš„SSH命令选项"
-
-msgid "Fast Frames"
-msgstr "快速帧"
+msgstr "é¢å¤–çš„ SSH 命令选项"
msgid "File"
msgstr "文件"
@@ -1129,8 +1119,8 @@ msgid ""
"Find all currently attached filesystems and swap and replace configuration "
"with defaults based on what was detected"
msgstr ""
-"查找所有当å‰ç³»ç»Ÿä¸Šçš„分区和Swap并使用基于所找到的分区生æˆçš„é…置文件替æ¢é»˜è®¤é…"
-"置。"
+"查找所有当å‰ç³»ç»Ÿä¸Šçš„分区和 Swap 并使用基于所找到的分区生æˆçš„é…置文件替æ¢é»˜è®¤"
+"é…ç½®"
msgid "Find and join network"
msgstr "æœç´¢å¹¶åŠ å…¥ç½‘络"
@@ -1144,6 +1134,9 @@ msgstr "完æˆ"
msgid "Firewall"
msgstr "防ç«å¢™"
+msgid "Firewall Mark"
+msgstr "防ç«å¢™æ ‡è¯†"
+
msgid "Firewall Settings"
msgstr "防ç«å¢™è®¾ç½®"
@@ -1157,7 +1150,7 @@ msgid "Firmware Version"
msgstr "固件版本"
msgid "Fixed source port for outbound DNS queries"
-msgstr "指定的DNS查询æºç«¯å£"
+msgstr "指定的 DNS 查询æºç«¯å£"
msgid "Flash Firmware"
msgstr "刷新固件"
@@ -1175,31 +1168,34 @@ msgid "Flashing..."
msgstr "刷写中..."
msgid "Force"
-msgstr "强制开å¯DHCP"
+msgstr "强制"
msgid "Force CCMP (AES)"
-msgstr "强制使用CCMP(AES)加密"
+msgstr "强制 CCMP (AES)"
msgid "Force DHCP on this network even if another server is detected."
-msgstr "强制开å¯DHCP。"
+msgstr "å³ä½¿æ£€æµ‹åˆ°å¦ä¸€å°æœåŠ¡å™¨ï¼Œä¹Ÿè¦å¼ºåˆ¶ä½¿ç”¨æ­¤ç½‘络上的 DHCP。"
msgid "Force TKIP"
-msgstr "强制使用TKIP加密"
+msgstr "强制 TKIP"
msgid "Force TKIP and CCMP (AES)"
-msgstr "TKIPå’ŒCCMP(AES)æ··åˆåŠ å¯†"
+msgstr "强制 TKIP 和 CCMP (AES)"
+
+msgid "Force link"
+msgstr "强制链路"
msgid "Force use of NAT-T"
-msgstr "强制使用NAT-T"
+msgstr "强制使用 NAT-T"
msgid "Form token mismatch"
msgstr "表å•ä»¤ç‰Œä¸åŒ¹é…"
msgid "Forward DHCP traffic"
-msgstr "转å‘DHCPæ•°æ®åŒ…"
+msgstr "è½¬å‘ DHCP æ•°æ®åŒ…"
msgid "Forward Error Correction Seconds (FECS)"
-msgstr "å‰å‘纠错秒数(FECS)"
+msgstr "å‰å‘纠错秒数 (FECS)"
msgid "Forward broadcast traffic"
msgstr "转å‘广播数æ®åŒ…"
@@ -1223,14 +1219,14 @@ msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
msgstr ""
-"有关WireGuard接å£å’ŒPeer的更多信æ¯ï¼š<a href=\"http://wireguard.io\">wireguard."
-"io</a>"
+"有关 WireGuard 接å£å’Œ Peer 的更多信æ¯: <a href=\"http://wireguard.io"
+"\">wireguard.io</a>。"
msgid "GHz"
msgstr "GHz"
msgid "GPRS only"
-msgstr "ä»…GPRS"
+msgstr "ä»… GPRS"
msgid "Gateway"
msgstr "网关"
@@ -1245,7 +1241,7 @@ msgid "General Setup"
msgstr "基本设置"
msgid "General options for opkg"
-msgstr "Opkg基础é…ç½®"
+msgstr "OPKG 基础é…ç½®"
msgid "Generate Config"
msgstr "生æˆé…ç½®"
@@ -1254,7 +1250,7 @@ msgid "Generate archive"
msgstr "生æˆå¤‡ä»½"
msgid "Generic 802.11%s Wireless Controller"
-msgstr "Generic 802.11%s 无线网å¡"
+msgstr "通用 802.11%s 无线网å¡"
msgid "Given password confirmation did not match, password not changed!"
msgstr "由于密ç éªŒè¯ä¸åŒ¹é…,密ç æ²¡æœ‰æ›´æ”¹ï¼"
@@ -1278,13 +1274,13 @@ msgid "Guest"
msgstr "访客"
msgid "HE.net password"
-msgstr "HE.net密ç "
+msgstr "HE.net 密ç "
msgid "HE.net username"
-msgstr "HE.net用户å"
+msgstr "HE.net 用户å"
msgid "HT mode (802.11n)"
-msgstr "HT模å¼(802.11n)"
+msgstr "HT æ¨¡å¼ (802.11n)"
msgid "Handler"
msgstr "处ç†ç¨‹åº"
@@ -1293,7 +1289,7 @@ msgid "Hang Up"
msgstr "挂起"
msgid "Header Error Code Errors (HEC)"
-msgstr "头错误代ç é”™è¯¯(HEC)"
+msgstr "请求头的错误代ç é”™è¯¯ (HEC)"
msgid "Heartbeat"
msgstr "心跳"
@@ -1306,13 +1302,13 @@ msgstr "é…置路由器的部分基础信æ¯ã€‚"
msgid ""
"Here you can paste public SSH-Keys (one per line) for SSH public-key "
"authentication."
-msgstr "SSH公共密钥认è¯(æ¯è¡Œä¸€ä¸ªå¯†é’¥)。"
+msgstr "请在这里粘贴公共 SSH 密钥用于 SSH å…¬é’¥è®¤è¯ (æ¯è¡Œä¸€ä¸ª)。"
msgid "Hermes 802.11b Wireless Controller"
msgstr "Hermes 802.11b 无线网å¡"
msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
-msgstr "éšè—<abbr title=\"扩展æœåŠ¡é›†æ ‡è¯†ç¬¦\">ESSID</abbr>"
+msgstr "éšè— <abbr title=\"扩展æœåŠ¡é›†æ ‡è¯†ç¬¦\">ESSID</abbr>"
msgid "Host"
msgstr "主机"
@@ -1324,13 +1320,13 @@ msgid "Host expiry timeout"
msgstr "主机到期超时"
msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
-msgstr "主机IP或网络"
+msgstr "主机 IP 或网络"
msgid "Hostname"
msgstr "主机å"
msgid "Hostname to send when requesting DHCP"
-msgstr "请求DHCPæ—¶å‘é€çš„主机å"
+msgstr "请求 DHCP æ—¶å‘é€çš„主机å"
msgid "Hostnames"
msgstr "主机å"
@@ -1339,49 +1335,49 @@ msgid "Hybrid"
msgstr "æ··åˆ"
msgid "IKE DH Group"
-msgstr "IKE DH组"
+msgstr "IKE DH 组"
msgid "IP Addresses"
-msgstr ""
+msgstr "IP 地å€"
msgid "IP address"
-msgstr "IP地å€"
+msgstr "IP 地å€"
msgid "IPv4"
msgstr "IPv4"
msgid "IPv4 Firewall"
-msgstr "IPv4防ç«å¢™"
+msgstr "IPv4 防ç«å¢™"
msgid "IPv4 WAN Status"
-msgstr "IPv4 WAN状æ€"
+msgstr "IPv4 WAN 状æ€"
msgid "IPv4 address"
-msgstr "IPv4地å€"
+msgstr "IPv4 地å€"
msgid "IPv4 and IPv6"
-msgstr "IPv4å’ŒIPv6"
+msgstr "IPv4 和 IPv6"
msgid "IPv4 assignment length"
-msgstr "分é…IPv4长度"
+msgstr "åˆ†é… IPv4 长度"
msgid "IPv4 broadcast"
-msgstr "IPv4广播"
+msgstr "IPv4 广播"
msgid "IPv4 gateway"
-msgstr "IPv4网关"
+msgstr "IPv4 网关"
msgid "IPv4 netmask"
-msgstr "IPv4å­ç½‘掩ç "
+msgstr "IPv4 å­ç½‘掩ç "
msgid "IPv4 only"
-msgstr "ä»…IPv4"
+msgstr "ä»… IPv4"
msgid "IPv4 prefix"
-msgstr "IPv4地å€å‰ç¼€"
+msgstr "IPv4 地å€å‰ç¼€"
msgid "IPv4 prefix length"
-msgstr "IPv4地å€å‰ç¼€é•¿åº¦"
+msgstr "IPv4 地å€å‰ç¼€é•¿åº¦"
msgid "IPv4-Address"
msgstr "IPv4-地å€"
@@ -1393,52 +1389,52 @@ msgid "IPv6"
msgstr "IPv6"
msgid "IPv6 Firewall"
-msgstr "IPv6防ç«å¢™"
+msgstr "IPv6 防ç«å¢™"
msgid "IPv6 Neighbours"
-msgstr "IPv6邻居"
+msgstr "IPv6 网上邻居"
msgid "IPv6 Settings"
-msgstr "IPv6设置"
+msgstr "IPv6 设置"
msgid "IPv6 ULA-Prefix"
-msgstr "IPv6 ULAå‰ç¼€"
+msgstr "IPv6 ULA å‰ç¼€"
msgid "IPv6 WAN Status"
-msgstr "IPv6 WAN状æ€"
+msgstr "IPv6 WAN 状æ€"
msgid "IPv6 address"
-msgstr "IPv6地å€"
+msgstr "IPv6 地å€"
msgid "IPv6 address delegated to the local tunnel endpoint (optional)"
-msgstr "绑定到本地隧é“终点的IPv6地å€(å¯é€‰)"
+msgstr "绑定到本地隧é“终点的 IPv6 åœ°å€ (å¯é€‰)"
msgid "IPv6 assignment hint"
-msgstr "IPv6分é…æ示"
+msgstr "IPv6 分é…æ示"
msgid "IPv6 assignment length"
-msgstr "IPv6分é…长度"
+msgstr "IPv6 分é…长度"
msgid "IPv6 gateway"
-msgstr "IPv6网关"
+msgstr "IPv6 网关"
msgid "IPv6 only"
-msgstr "ä»…IPv6"
+msgstr "ä»… IPv6"
msgid "IPv6 prefix"
-msgstr "IPv6地å€å‰ç¼€"
+msgstr "IPv6 地å€å‰ç¼€"
msgid "IPv6 prefix length"
-msgstr "IPv6地å€å‰ç¼€é•¿åº¦"
+msgstr "IPv6 地å€å‰ç¼€é•¿åº¦"
msgid "IPv6 routed prefix"
-msgstr "IPv6路由å‰ç¼€"
+msgstr "IPv6 路由å‰ç¼€"
msgid "IPv6-Address"
msgstr "IPv6-地å€"
msgid "IPv6-PD"
-msgstr ""
+msgstr "IPv6-PD"
msgid "IPv6-in-IPv4 (RFC4213)"
msgstr "IPv6-in-IPv4 (RFC4213)"
@@ -1453,14 +1449,14 @@ msgid "Identity"
msgstr "鉴æƒ"
msgid "If checked, 1DES is enaled"
-msgstr "选中以å¯ç”¨1DES"
+msgstr "选中以å¯ç”¨ 1DES"
msgid "If checked, encryption is disabled"
msgstr "选中以ç¦ç”¨åŠ å¯†"
msgid ""
"If specified, mount the device by its UUID instead of a fixed device node"
-msgstr "用UUIDæ¥æŒ‚载设备"
+msgstr "用 UUID æ¥æŒ‚载设备"
msgid ""
"If specified, mount the device by the partition label instead of a fixed "
@@ -1471,7 +1467,7 @@ msgid "If unchecked, no default route is configured"
msgstr "留空则ä¸é…置默认路由"
msgid "If unchecked, the advertised DNS server addresses are ignored"
-msgstr "留空则忽略所通告的DNSæœåŠ¡å™¨åœ°å€"
+msgstr "留空则忽略所通告的 DNS æœåŠ¡å™¨åœ°å€"
msgid ""
"If your physical memory is insufficient unused data can be temporarily "
@@ -1485,7 +1481,7 @@ msgid "Ignore <code>/etc/hosts</code>"
msgstr "忽略 <code>/etc/hosts</code>"
msgid "Ignore interface"
-msgstr "关闭DHCP"
+msgstr "忽略此接å£"
msgid "Ignore resolve file"
msgstr "忽略解æžæ–‡ä»¶"
@@ -1507,7 +1503,7 @@ msgid "Inactivity timeout"
msgstr "活动超时"
msgid "Inbound:"
-msgstr "入站:"
+msgstr "入站:"
msgid "Info"
msgstr "ä¿¡æ¯"
@@ -1522,7 +1518,7 @@ msgid "Install"
msgstr "安装"
msgid "Install iputils-traceroute6 for IPv6 traceroute"
-msgstr "安装 iputils-traceroute6 以进行IPv6 traceroute"
+msgstr "安装 iputils-traceroute6 以进行 IPv6 路由追踪"
msgid "Install package %q"
msgstr "安装软件包 %q"
@@ -1573,30 +1569,33 @@ msgid "Invalid"
msgstr "无效"
msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
-msgstr "无效的VLAN IDï¼åªæœ‰ %d å’Œ %d 之间的ID有效。"
+msgstr "无效的 VLAN IDï¼åªæœ‰ %d å’Œ %d 之间的 ID 有效。"
msgid "Invalid VLAN ID given! Only unique IDs are allowed"
-msgstr "无效的VLAN IDï¼åªå…许唯一的ID。"
+msgstr "无效的 VLAN IDï¼åªå…许唯一的 ID。"
msgid "Invalid username and/or password! Please try again."
msgstr "无效的用户åå’Œ/或密ç ï¼è¯·é‡è¯•ã€‚"
+msgid "Isolate Clients"
+msgstr ""
+
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
msgstr "ä½ å°è¯•åˆ·å†™çš„固件与本路由器ä¸å…¼å®¹ï¼Œè¯·é‡æ–°éªŒè¯å›ºä»¶æ–‡ä»¶ã€‚"
-msgid "Java Script required!"
-msgstr "需è¦Java Scriptï¼"
+msgid "JavaScript required!"
+msgstr "éœ€è¦ JavaScriptï¼"
msgid "Join Network"
msgstr "加入网络"
msgid "Join Network: Wireless Scan"
-msgstr "加入网络:æœç´¢æ— çº¿"
+msgstr "加入网络: æœç´¢æ— çº¿"
msgid "Joining Network: %q"
-msgstr "加入网络:%q"
+msgstr "加入网络: %q"
msgid "Keep settings"
msgstr "ä¿ç•™é…ç½®"
@@ -1620,13 +1619,13 @@ msgid "L2TP"
msgstr "L2TP"
msgid "L2TP Server"
-msgstr "L2TPæœåŠ¡å™¨"
+msgstr "L2TP æœåŠ¡å™¨"
msgid "LCP echo failure threshold"
-msgstr "LCPå“应故障阈值"
+msgstr "LCP å“应故障阈值"
msgid "LCP echo interval"
-msgstr "LCPå“应间隔"
+msgstr "LCP å“应间隔"
msgid "LLC"
msgstr "LLC"
@@ -1644,7 +1643,7 @@ msgid "Latency"
msgstr "延迟"
msgid "Leaf"
-msgstr "å¶çŠ¶"
+msgstr "å¶èŠ‚点"
msgid "Lease time"
msgstr "租期"
@@ -1665,10 +1664,10 @@ msgid "Leave empty to autodetect"
msgstr "留空则自动探测"
msgid "Leave empty to use the current WAN address"
-msgstr "留空则使用当å‰WAN地å€"
+msgstr "ç•™ç©ºåˆ™ä½¿ç”¨å½“å‰ WAN 地å€"
msgid "Legend:"
-msgstr "图例:"
+msgstr "图例:"
msgid "Limit"
msgstr "客户数"
@@ -1680,7 +1679,7 @@ msgid "Limit listening to these interfaces, and loopback."
msgstr "仅监å¬è¿™äº›æŽ¥å£å’ŒçŽ¯å›žæŽ¥å£ã€‚"
msgid "Line Attenuation (LATN)"
-msgstr "线路衰å‡(LATN)"
+msgstr "çº¿è·¯è¡°å‡ (LATN)"
msgid "Line Mode"
msgstr "线路模å¼"
@@ -1697,7 +1696,9 @@ msgstr "活动链接"
msgid ""
"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
"requests to"
-msgstr "将指定的域åDNS解æžè½¬å‘到指定的DNSæœåŠ¡å™¨ï¼ˆæŒ‰ç…§ç¤ºä¾‹å¡«å†™ï¼‰"
+msgstr ""
+"将指定域å的解æžè¯·æ±‚转å‘到指定的 <abbr title=\"域å系统\">DNS</abbr> æœåŠ¡å™¨ "
+"(按照示例填写)"
msgid ""
"List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
@@ -1706,6 +1707,9 @@ msgid ""
"from the R0KH that the STA used during the Initial Mobility Domain "
"Association."
msgstr ""
+"åŒä¸€ç§»åŠ¨åŸŸä¸­çš„ R0KH 列表。<br />æ ¼å¼: MAC 地å€,NAS标识符,128ä½å¯†é’¥ (å六进制"
+"字符串)。<br />在从åˆå§‹ç§»åŠ¨åŸŸå…³è”期间使用的 R0KH 中请求 PMK-R1 密钥时,该列表"
+"用于将 R0KH-ID (NAS标识符)映射到目标 MAC 地å€ã€‚"
msgid ""
"List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
@@ -1714,12 +1718,16 @@ msgid ""
"R0KH. This is also the list of authorized R1KHs in the MD that can request "
"PMK-R1 keys."
msgstr ""
+"åŒä¸€ç§»åŠ¨åŸŸä¸­çš„ R1KH 列表。<br />æ ¼å¼: MAC地å€,R1KH-ID (包å«å†’å·çš„6个八ä½å­—"
+"节),128ä½å¯†é’¥ (å六进制字符串)。<br />当从 R0KH å‘é€ PMK-R1 键时,此列表用于"
+"å°† R1KH-ID 映射到目标 MAC 地å€ã€‚这也是å¯ä»¥è¯·æ±‚ PMK-R1 键的 MD 中授æƒçš„ R1KH "
+"的列表。"
msgid "List of SSH key files for auth"
-msgstr "用于认è¯çš„SSH密钥文件列表"
+msgstr "用于认è¯çš„ SSH 密钥文件列表"
msgid "List of domains to allow RFC1918 responses for"
-msgstr "å…许RFC1918å“应的域å列表"
+msgstr "å…许 RFC1918 å“应的域å列表"
msgid "List of hosts that supply bogus NX domain results"
msgstr "å…许虚å‡ç©ºåŸŸåå“应的æœåŠ¡å™¨åˆ—表"
@@ -1731,10 +1739,10 @@ msgid "Listen Port"
msgstr "监å¬ç«¯å£"
msgid "Listen only on the given interface or, if unspecified, on all"
-msgstr "监å¬æŒ‡å®šçš„接å£ï¼›æœªæŒ‡å®šåˆ™ç›‘å¬å…¨éƒ¨"
+msgstr "仅监å¬æŒ‡å®šçš„接å£ï¼ŒæœªæŒ‡å®šåˆ™ç›‘å¬å…¨éƒ¨"
msgid "Listening port for inbound DNS queries"
-msgstr "入站DNS查询端å£"
+msgstr "入站 DNS 查询端å£"
msgid "Load"
msgstr "è´Ÿè½½"
@@ -1746,13 +1754,13 @@ msgid "Loading"
msgstr "加载中"
msgid "Local IP address to assign"
-msgstr "è¦åˆ†é…的本地IP地å€"
+msgstr "è¦åˆ†é…的本地 IP 地å€"
msgid "Local IPv4 address"
-msgstr "本地IPv4地å€"
+msgstr "本地 IPv4 地å€"
msgid "Local IPv6 address"
-msgstr "本地IPv6地å€"
+msgstr "本地 IPv6 地å€"
msgid "Local Service Only"
msgstr "仅本地æœåŠ¡"
@@ -1769,10 +1777,10 @@ msgstr "本地域å"
msgid ""
"Local domain specification. Names matching this domain are never forwarded "
"and are resolved from DHCP or hosts files only"
-msgstr "本地域å规则。与此域匹é…çš„å称从ä¸è½¬å‘,仅从DHCP或HOSTS文件解æž"
+msgstr "本地域å规则。与此域匹é…çš„å称从ä¸è½¬å‘,仅从 DHCP 或 HOSTS 文件解æž"
msgid "Local domain suffix appended to DHCP names and hosts file entries"
-msgstr "本地域ååŽç¼€å°†æ·»åŠ åˆ°DHCPå’ŒHOSTS文件æ¡ç›®"
+msgstr "本地域ååŽç¼€å°†æ·»åŠ åˆ° DHCP å’Œ HOSTS 文件æ¡ç›®"
msgid "Local server"
msgstr "本地æœåŠ¡å™¨"
@@ -1780,7 +1788,7 @@ msgstr "本地æœåŠ¡å™¨"
msgid ""
"Localise hostname depending on the requesting subnet if multiple IPs are "
"available"
-msgstr "如果有多个IPå¯ç”¨ï¼Œåˆ™æ ¹æ®è¯·æ±‚æ¥æºçš„å­ç½‘æ¥æœ¬åœ°åŒ–主机å"
+msgstr "如果有多个 IP å¯ç”¨ï¼Œåˆ™æ ¹æ®è¯·æ±‚æ¥æºçš„å­ç½‘æ¥æœ¬åœ°åŒ–主机å"
msgid "Localise queries"
msgstr "本地化查询"
@@ -1792,7 +1800,7 @@ msgid "Log output level"
msgstr "日志记录等级"
msgid "Log queries"
-msgstr "日志查询"
+msgstr "记录查询日志"
msgid "Logging"
msgstr "日志"
@@ -1804,7 +1812,7 @@ msgid "Logout"
msgstr "退出"
msgid "Loss of Signal Seconds (LOSS)"
-msgstr "ä¿¡å·ä¸¢å¤±ç§’æ•°(LOSS)"
+msgstr "ä¿¡å·ä¸¢å¤±ç§’æ•° (LOSS)"
msgid "Lowest leased address as offset from the network address."
msgstr "网络地å€çš„起始分é…基å€ã€‚"
@@ -1839,28 +1847,25 @@ msgstr "MTU"
msgid ""
"Make sure to clone the root filesystem using something like the commands "
"below:"
-msgstr "请确认你已ç»å¤åˆ¶è¿‡æ•´ä¸ªæ ¹æ–‡ä»¶ç³»ç»Ÿ,例如使用以下命令:"
+msgstr "请确认你已ç»å¤åˆ¶è¿‡æ•´ä¸ªæ ¹æ–‡ä»¶ç³»ç»Ÿï¼Œä¾‹å¦‚使用以下命令:"
msgid "Manual"
msgstr "手动"
msgid "Max. Attainable Data Rate (ATTNDR)"
-msgstr "最大å¯è¾¾æ•°æ®é€ŸçŽ‡(ATTNDR)"
-
-msgid "Maximum Rate"
-msgstr "最高速率"
+msgstr "最大å¯è¾¾æ•°æ®é€ŸçŽ‡ (ATTNDR)"
msgid "Maximum allowed number of active DHCP leases"
-msgstr "å…许的最大DHCP租用数"
+msgstr "å…许的最大 DHCP 租用数"
msgid "Maximum allowed number of concurrent DNS queries"
-msgstr "å…许的最大并å‘DNS查询数"
+msgstr "å…è®¸çš„æœ€å¤§å¹¶å‘ DNS 查询数"
msgid "Maximum allowed size of EDNS.0 UDP packets"
-msgstr "å…许的最大EDNS.0 UDPæ•°æ®åŒ…大å°"
+msgstr "å…许的最大 EDNS.0 UDP æ•°æ®åŒ…大å°"
msgid "Maximum amount of seconds to wait for the modem to become ready"
-msgstr "调制解调器就绪的最大等待时间(秒)"
+msgstr "调制解调器就绪的最大等待时间 (秒)"
msgid "Maximum hold time"
msgstr "最大æŒç»­æ—¶é—´"
@@ -1869,7 +1874,7 @@ msgid ""
"Maximum length of the name is 15 characters including the automatic protocol/"
"bridge prefix (br-, 6in4-, pppoe- etc.)"
msgstr ""
-"å称的最大长度为15个字符,包括自动åè®®/网桥å‰ç¼€(br-, 6in4-, pppoe- 等等)"
+"å称的最大长度为 15 个字符,包括自动åè®®/网桥å‰ç¼€ (br-, 6in4-, pppoe- 等等)"
msgid "Maximum number of leased addresses."
msgstr "最大地å€åˆ†é…æ•°é‡ã€‚"
@@ -1881,14 +1886,11 @@ msgid "Memory"
msgstr "内存"
msgid "Memory usage (%)"
-msgstr "内存使用率(%)"
+msgstr "内存使用率 (%)"
msgid "Metric"
msgstr "跃点数"
-msgid "Minimum Rate"
-msgstr "最低速率"
-
msgid "Minimum hold time"
msgstr "最低æŒç»­æ—¶é—´"
@@ -1902,7 +1904,7 @@ msgid "Missing protocol extension for proto %q"
msgstr "缺少åè®® %q çš„å议扩展"
msgid "Mobility Domain"
-msgstr ""
+msgstr "移动域"
msgid "Mode"
msgstr "模å¼"
@@ -1917,7 +1919,7 @@ msgid "Modem init timeout"
msgstr "调制解调器åˆå§‹åŒ–超时"
msgid "Monitor"
-msgstr "监å¬Monitor"
+msgstr "监å¬"
msgid "Mount Entry"
msgstr "挂载项目"
@@ -1929,15 +1931,15 @@ msgid "Mount Points"
msgstr "挂载点"
msgid "Mount Points - Mount Entry"
-msgstr "挂载点-存储区"
+msgstr "挂载点 - 存储区"
msgid "Mount Points - Swap Entry"
-msgstr "挂载点-交æ¢åŒº"
+msgstr "挂载点 - 交æ¢åŒº"
msgid ""
"Mount Points define at which point a memory device will be attached to the "
"filesystem"
-msgstr "é…置存储设备挂载到文件系统中的ä½ç½®å’Œå‚数。"
+msgstr "é…置存储设备挂载到文件系统中的ä½ç½®å’Œå‚æ•°"
msgid "Mount filesystems not specifically configured"
msgstr "自动挂载未专门é…置挂载点的分区"
@@ -1949,7 +1951,7 @@ msgid "Mount point"
msgstr "挂载点"
msgid "Mount swap not specifically configured"
-msgstr "自动挂载未专门é…置的Swap分区"
+msgstr "自动挂载未专门é…置的 Swap 分区"
msgid "Mounted file systems"
msgstr "已挂载的文件系统"
@@ -1960,9 +1962,6 @@ msgstr "下移"
msgid "Move up"
msgstr "上移"
-msgid "Multicast Rate"
-msgstr "多播速率"
-
msgid "Multicast address"
msgstr "多播地å€"
@@ -1970,22 +1969,25 @@ msgid "NAS ID"
msgstr "NAS ID"
msgid "NAT-T Mode"
-msgstr "NAT-T模å¼"
+msgstr "NAT-T 模å¼"
msgid "NAT64 Prefix"
-msgstr "NAT64å‰ç¼€"
+msgstr "NAT64 å‰ç¼€"
+
+msgid "NCM"
+msgstr ""
msgid "NDP-Proxy"
msgstr "NDP-代ç†"
msgid "NT Domain"
-msgstr "NT域"
+msgstr "NT 域"
msgid "NTP server candidates"
-msgstr "候选NTPæœåŠ¡å™¨"
+msgstr "候选 NTP æœåŠ¡å™¨"
msgid "NTP sync time-out"
-msgstr "NTPåŒæ­¥è¶…æ—¶"
+msgstr "NTP åŒæ­¥è¶…æ—¶"
msgid "Name"
msgstr "å称"
@@ -2018,10 +2020,10 @@ msgid "Next »"
msgstr "下一步 »"
msgid "No DHCP Server configured for this interface"
-msgstr "本接å£æœªé…ç½®DHCPæœåŠ¡å™¨"
+msgstr "本接å£æœªé…ç½® DHCP æœåŠ¡å™¨"
msgid "No NAT-T"
-msgstr "æ— NAT-T"
+msgstr "æ—  NAT-T"
msgid "No chains in this table"
msgstr "本表中没有链"
@@ -2057,16 +2059,16 @@ msgid "Noise"
msgstr "噪声"
msgid "Noise Margin (SNR)"
-msgstr "噪声容é™(SNR)"
+msgstr "å™ªå£°å®¹é™ (SNR)"
msgid "Noise:"
msgstr "噪声:"
msgid "Non Pre-emtive CRC errors (CRC_P)"
-msgstr "éžæŠ¢å CRC错误(CRC_P)"
+msgstr "éžæŠ¢å  CRC 错误 (CRC_P)"
msgid "Non-wildcard"
-msgstr "éžé€šé…符"
+msgstr "éžå…¨éƒ¨åœ°å€"
msgid "None"
msgstr "æ— "
@@ -2084,10 +2086,10 @@ msgid "Not connected"
msgstr "未连接"
msgid "Note: Configuration files will be erased."
-msgstr "注æ„:é…置文件将被删除。"
+msgstr "注æ„: é…置文件将被删除。"
msgid "Note: interface name length"
-msgstr "注æ„:接å£å称长度"
+msgstr "注æ„: 接å£å称长度"
msgid "Notice"
msgstr "注æ„"
@@ -2102,10 +2104,10 @@ msgid "OPKG-Configuration"
msgstr "OPKG-é…ç½®"
msgid "Obfuscated Group Password"
-msgstr ""
+msgstr "混淆组密ç "
msgid "Obfuscated Password"
-msgstr ""
+msgstr "混淆密ç "
msgid "Off-State Delay"
msgstr "关闭时间"
@@ -2117,7 +2119,10 @@ msgid ""
"<abbr title=\"Virtual Local Area Network\">VLAN</abbr> notation "
"<samp>INTERFACE.VLANNR</samp> (<abbr title=\"for example\">e.g.</abbr>: "
"<samp>eth0.1</samp>)."
-msgstr "é…置网络接å£ä¿¡æ¯ã€‚"
+msgstr ""
+"在此页é¢ï¼Œä½ å¯ä»¥é…置网络接å£ã€‚ä½ å¯ä»¥å‹¾é€‰â€œæ¡¥æŽ¥æŽ¥å£â€ï¼Œå¹¶è¾“入由空格分隔的多个网"
+"络接å£çš„å称æ¥æ¡¥æŽ¥å¤šä¸ªæŽ¥å£ã€‚还å¯ä»¥ä½¿ç”¨ <abbr title=\"虚拟局域网\">VLAN</"
+"abbr> ç¬¦å· <samp>INTERFACE.VLANNR</samp> (例如: <samp>eth0.1</samp>)。"
msgid "On-State Delay"
msgstr "通电时间"
@@ -2138,7 +2143,7 @@ msgid "Open list..."
msgstr "打开列表..."
msgid "OpenConnect (CISCO AnyConnect)"
-msgstr "开放连接(CISCO AnyConnect)"
+msgstr "开放连接 (CISCO AnyConnect)"
msgid "Operating frequency"
msgstr "工作频率"
@@ -2150,29 +2155,35 @@ msgid "Option removed"
msgstr "移除的选项"
msgid "Optional"
-msgstr ""
+msgstr "å¯é€‰"
msgid "Optional, specify to override default server (tic.sixxs.net)"
-msgstr "å¯é€‰ï¼Œè®¾ç½®è¿™ä¸ªé€‰é¡¹ä¼šè¦†ç›–默认设定的æœåŠ¡å™¨(tic.sixxs.net)"
+msgstr "å¯é€‰ï¼Œè®¾ç½®è¿™ä¸ªé€‰é¡¹ä¼šè¦†ç›–默认设定的æœåŠ¡å™¨ (tic.sixxs.net)"
msgid "Optional, use when the SIXXS account has more than one tunnel"
-msgstr "å¯é€‰ï¼Œå¦‚果你的SIXXSè´¦å·æ‹¥æœ‰ä¸€ä¸ªä»¥ä¸Šçš„隧é“请设置此项."
+msgstr "å¯é€‰ï¼Œå¦‚果你的 SIXXS è´¦å·æ‹¥æœ‰ä¸€ä¸ªä»¥ä¸Šçš„隧é“请设置此项."
msgid "Optional."
-msgstr "å¯é€‰"
+msgstr "å¯é€‰ã€‚"
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
msgstr ""
+"å¯é€‰ï¼Œä¼ å‡ºåŠ å¯†æ•°æ®åŒ…çš„ 32 ä½æ ‡è®°ã€‚请输入å六进制值,以 <code>0x</code> 开头。"
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr "å¯é€‰ï¼ŒBase64 ç¼–ç çš„预共享密钥。"
msgid "Optional. Create routes for Allowed IPs for this peer."
-msgstr "å¯é€‰ï¼Œä¸ºæ­¤Peer创建å…许IP的路由。"
+msgstr "å¯é€‰ï¼Œä¸ºæ­¤ Peer 创建å…许 IP 的路由。"
msgid ""
"Optional. Host of peer. Names are resolved prior to bringing up the "
"interface."
-msgstr ""
+msgstr "å¯é€‰ï¼ŒPeer 的主机。"
msgid "Optional. Maximum Transmission Unit of tunnel interface."
msgstr "å¯é€‰ï¼Œéš§é“接å£çš„最大传输å•å…ƒã€‚"
@@ -2184,55 +2195,52 @@ msgid ""
"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
"Recommended value if this device is behind a NAT is 25."
msgstr ""
-"å¯é€‰ï¼ŒKeep-Alive消æ¯ä¹‹é—´çš„秒数,默认为0(ç¦ç”¨)。如果此设备ä½äºŽNAT之åŽï¼Œå»ºè®®ä½¿"
-"用的值为25。"
+"å¯é€‰ï¼ŒKeep-Alive 消æ¯ä¹‹é—´çš„秒数,默认为 0 (ç¦ç”¨)。如果此设备ä½äºŽ NAT 之åŽï¼Œå»º"
+"议使用的值为 25。"
msgid "Optional. UDP port used for outgoing and incoming packets."
-msgstr "å¯é€‰ï¼Œç”¨äºŽä¼ å‡ºå’Œä¼ å…¥æ•°æ®åŒ…çš„UDP端å£ã€‚"
+msgstr "å¯é€‰ï¼Œç”¨äºŽä¼ å‡ºå’Œä¼ å…¥æ•°æ®åŒ…çš„ UDP 端å£ã€‚"
msgid "Options"
msgstr "选项"
msgid "Other:"
-msgstr "其余:"
+msgstr "其余:"
msgid "Out"
msgstr "出å£"
msgid "Outbound:"
-msgstr "出站:"
-
-msgid "Outdoor Channels"
-msgstr "户外频é“"
+msgstr "出站:"
msgid "Output Interface"
msgstr "网络出å£"
msgid "Override MAC address"
-msgstr "克隆MAC地å€"
+msgstr "é‡è®¾ MAC 地å€"
msgid "Override MTU"
-msgstr "æ›´æ–°MTU"
+msgstr "é‡è®¾ MTU"
msgid "Override TOS"
-msgstr "æ›´æ–°TOS"
+msgstr "é‡è®¾ TOS"
msgid "Override TTL"
-msgstr "æ›´æ–°TTL"
+msgstr "é‡è®¾ TTL"
msgid "Override default interface name"
-msgstr "更新默认接å£å称"
+msgstr "é‡è®¾é»˜è®¤æŽ¥å£å称"
msgid "Override the gateway in DHCP responses"
-msgstr "æ›´æ–°DHCPå“应网关"
+msgstr "é‡è®¾ DHCP å“应网关"
msgid ""
"Override the netmask sent to clients. Normally it is calculated from the "
"subnet that is served."
-msgstr "æ›´æ–°å‘é€åˆ°å®¢æˆ·ç«¯çš„å­ç½‘掩ç ã€‚"
+msgstr "é‡è®¾å‘é€åˆ°å®¢æˆ·ç«¯çš„å­ç½‘掩ç ã€‚"
msgid "Override the table used for internal routes"
-msgstr "更新内部路由表"
+msgstr "é‡è®¾å†…部路由表"
msgid "Overview"
msgstr "总览"
@@ -2241,10 +2249,10 @@ msgid "Owner"
msgstr "用户å"
msgid "PAP/CHAP password"
-msgstr "PAP/CHAP密ç "
+msgstr "PAP/CHAP 密ç "
msgid "PAP/CHAP username"
-msgstr "PAP/CHAP用户å"
+msgstr "PAP/CHAP 用户å"
msgid "PID"
msgstr "PID"
@@ -2253,13 +2261,13 @@ msgid "PIN"
msgstr "PIN"
msgid "PMK R1 Push"
-msgstr ""
+msgstr "PMK R1 Push"
msgid "PPP"
msgstr "PPP"
msgid "PPPoA Encapsulation"
-msgstr "PPPoAå°åŒ…"
+msgstr "PPPoA å°åŒ…"
msgid "PPPoATM"
msgstr "PPPoATM"
@@ -2274,19 +2282,19 @@ msgid "PPtP"
msgstr "PPtP"
msgid "PSID offset"
-msgstr "PSIDå移"
+msgstr "PSID å移"
msgid "PSID-bits length"
-msgstr "PSIDä½é•¿åº¦"
+msgstr "PSID-bits 长度"
msgid "PTM/EFM (Packet Transfer Mode)"
-msgstr "PTM/EFM(分组传输模å¼)"
+msgstr "PTM/EFM (分组传输模å¼)"
msgid "Package libiwinfo required!"
msgstr "éœ€è¦ libiwinfo 软件包ï¼"
msgid "Package lists are older than 24 hours"
-msgstr "软件包列表已超过24å°æ—¶æœªæ›´æ–°"
+msgstr "软件包列表已超过 24 å°æ—¶æœªæ›´æ–°"
msgid "Package name"
msgstr "软件包å称"
@@ -2313,7 +2321,7 @@ msgid "Password successfully changed!"
msgstr "密ç ä¿®æ”¹æˆåŠŸï¼"
msgid "Path to CA-Certificate"
-msgstr "CAè¯ä¹¦è·¯å¾„"
+msgstr "CA è¯ä¹¦è·¯å¾„"
msgid "Path to Client-Certificate"
msgstr "客户端è¯ä¹¦è·¯å¾„"
@@ -2337,7 +2345,7 @@ msgid "Peak:"
msgstr "峰值:"
msgid "Peer IP address to assign"
-msgstr "è¦åˆ†é…çš„Peer IP地å€"
+msgstr "è¦åˆ†é…çš„ Peer IP 地å€"
msgid "Peers"
msgstr "Peers"
@@ -2349,10 +2357,10 @@ msgid "Perform reboot"
msgstr "执行é‡å¯"
msgid "Perform reset"
-msgstr "执行å¤ä½"
+msgstr "执行é‡ç½®"
msgid "Persistent Keep Alive"
-msgstr "æŒç»­Keep-Alive"
+msgstr "æŒç»­ Keep-Alive"
msgid "Phy Rate:"
msgstr "物ç†é€ŸçŽ‡:"
@@ -2376,16 +2384,22 @@ msgid "Port"
msgstr "端å£"
msgid "Port status:"
-msgstr "端å£çŠ¶æ€ï¼š"
+msgstr "端å£çŠ¶æ€:"
msgid "Power Management Mode"
msgstr "电æºç®¡ç†æ¨¡å¼"
msgid "Pre-emtive CRC errors (CRCP_P)"
-msgstr "抢å å¼CRC错误(CRCP_P)"
+msgstr "抢å å¼ CRC 错误 (CRCP_P)"
+
+msgid "Prefer LTE"
+msgstr "首选 LTE"
+
+msgid "Prefer UMTS"
+msgstr "首选 UMTS"
msgid "Prefix Delegated"
-msgstr ""
+msgstr "分å‘å‰ç¼€"
msgid "Preshared Key"
msgstr "预共享密钥"
@@ -2393,10 +2407,10 @@ msgstr "预共享密钥"
msgid ""
"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
"ignore failures"
-msgstr "在指定数é‡çš„LCPå“应故障åŽå‡å®šé“¾è·¯å·²æ–­å¼€ï¼Œ0为忽略故障"
+msgstr "在指定数é‡çš„ LCP å“应故障åŽå‡å®šé“¾è·¯å·²æ–­å¼€ï¼Œ0 为忽略故障"
msgid "Prevent listening on these interfaces."
-msgstr "防止监å¬è¿™äº›æŽ¥å£ã€‚"
+msgstr "ä¸ç›‘å¬è¿™äº›æŽ¥å£ã€‚"
msgid "Prevents client-to-client communication"
msgstr "ç¦æ­¢å®¢æˆ·ç«¯é—´é€šä¿¡"
@@ -2438,7 +2452,7 @@ msgid "Provide new network"
msgstr "添加新网络"
msgid "Pseudo Ad-Hoc (ahdemo)"
-msgstr "伪装Ad-Hoc(ahdemo)"
+msgstr "伪装 Ad-Hoc (ahdemo)"
msgid "Public Key"
msgstr "公钥"
@@ -2447,22 +2461,22 @@ msgid "Public prefix routed to this device for distribution to clients."
msgstr "分é…到此设备的公共å‰ç¼€ï¼Œç”¨ä»¥åˆ†å‘到客户端。"
msgid "QMI Cellular"
-msgstr "QMI蜂çª"
+msgstr "QMI 蜂çª"
msgid "Quality"
msgstr "è´¨é‡"
msgid "R0 Key Lifetime"
-msgstr ""
+msgstr "R0 Key Lifetime"
msgid "R1 Key Holder"
-msgstr ""
+msgstr "R1 Key Holder"
msgid "RFC3947 NAT-T mode"
-msgstr "RFC3947 NAT-T模å¼"
+msgstr "RFC3947 NAT-T 模å¼"
msgid "RTS/CTS Threshold"
-msgstr "RTS/CTS阈值"
+msgstr "RTS/CTS 阈值"
msgid "RX"
msgstr "接收"
@@ -2471,7 +2485,7 @@ msgid "RX Rate"
msgstr "接收速率"
msgid "RaLink 802.11%s Wireless Controller"
-msgstr "MediaTek/RaLink 802.11%s 无线网å¡"
+msgstr "RaLink 802.11%s 无线网å¡"
msgid "Radius-Accounting-Port"
msgstr "Radius 计费端å£"
@@ -2495,8 +2509,8 @@ msgid ""
"Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
"Configuration Protocol\">DHCP</abbr>-Server"
msgstr ""
-"æ ¹æ®<code>/etc/ethers</code>æ¥é…ç½®<abbr title=\"Dynamic Host Configuration "
-"Protocol\">DHCP</abbr>-æœåŠ¡å™¨"
+"æ ¹æ® <code>/etc/ethers</code> æ¥é…ç½® <abbr title=\"动æ€ä¸»æœºé…ç½®åè®®\">DHCP</"
+"abbr>-æœåŠ¡å™¨"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
@@ -2547,7 +2561,7 @@ msgid "Realtime Wireless"
msgstr "实时无线"
msgid "Reassociation Deadline"
-msgstr ""
+msgstr "é‡å…³è”截止时间"
msgid "Rebind protection"
msgstr "é‡ç»‘定ä¿æŠ¤"
@@ -2568,7 +2582,7 @@ msgid "Receiver Antenna"
msgstr "接收天线"
msgid "Recommended. IP addresses of the WireGuard interface."
-msgstr ""
+msgstr "推è,Wire Guard 接å£çš„ IP 地å€ã€‚"
msgid "Reconnect this interface"
msgstr "é‡è¿žæ­¤æŽ¥å£"
@@ -2579,9 +2593,6 @@ msgstr "é‡è¿žæŽ¥å£ä¸­..."
msgid "References"
msgstr "引用"
-msgid "Regulatory Domain"
-msgstr "无线网络国家区域"
-
msgid "Relay"
msgstr "中继"
@@ -2595,10 +2606,10 @@ msgid "Relay bridge"
msgstr "中继桥"
msgid "Remote IPv4 address"
-msgstr "远程IPv4地å€"
+msgstr "远程 IPv4 地å€"
msgid "Remote IPv4 address or FQDN"
-msgstr "远程IPv4地å€æˆ–FQDN"
+msgstr "远程 IPv4 地å€æˆ– FQDN"
msgid "Remove"
msgstr "移除"
@@ -2613,43 +2624,45 @@ msgid "Replace wireless configuration"
msgstr "é‡ç½®æ— çº¿é…ç½®"
msgid "Request IPv6-address"
-msgstr "请求IPv6地å€"
+msgstr "请求 IPv6 地å€"
msgid "Request IPv6-prefix of length"
-msgstr "请求指定长度的IPv6å‰ç¼€"
+msgstr "请求指定长度的 IPv6 å‰ç¼€"
msgid "Require TLS"
-msgstr "必须使用TLS"
+msgstr "必须使用 TLS"
msgid "Required"
-msgstr ""
+msgstr "å¿…é¡»"
msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
-msgstr "æŸäº›ISP需è¦ï¼Œä¾‹å¦‚:åŒè½´çº¿ç½‘络DOCSIS 3"
+msgstr "æŸäº› ISP 需è¦ï¼Œä¾‹å¦‚: åŒè½´çº¿ç½‘络 DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
-msgstr "必须,此接å£çš„Base64ç¼–ç ç§é’¥ã€‚"
+msgstr "必须,此接å£çš„ Base64 ç¼–ç ç§é’¥ã€‚"
+
+msgid "Required. Base64-encoded public key of peer."
+msgstr "必须,Peer çš„ Base64 ç¼–ç å…¬é’¥ã€‚"
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-"必须,å…许该Peer在隧é“中使用的IP地å€å’Œå‰ç¼€ï¼Œé€šå¸¸æ˜¯è¯¥Peer的隧é“IP地å€å’Œé€šè¿‡éš§"
-"é“的路由网络。"
-
-msgid "Required. Public key of peer."
-msgstr "必须,Peer的公钥。"
+"必须,å…许该 Peer 在隧é“中使用的 IP 地å€å’Œå‰ç¼€ï¼Œé€šå¸¸æ˜¯è¯¥ Peer çš„éš§é“ IP 地å€"
+"和通过隧é“的路由网络。"
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
msgstr ""
+"éœ€è¦ wpad/hostapd 的完整版本和 WiFi 驱动程åºçš„支æŒ<br />(截至 2017 å¹´ 2 月: "
+"ath9k 和 ath10k,或者 LEDE 的 mwlwifi 和 mt76)"
msgid ""
"Requires upstream supports DNSSEC; verify unsigned domain responses really "
"come from unsigned domains"
-msgstr "需è¦ä¸Šçº§æ”¯æŒDNSSEC,验è¯æœªç­¾å的域å“应确实是æ¥è‡ªæœªç­¾å的域。"
+msgstr "需è¦ä¸Šçº§æ”¯æŒ DNSSEC,验è¯æœªç­¾å的域å“应确实是æ¥è‡ªæœªç­¾å的域。"
msgid "Reset"
msgstr "å¤ä½"
@@ -2661,7 +2674,7 @@ msgid "Reset to defaults"
msgstr "æ¢å¤åˆ°å‡ºåŽ‚设置"
msgid "Resolv and Hosts Files"
-msgstr "HOSTS和解æžæ–‡ä»¶"
+msgstr "HOSTS 和解æžæ–‡ä»¶"
msgid "Resolve file"
msgstr "解æžæ–‡ä»¶"
@@ -2685,19 +2698,19 @@ msgid "Root"
msgstr "Root"
msgid "Root directory for files served via TFTP"
-msgstr "TFTPæœåŠ¡å™¨çš„根目录"
+msgstr "TFTP æœåŠ¡å™¨çš„根目录"
msgid "Root preparation"
-msgstr ""
+msgstr "根目录准备"
msgid "Route Allowed IPs"
-msgstr "路由å…许的IP"
+msgstr "路由å…许的 IP"
msgid "Route type"
msgstr "路由类型"
msgid "Routed IPv6 prefix for downstream interfaces"
-msgstr "下行接å£çš„路由IPv6å‰ç¼€"
+msgstr "下行接å£çš„路由 IPv6 å‰ç¼€"
msgid "Router Advertisement-Service"
msgstr "路由器广告æœåŠ¡"
@@ -2725,25 +2738,25 @@ msgstr "SHA256"
msgid ""
"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) "
"use 6in4 instead"
-msgstr "SIXXS仅支æŒTIC,对于使用IPåè®®41(RFC4213)çš„é™æ€éš§é“,使用6in4"
+msgstr "SIXXS ä»…æ”¯æŒ TIC,对于使用 IP åè®® 41 (RFC4213) çš„é™æ€éš§é“,使用 6in4"
msgid "SIXXS-handle[/Tunnel-ID]"
-msgstr ""
+msgstr "SIXXS-handle[/Tunnel-ID]"
msgid "SNR"
msgstr "SNR"
msgid "SSH Access"
-msgstr "SSH访问"
+msgstr "SSH 访问"
msgid "SSH server address"
-msgstr "SSHæœåŠ¡å™¨åœ°å€"
+msgstr "SSH æœåŠ¡å™¨åœ°å€"
msgid "SSH server port"
-msgstr "SSHæœåŠ¡å™¨ç«¯å£"
+msgstr "SSH æœåŠ¡å™¨ç«¯å£"
msgid "SSH username"
-msgstr "SSH用户å"
+msgstr "SSH 用户å"
msgid "SSH-Keys"
msgstr "SSH-密钥"
@@ -2778,14 +2791,11 @@ msgstr "è¯¦å‚ \"mount\" è”机帮助"
msgid ""
"Send LCP echo requests at the given interval in seconds, only effective in "
"conjunction with failure threshold"
-msgstr "定时å‘é€LCPå“应(秒),仅在结åˆäº†æ•…障阈值时有效"
+msgstr "定时å‘é€ LCP å“应 (秒),仅在结åˆäº†æ•…障阈值时有效"
msgid "Separate Clients"
msgstr "隔离客户端"
-msgid "Separate WDS"
-msgstr "隔离WDS"
-
msgid "Server Settings"
msgstr "æœåŠ¡å™¨è®¾ç½®"
@@ -2795,7 +2805,7 @@ msgstr "æœåŠ¡å™¨å¯†ç "
msgid ""
"Server password, enter the specific password of the tunnel when the username "
"contains the tunnel ID"
-msgstr "æœåŠ¡å™¨å¯†ç ,如果用户å包å«éš§é“ID则在此填写独立的密ç "
+msgstr "æœåŠ¡å™¨å¯†ç ,如果用户å包å«éš§é“ ID 则在此填写独立的密ç "
msgid "Server username"
msgstr "æœåŠ¡å™¨ç”¨æˆ·å"
@@ -2809,17 +2819,24 @@ msgstr "æœåŠ¡ç±»åž‹"
msgid "Services"
msgstr "æœåŠ¡"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+"无论链路载è·å¦‚何都设置接å£å±žæ€§ (如果设置,载è·ä¾¦å¬äº‹ä»¶ä¸è°ƒç”¨ Hotplug 处ç†ç¨‹"
+"åº)。"
+
msgid "Set up Time Synchronization"
msgstr "设置时间åŒæ­¥"
msgid "Setup DHCP Server"
-msgstr "é…ç½®DHCPæœåŠ¡å™¨"
+msgstr "é…ç½® DHCP æœåŠ¡å™¨"
msgid "Severely Errored Seconds (SES)"
-msgstr "严é‡è¯¯ç ç§’(SES)"
+msgstr "严é‡è¯¯ç ç§’ (SES)"
msgid "Short GI"
-msgstr ""
+msgstr "Short GI"
msgid "Show current backup file list"
msgstr "显示当å‰æ–‡ä»¶å¤‡ä»½åˆ—表"
@@ -2834,7 +2851,7 @@ msgid "Signal"
msgstr "ä¿¡å·"
msgid "Signal Attenuation (SATN)"
-msgstr "ä¿¡å·è¡°å‡(SATN)"
+msgstr "ä¿¡å·è¡°å‡ (SATN)"
msgid "Signal:"
msgstr "ä¿¡å·:"
@@ -2843,7 +2860,7 @@ msgid "Size"
msgstr "大å°"
msgid "Size (.ipk)"
-msgstr "大å°(.ipk)"
+msgstr "å¤§å° (.ipk)"
msgid "Skip"
msgstr "跳过"
@@ -2861,7 +2878,7 @@ msgid "Software"
msgstr "软件包"
msgid "Software VLAN"
-msgstr ""
+msgstr "软件 VLAN"
msgid "Some fields are invalid, cannot save values!"
msgstr "一些项目的值无效,无法ä¿å­˜ï¼"
@@ -2877,8 +2894,8 @@ msgid ""
"flashed manually. Please refer to the wiki for device specific install "
"instructions."
msgstr ""
-"抱歉,您的设备暂ä¸æ”¯æŒSysupgradeå‡çº§ï¼Œéœ€æ‰‹åŠ¨æ›´æ–°å›ºä»¶ã€‚请å‚考Wiki中关于此设备"
-"的固件更新说明。"
+"抱歉,您的设备暂ä¸æ”¯æŒ Sysupgrade å‡çº§ï¼Œéœ€æ‰‹åŠ¨æ›´æ–°å›ºä»¶ã€‚请å‚考 Wiki 中关于此"
+"设备的固件更新说明。"
msgid "Sort"
msgstr "排åº"
@@ -2896,30 +2913,30 @@ msgid "Specifies the directory the device is attached to"
msgstr "指定设备的挂载目录"
msgid "Specifies the listening port of this <em>Dropbear</em> instance"
-msgstr "指定<em>Dropbear</em>的监å¬ç«¯å£"
+msgstr "指定 <em>Dropbear</em> 的监å¬ç«¯å£"
msgid ""
"Specifies the maximum amount of failed ARP requests until hosts are presumed "
"to be dead"
-msgstr "指定å‡è®¾ä¸»æœºå·²ä¸¢å¤±çš„最大失败ARP请求数"
+msgstr "指定å‡è®¾ä¸»æœºå·²ä¸¢å¤±çš„最大失败 ARP 请求数"
msgid ""
"Specifies the maximum amount of seconds after which hosts are presumed to be "
"dead"
-msgstr "指定å‡è®¾ä¸»æœºå·²ä¸¢å¤±çš„最大时间(秒)"
+msgstr "指定å‡è®¾ä¸»æœºå·²ä¸¢å¤±çš„最大时间 (秒)"
msgid "Specify a TOS (Type of Service)."
-msgstr "指定TOS(æœåŠ¡ç±»åž‹)。"
+msgstr "指定 TOS (æœåŠ¡ç±»åž‹)。"
msgid ""
"Specify a TTL (Time to Live) for the encapsulating packet other than the "
"default (64)."
-msgstr "为å°è£…æ•°æ®åŒ…设置TTL(生存时间),缺çœå€¼ï¼š64"
+msgstr "为å°è£…æ•°æ®åŒ…设置 TTL (生存时间),缺çœå€¼: 64"
msgid ""
"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
"bytes)."
-msgstr "设置MTU(最大传输å•ä½),缺çœå€¼ï¼š1280 bytes"
+msgstr "设置 MTU (最大传输å•ä½),缺çœå€¼: 1280 bytes"
msgid "Specify the secret encryption key here."
msgstr "在此指定密钥。"
@@ -2935,10 +2952,10 @@ msgid "Startup"
msgstr "å¯åŠ¨é¡¹"
msgid "Static IPv4 Routes"
-msgstr "é™æ€IPv4路由"
+msgstr "é™æ€ IPv4 路由"
msgid "Static IPv6 Routes"
-msgstr "é™æ€IPv6路由"
+msgstr "é™æ€ IPv6 路由"
msgid "Static Leases"
msgstr "é™æ€åœ°å€åˆ†é…"
@@ -2946,9 +2963,6 @@ msgstr "é™æ€åœ°å€åˆ†é…"
msgid "Static Routes"
msgstr "é™æ€è·¯ç”±"
-msgid "Static WDS"
-msgstr "é™æ€WDS"
-
msgid "Static address"
msgstr "é™æ€åœ°å€"
@@ -2957,8 +2971,8 @@ msgid ""
"to DHCP clients. They are also required for non-dynamic interface "
"configurations where only hosts with a corresponding lease are served."
msgstr ""
-"é™æ€ç§Ÿçº¦ç”¨äºŽç»™DHCP客户端分é…固定的IP地å€å’Œä¸»æœºæ ‡è¯†ã€‚åªæœ‰æŒ‡å®šçš„主机æ‰èƒ½è¿žæŽ¥ï¼Œ"
-"并且接å£é¡»ä¸ºéžåŠ¨æ€é…置。"
+"é™æ€ç§Ÿçº¦ç”¨äºŽç»™ DHCP 客户端分é…固定的 IP 地å€å’Œä¸»æœºæ ‡è¯†ã€‚åªæœ‰æŒ‡å®šçš„主机æ‰èƒ½è¿ž"
+"接,并且接å£é¡»ä¸ºéžåŠ¨æ€é…置。"
msgid "Status"
msgstr "状æ€"
@@ -2995,13 +3009,13 @@ msgstr "交æ¢æœº %q (%s)"
msgid ""
"Switch %q has an unknown topology - the VLAN settings might not be accurate."
-msgstr "交æ¢æœº %q 具有未知的拓扑结构 - VLAN设置å¯èƒ½ä¸æ­£ç¡®ã€‚"
+msgstr "交æ¢æœº %q 具有未知的拓扑结构 - VLAN 设置å¯èƒ½ä¸æ­£ç¡®ã€‚"
msgid "Switch VLAN"
-msgstr "VLAN交æ¢æœº"
+msgstr "交æ¢æœº VLAN"
msgid "Switch protocol"
-msgstr "切æ¢åè®®"
+msgstr "交æ¢æœºåè®®"
msgid "Sync with browser"
msgstr "åŒæ­¥æµè§ˆå™¨æ—¶é—´"
@@ -3048,7 +3062,6 @@ msgstr "目标网络"
msgid "Terminate"
msgstr "关闭"
-#, fuzzy
msgid ""
"The <em>Device Configuration</em> section covers physical settings of the "
"radio hardware such as channel, transmit power or antenna selection which "
@@ -3056,56 +3069,58 @@ msgid ""
"multi-SSID capable). Per network settings like encryption or operation mode "
"are grouped in the <em>Interface Configuration</em>."
msgstr ""
-"<em>设备é…ç½®</em>区域å¯é…置无线的硬件å‚数,比如信é“ã€å‘射功率或å‘射天线(如果"
-"此无线模å—硬件支æŒå¤šSSID,则全部SSID共用此设备é…ç½®)。<em>接å£é…ç½®</em>区域则"
+"<em>设备é…ç½®</em>区域å¯é…置无线的硬件å‚数,比如信é“ã€å‘射功率或å‘射天线 (如果"
+"此无线模å—硬件支æŒå¤š SSID,则全部SSID共用此设备é…ç½®)。<em>接å£é…ç½®</em>区域则"
"å¯é…置此网络的工作模å¼å’ŒåŠ å¯†ç­‰ã€‚"
msgid ""
"The <em>libiwinfo-lua</em> package is not installed. You must install this "
"component for working wireless configuration!"
-msgstr "软件包<em>libiwinfo-lua</em>未安装。必需安装此组件以é…置无线ï¼"
+msgstr "软件包 <em>libiwinfo-lua</em> 未安装。必需安装此组件以é…置无线ï¼"
msgid ""
"The HE.net endpoint update configuration changed, you must now use the plain "
"username instead of the user ID!"
-msgstr "HE.net客户端更新设置已ç»è¢«æ”¹å˜,您现在必须使用用户å代替用户ID/"
+msgstr "HE.net 客户端更新设置已ç»è¢«æ”¹å˜ï¼Œæ‚¨çŽ°åœ¨å¿…须使用用户å代替用户 IDï¼"
msgid ""
"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
-msgstr "远程隧é“端的IPv4地å€æˆ–完整域å。"
+msgstr "远程隧é“端的 IPv4 地å€æˆ–完整域å。"
msgid ""
"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
-msgstr "è¿è¥å•†ç‰¹å®šçš„IPv6å‰ç¼€ï¼Œé€šå¸¸ä»¥<code>::</code>为结尾"
+msgstr "è¿è¥å•†ç‰¹å®šçš„ IPv6 å‰ç¼€ï¼Œé€šå¸¸ä»¥ <code>::</code> 为结尾"
msgid ""
"The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
"code> and <code>_</code>"
msgstr ""
-"åˆæ³•å­—符:<code>A-Z</code>, <code>a-z</code>, <code>0-9</code> å’Œ <code>_</"
+"åˆæ³•å­—符: <code>A-Z</code>, <code>a-z</code>, <code>0-9</code> å’Œ <code>_</"
"code>"
msgid "The configuration file could not be loaded due to the following error:"
-msgstr "由于以下错误,é…置文件无法被加载:"
+msgstr "由于以下错误,é…置文件无法被加载:"
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
-msgstr "存储器或分区的设备节点,(例如:<code>/dev/sda1</code>)"
+msgstr "存储器或分区的设备节点,(例如: <code>/dev/sda1</code>)"
msgid ""
"The filesystem that was used to format the memory (<abbr title=\"for example"
"\">e.g.</abbr> <samp><abbr title=\"Third Extended Filesystem\">ext3</abbr></"
"samp>)"
msgstr ""
-"用于格å¼åŒ–存储器的文件系统,(例如:<samp><abbr title=\"第三代扩展文件系统"
+"用于格å¼åŒ–存储器的文件系统,(例如: <samp><abbr title=\"第三代扩展文件系统"
"\">ext3</abbr></samp>)"
msgid ""
"The flash image was uploaded. Below is the checksum and file size listed, "
"compare them with the original file to ensure data integrity.<br /> Click "
"\"Proceed\" below to start the flash procedure."
-msgstr "固件已上传,请注æ„核对文件大å°å’Œæ ¡éªŒå€¼ï¼<br />刷新过程切勿断电ï¼"
+msgstr ""
+"固件已上传,请注æ„核对文件大å°å’Œæ ¡éªŒå€¼ï¼<br />点击下é¢çš„“继续â€å¼€å§‹åˆ·å†™ï¼Œåˆ·æ–°"
+"过程中切勿断电ï¼"
msgid "The following changes have been committed"
msgstr "以下更改已æ交"
@@ -3122,18 +3137,18 @@ msgstr "给定的网络åé‡å¤"
msgid ""
"The hardware is not multi-SSID capable and the existing configuration will "
"be replaced if you proceed."
-msgstr "本机的硬件ä¸æ”¯æŒå¤šSSID,如果继续,现有é…置将被替æ¢ã€‚"
+msgstr "本机的硬件ä¸æ”¯æŒå¤š SSID,如果继续,现有é…置将被替æ¢ã€‚"
msgid ""
"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
"addresses."
-msgstr "bitæ ¼å¼çš„IPv4å‰ç¼€é•¿åº¦, 其余的用在IPv6地å€."
+msgstr "IPv4 å‰ç¼€é•¿åº¦ (bit),其余的用在 IPv6 地å€ã€‚"
msgid "The length of the IPv6 prefix in bits"
-msgstr "bitæ ¼å¼çš„IPv6å‰ç¼€é•¿åº¦"
+msgstr "IPv6 å‰ç¼€é•¿åº¦ (bit)"
msgid "The local IPv4 address over which the tunnel is created (optional)."
-msgstr "所创建隧é“的本地IPv4地å€(å¯é€‰)。"
+msgstr "所创建隧é“的本地 IPv4 åœ°å€ (å¯é€‰)。"
msgid ""
"The network ports on this device can be combined to several <abbr title="
@@ -3143,9 +3158,9 @@ msgid ""
"segments. Often there is by default one Uplink port for a connection to the "
"next greater network like the internet and other ports for a local network."
msgstr ""
-"本设备å¯ä»¥åˆ’分为多个<abbr title=\"虚拟局域网\">VLAN</abbr>,并支æŒç”µè„‘é—´çš„ç›´"
-"接通讯。<abbr title=\"虚拟局域网\">VLAN</abbr>也常用于分割ä¸åŒç½‘段。默认通常"
-"是一æ¡ä¸Šè¡Œç«¯å£è¿žæŽ¥ISP,其余端å£ä¸ºæœ¬åœ°å­ç½‘。"
+"本设备å¯ä»¥åˆ’分为多个 <abbr title=\"虚拟局域网\">VLAN</abbr>,并支æŒç”µè„‘é—´çš„ç›´"
+"接通讯。<abbr title=\"虚拟局域网\">VLAN</abbr> 也常用于分割ä¸åŒç½‘段。默认通常"
+"是一æ¡ä¸Šè¡Œç«¯å£è¿žæŽ¥ ISP,其余端å£ä¸ºæœ¬åœ°å­ç½‘。"
msgid "The selected protocol needs a device assigned"
msgstr "所选的å议需è¦åˆ†é…设备"
@@ -3165,12 +3180,12 @@ msgid ""
"settings."
msgstr ""
"正在刷新系统...<br />切勿关闭电æº! DO NOT POWER OFF THE DEVICE!<br />等待数分"
-"é’ŸåŽå³å¯å°è¯•é‡æ–°è¿žæŽ¥åˆ°è·¯ç”±ã€‚您å¯èƒ½éœ€è¦æ›´æ”¹è®¡ç®—机的IP地å€ä»¥é‡æ–°è¿žæŽ¥ã€‚"
+"é’ŸåŽå³å¯å°è¯•é‡æ–°è¿žæŽ¥åˆ°è·¯ç”±ã€‚您å¯èƒ½éœ€è¦æ›´æ”¹è®¡ç®—机的 IP 地å€ä»¥é‡æ–°è¿žæŽ¥ã€‚"
msgid ""
"The tunnel end-point is behind NAT, defaults to disabled and only applies to "
"AYIYA"
-msgstr "隧é“端点在NAT之åŽï¼Œé»˜è®¤ä¸ºç¦ç”¨ï¼Œä»…适用于AYIYA"
+msgstr "隧é“端点在 NAT 之åŽï¼Œé»˜è®¤ä¸ºç¦ç”¨ï¼Œä»…适用于 AYIYA"
msgid ""
"The uploaded image file does not contain a supported format. Make sure that "
@@ -3197,26 +3212,26 @@ msgstr "尚未分é…设备,请在“物ç†è®¾ç½®â€é€‰é¡¹å¡ä¸­é€‰æ‹©ç½‘络设
msgid ""
"There is no password set on this router. Please configure a root password to "
"protect the web interface and enable SSH."
-msgstr "尚未设置密ç ã€‚请为root用户设置密ç ä»¥ä¿æŠ¤ä¸»æœºå¹¶å¼€å¯SSH。"
+msgstr "尚未设置密ç ã€‚请为 Root 用户设置密ç ä»¥ä¿æŠ¤ä¸»æœºå¹¶å¼€å¯ SSH。"
msgid "This IPv4 address of the relay"
-msgstr "中继的IPv4地å€"
+msgstr "中继的 IPv4 地å€"
msgid ""
"This file may contain lines like 'server=/domain/1.2.3.4' or "
"'server=1.2.3.4' fordomain-specific or full upstream <abbr title=\"Domain "
"Name System\">DNS</abbr> servers."
msgstr ""
-"此文件å¯èƒ½åŒ…å«ç±»ä¼¼'server=/domain/1.2.3.4'或'server=1.2.3.4'的行,æ¥è§£æžç‰¹å®š"
-"域å或指定上游<abbr title=\"域åæœåŠ¡ç³»ç»Ÿ\">DNS</abbr>æœåŠ¡å™¨ã€‚"
+"此文件包å«ç±»ä¼¼äºŽ 'server=/domain/1.2.3.4' 或 'server=1.2.3.4' 的行,用于解æž"
+"特定域å或指定上游 <abbr title=\"域åæœåŠ¡ç³»ç»Ÿ\">DNS</abbr> æœåŠ¡å™¨ã€‚"
msgid ""
"This is a list of shell glob patterns for matching files and directories to "
"include during sysupgrade. Modified files in /etc/config/ and certain other "
"configurations are automatically preserved."
msgstr ""
-"系统å‡çº§æ—¶è¦ä¿å­˜çš„é…置文件和目录的清å•ã€‚目录/etc/config/内修改过的文件以åŠéƒ¨"
-"分其他é…置会被自动ä¿å­˜ã€‚"
+"系统å‡çº§æ—¶è¦ä¿å­˜çš„é…置文件和目录的清å•ã€‚目录 /etc/config/ 内修改过的文件以åŠ"
+"部分其他é…置会被自动ä¿å­˜ã€‚"
msgid ""
"This is either the \"Update Key\" configured for the tunnel or the account "
@@ -3226,17 +3241,17 @@ msgstr "如果更新密钥没有设置的è¯,隧é“的“更新密钥â€æˆ–者è´
msgid ""
"This is the content of /etc/rc.local. Insert your own commands here (in "
"front of 'exit 0') to execute them at the end of the boot process."
-msgstr "å¯åŠ¨è„šæœ¬æ’入到'exit 0'之å‰å³å¯éšç³»ç»Ÿå¯åŠ¨è¿è¡Œã€‚"
+msgstr "å¯åŠ¨è„šæœ¬æ’入到 'exit 0' 之å‰å³å¯éšç³»ç»Ÿå¯åŠ¨è¿è¡Œã€‚"
msgid ""
"This is the local endpoint address assigned by the tunnel broker, it usually "
"ends with <code>:2</code>"
-msgstr "隧é“代ç†åˆ†é…的本地终端地å€ï¼Œé€šå¸¸ä»¥<code>:2</code>结尾"
+msgstr "隧é“代ç†åˆ†é…的本地终端地å€ï¼Œé€šå¸¸ä»¥ <code>:2</code> 结尾"
msgid ""
"This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
"abbr> in the local network"
-msgstr "这是内网中唯一的<abbr title=\"动æ€ä¸»æœºé…ç½®åè®®\">DHCP</abbr>æœåŠ¡å™¨"
+msgstr "这是内网中唯一的 <abbr title=\"动æ€ä¸»æœºé…ç½®åè®®\">DHCP</abbr> æœåŠ¡å™¨"
msgid "This is the plain username for logging into the account"
msgstr "登录账户时填写的用户å"
@@ -3246,11 +3261,11 @@ msgid ""
msgstr "这是隧é“代ç†åˆ†é…给你的路由å‰ç¼€ï¼Œä¾›å®¢æˆ·ç«¯ä½¿ç”¨"
msgid "This is the system crontab in which scheduled tasks can be defined."
-msgstr "自定义系统Crontab中的计划任务。"
+msgstr "自定义系统 Crontab 中的计划任务。"
msgid ""
"This is usually the address of the nearest PoP operated by the tunnel broker"
-msgstr "这通常是隧é“代ç†æ‰€ç®¡ç†çš„最近的PoP的地å€"
+msgstr "这通常是隧é“代ç†æ‰€ç®¡ç†çš„最近的 PoP 的地å€"
msgid ""
"This list gives an overview over currently running system processes and "
@@ -3281,13 +3296,13 @@ msgid ""
msgstr "上传备份存档以æ¢å¤é…置。"
msgid "Tone"
-msgstr ""
+msgstr "Tone"
msgid "Total Available"
msgstr "å¯ç”¨æ•°"
msgid "Traceroute"
-msgstr "Traceroute"
+msgstr "路由追踪"
msgid "Traffic"
msgstr "æµé‡"
@@ -3314,7 +3329,7 @@ msgid "Trigger Mode"
msgstr "触å‘模å¼"
msgid "Tunnel ID"
-msgstr "隧é“ID"
+msgstr "éš§é“ ID"
msgid "Tunnel Interface"
msgstr "隧é“接å£"
@@ -3331,9 +3346,6 @@ msgstr "隧é“é…ç½®æœåŠ¡å™¨"
msgid "Tunnel type"
msgstr "隧é“类型"
-msgid "Turbo Mode"
-msgstr "Turbo模å¼"
-
msgid "Tx-Power"
msgstr "传输功率"
@@ -3344,16 +3356,16 @@ msgid "UDP:"
msgstr "UDP:"
msgid "UMTS only"
-msgstr "ä»…UMTS(WCDMA)"
+msgstr "ä»… UMTS (WCDMA)"
msgid "UMTS/GPRS/EV-DO"
msgstr "UMTS/GPRS/EV-DO"
msgid "USB Device"
-msgstr "USB设备"
+msgstr "USB 设备"
msgid "USB Ports"
-msgstr ""
+msgstr "USB 接å£"
msgid "UUID"
msgstr "UUID"
@@ -3362,7 +3374,7 @@ msgid "Unable to dispatch"
msgstr "无法调度"
msgid "Unavailable Seconds (UAS)"
-msgstr "ä¸å¯ç”¨ç§’æ•°(UAS)"
+msgstr "ä¸å¯ç”¨ç§’æ•° (UAS)"
msgid "Unknown"
msgstr "未知"
@@ -3389,7 +3401,7 @@ msgid ""
"Upload a sysupgrade-compatible image here to replace the running firmware. "
"Check \"Keep settings\" to retain the current configuration (requires a "
"compatible firmware image)."
-msgstr "上传兼容的Sysupgrade固件以刷新当å‰ç³»ç»Ÿã€‚"
+msgstr "上传兼容的 Sysupgrade 固件以刷新当å‰ç³»ç»Ÿã€‚"
msgid "Upload archive..."
msgstr "上传备份..."
@@ -3401,37 +3413,37 @@ msgid "Uptime"
msgstr "è¿è¡Œæ—¶é—´"
msgid "Use <code>/etc/ethers</code>"
-msgstr "使用<code>/etc/ethers</code>é…ç½®"
+msgstr "使用 <code>/etc/ethers</code> é…ç½®"
msgid "Use DHCP gateway"
-msgstr "使用DHCP网关"
+msgstr "使用 DHCP 网关"
msgid "Use DNS servers advertised by peer"
msgstr "使用端局通告的DNSæœåŠ¡å™¨"
msgid "Use ISO/IEC 3166 alpha2 country codes."
-msgstr "å‚考ISO/IEC 3166 alpha2国家代ç ã€‚"
+msgstr "å‚考 ISO/IEC 3166 alpha2 国家代ç ã€‚"
msgid "Use MTU on tunnel interface"
-msgstr "隧é“接å£çš„MTU"
+msgstr "隧é“接å£çš„ MTU"
msgid "Use TTL on tunnel interface"
-msgstr "隧é“接å£çš„TTL"
+msgstr "隧é“接å£çš„ TTL"
msgid "Use as external overlay (/overlay)"
-msgstr "作为外部Overlay使用(/overlay)"
+msgstr "作为外部 Overlay 使用 (/overlay)"
msgid "Use as root filesystem (/)"
-msgstr "作为跟文件系统使用(/)"
+msgstr "作为根文件系统使用 (/)"
msgid "Use broadcast flag"
msgstr "使用广播标签"
msgid "Use builtin IPv6-management"
-msgstr "使用内置的IPv6管ç†"
+msgstr "使用内置的 IPv6 管ç†"
msgid "Use custom DNS servers"
-msgstr "使用自定义的DNSæœåŠ¡å™¨"
+msgstr "使用自定义的 DNS æœåŠ¡å™¨"
msgid "Use default gateway"
msgstr "使用默认网关"
@@ -3462,12 +3474,14 @@ msgid ""
"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
"needed with normal WPA(2)-PSK."
msgstr ""
+"用于两ç§ä¸åŒçš„用途: RADIUS NAS ID å’Œ 802.11r R0KH-ID。普通 WPA(2)-PSK ä¸éœ€"
+"è¦ã€‚"
msgid "User certificate (PEM encoded)"
-msgstr "客户è¯ä¹¦(PEM加密的)"
+msgstr "客户è¯ä¹¦ (PEM加密的)"
msgid "User key (PEM encoded)"
-msgstr "客户Key(PEM加密的)"
+msgstr "客户 Key (PEM加密的)"
msgid "Username"
msgstr "用户å"
@@ -3479,40 +3493,40 @@ msgid "VDSL"
msgstr "VDSL"
msgid "VLANs on %q"
-msgstr "%q 上的VLAN"
+msgstr "%q 上的 VLAN"
msgid "VLANs on %q (%s)"
-msgstr "%q (%s) 上的VLAN"
+msgstr "%q (%s) 上的 VLAN"
msgid "VPN Local address"
-msgstr "VPN本地地å€"
+msgstr "VPN 本地地å€"
msgid "VPN Local port"
-msgstr "VPN本地端å£"
+msgstr "VPN 本地端å£"
msgid "VPN Server"
-msgstr "VPNæœåŠ¡å™¨"
+msgstr "VPN æœåŠ¡å™¨"
msgid "VPN Server port"
-msgstr "VPNæœåŠ¡å™¨ç«¯å£"
+msgstr "VPN æœåŠ¡å™¨ç«¯å£"
msgid "VPN Server's certificate SHA1 hash"
-msgstr "VPNæœåŠ¡å™¨è¯ä¹¦çš„SHA1哈希值"
+msgstr "VPN æœåŠ¡å™¨è¯ä¹¦çš„ SHA1 哈希值"
msgid "VPNC (CISCO 3000 (and others) VPN)"
-msgstr "VPNC (CISCO 3000 和其他VPN)"
+msgstr "VPNC (CISCO 3000 和其他 VPN)"
msgid "Vendor"
-msgstr ""
+msgstr "Vendor"
msgid "Vendor Class to send when requesting DHCP"
-msgstr "请求DHCPæ—¶å‘é€çš„Vendor Class"
+msgstr "请求 DHCP æ—¶å‘é€çš„ Vendor Class"
msgid "Verbose"
msgstr "详细"
msgid "Verbose logging by aiccu daemon"
-msgstr "aiccu守护程åºè¯¦ç»†æ—¥å¿—"
+msgstr "Aiccu 守护程åºè¯¦ç»†æ—¥å¿—"
msgid "Verify"
msgstr "验è¯"
@@ -3524,30 +3538,30 @@ msgid "WDS"
msgstr "WDS"
msgid "WEP Open System"
-msgstr "WEP开放认è¯"
+msgstr "WEP 开放认è¯"
msgid "WEP Shared Key"
-msgstr "WEP共享密钥"
+msgstr "WEP 共享密钥"
msgid "WEP passphrase"
-msgstr "WEP密钥"
+msgstr "WEP 密钥"
msgid "WMM Mode"
-msgstr "WMM多媒体加速"
+msgstr "WMM 多媒体加速"
msgid "WPA passphrase"
-msgstr "WPA密钥"
+msgstr "WPA 密钥"
msgid ""
"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
"and ad-hoc mode) to be installed."
msgstr ""
-"WPA加密需è¦å®‰è£…wpa_supplicant(客户端模å¼)或安装hostapd(接入点APã€ç‚¹å¯¹ç‚¹ad-hoc"
-"模å¼)。"
+"WPA 加密需è¦å®‰è£… wpa_supplicant (客户端模å¼) 或安装 hostapd (接入点 APã€ç‚¹å¯¹"
+"点 Ad-Hoc 模å¼)。"
msgid ""
"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)"
-msgstr "在NTPåŒæ­¥ä¹‹å‰ç­‰å¾…时间,设置为0表示åŒæ­¥ä¹‹å‰ä¸ç­‰å¾…(å¯é€‰)"
+msgstr "在 NTP åŒæ­¥ä¹‹å‰ç­‰å¾…时间,设置为 0 表示åŒæ­¥ä¹‹å‰ä¸ç­‰å¾… (å¯é€‰)"
msgid "Waiting for changes to be applied..."
msgstr "正在应用更改..."
@@ -3562,10 +3576,10 @@ msgid "Warning"
msgstr "警告"
msgid "Warning: There are unsaved changes that will get lost on reboot!"
-msgstr "警告:有一些未ä¿å­˜çš„é…置将在é‡å¯åŽä¸¢å¤±ï¼"
+msgstr "警告: 有一些未ä¿å­˜çš„é…置将在é‡å¯åŽä¸¢å¤±ï¼"
msgid "Whether to create an IPv6 default route over the tunnel"
-msgstr "是å¦é€šè¿‡éš§é“创建IPv6缺çœè·¯ç”±"
+msgstr "是å¦é€šè¿‡éš§é“创建 IPv6 缺çœè·¯ç”±"
msgid "Whether to route only packets from delegated prefixes"
msgstr "是å¦ä»…路由æ¥è‡ªåˆ†å‘å‰ç¼€çš„æ•°æ®åŒ…"
@@ -3574,7 +3588,7 @@ msgid "Width"
msgstr "频宽"
msgid "WireGuard VPN"
-msgstr ""
+msgstr "WireGuard VPN"
msgid "Wireless"
msgstr "无线"
@@ -3610,33 +3624,30 @@ msgid "Wireless shut down"
msgstr "无线已关闭"
msgid "Write received DNS requests to syslog"
-msgstr "将收到的DNS请求写入系统日志"
+msgstr "将收到的 DNS 请求写入系统日志"
msgid "Write system log to file"
msgstr "将系统日志写入文件"
-msgid "XR Support"
-msgstr "XR支æŒ"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
"scripts like \"network\", your device might become inaccessible!</strong>"
msgstr ""
-"å¯ç”¨æˆ–ç¦ç”¨å·²å®‰è£…çš„å¯åŠ¨è„šæœ¬ã€‚更改在设备é‡å¯åŽç”Ÿæ•ˆã€‚<br /><strong>警告:如果ç¦"
-"用了必è¦çš„å¯åŠ¨è„šæœ¬ï¼Œæ¯”如\"network\",å¯èƒ½ä¼šå¯¼è‡´è®¾å¤‡æ— æ³•è®¿é—®ï¼</strong>"
+"å¯ç”¨æˆ–ç¦ç”¨å·²å®‰è£…çš„å¯åŠ¨è„šæœ¬ã€‚更改在设备é‡å¯åŽç”Ÿæ•ˆã€‚<br /><strong>警告: 如果ç¦"
+"用了必è¦çš„å¯åŠ¨è„šæœ¬ï¼Œæ¯”如 \"network\",å¯èƒ½ä¼šå¯¼è‡´è®¾å¤‡æ— æ³•è®¿é—®ï¼</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
-msgstr "LUCI的正常è¿è¡Œéœ€è¦å¼€å¯æµè§ˆå™¨çš„Java Script支æŒã€‚"
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr "LUCI 的正常è¿è¡Œéœ€è¦å¼€å¯æµè§ˆå™¨çš„ JavaScript 支æŒã€‚"
msgid ""
"Your Internet Explorer is too old to display this page correctly. Please "
"upgrade it to at least version 7 or use another browser like Firefox, Opera "
"or Safari."
msgstr ""
-"ä½ çš„Internet Explorerå·²ç»è€åˆ°æ— æ³•æ­£å¸¸æ˜¾ç¤ºè¿™ä¸ªé¡µé¢äº†ï¼è¯·è‡³å°‘更新到IE7或者使用"
-"诸如Firefox Opera Safari之类的æµè§ˆå™¨ã€‚"
+"ä½ çš„ Internet Explorer å·²ç»è€åˆ°æ— æ³•æ­£å¸¸æ˜¾ç¤ºè¿™ä¸ªé¡µé¢äº†ï¼è¯·æ›´æ–°åˆ° IE7 åŠä»¥ä¸Šæˆ–"
+"者使用诸如 Firefox Opera Safari 之类的æµè§ˆå™¨ã€‚"
msgid "any"
msgstr "ä»»æ„"
@@ -3677,7 +3688,7 @@ msgstr "过期时间"
msgid ""
"file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
"abbr>-leases will be stored"
-msgstr "存放<abbr title=\"动æ€ä¸»æœºé…ç½®åè®®\">DHCP</abbr>租约的文件"
+msgstr "存放 <abbr title=\"动æ€ä¸»æœºé…ç½®åè®®\">DHCP</abbr> 租约的文件"
msgid "forward"
msgstr "转å‘"
@@ -3713,19 +3724,19 @@ msgid "kbit/s"
msgstr "kbit/s"
msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
-msgstr "本地<abbr title=\"域åæœåŠ¡ç³»ç»Ÿ\">DNS</abbr>解æžæ–‡ä»¶"
+msgstr "本地 <abbr title=\"域åæœåŠ¡ç³»ç»Ÿ\">DNS</abbr> 解æžæ–‡ä»¶"
msgid "minimum 1280, maximum 1480"
-msgstr "最å°å€¼1280,最大值1480"
+msgstr "最å°å€¼ 1280,最大值 1480"
msgid "minutes"
-msgstr ""
+msgstr "分钟"
msgid "navigation Navigation"
msgstr "导航"
msgid "no"
-msgstr ""
+msgstr "å¦"
msgid "no link"
msgstr "未连接"
@@ -3776,7 +3787,7 @@ msgid "tagged"
msgstr "å…³è”"
msgid "time units (TUs / 1.024 ms) [1000-65535]"
-msgstr ""
+msgstr "时间å•ä½ (TUs / 1.024ms) [1000-65535]"
msgid "unknown"
msgstr "未知"
@@ -3788,7 +3799,7 @@ msgid "unspecified"
msgstr "未指定"
msgid "unspecified -or- create:"
-msgstr "未指定或创建:"
+msgstr "未指定或创建:"
msgid "untagged"
msgstr "ä¸å…³è”"
@@ -3799,6 +3810,57 @@ msgstr "是"
msgid "« Back"
msgstr "« åŽé€€"
+#~ msgid "AR Support"
+#~ msgstr "AR支æŒ"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Qualcomm/Atheros 802.11%s 无线网å¡"
+
+#~ msgid "Background Scan"
+#~ msgstr "åŽå°æœç´¢"
+
+#~ msgid "Compression"
+#~ msgstr "压缩"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "åœç”¨HW-Beacon计时器"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "ä¸å›žé€æŽ¢æµ‹å“应"
+
+#~ msgid "Fast Frames"
+#~ msgstr "快速帧"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "最高速率"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "最低速率"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "多播速率"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "户外频é“"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "无线网络国家区域"
+
+#~ msgid "Separate WDS"
+#~ msgstr "隔离WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "é™æ€WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo模å¼"
+
+#~ msgid "XR Support"
+#~ msgstr "XR支æŒ"
+
+#~ msgid "Required. Public key of peer."
+#~ msgstr "必须,Peer的公钥。"
+
#~ msgid "An additional network will be created if you leave this checked."
#~ msgstr "如果选中此å¤é€‰æ¡†ï¼Œåˆ™ä¼šåˆ›å»ºä¸€ä¸ªé™„加网络。"
diff --git a/modules/luci-base/po/zh-tw/base.po b/modules/luci-base/po/zh-tw/base.po
index 8f759b8d5f..e1d97dc336 100644
--- a/modules/luci-base/po/zh-tw/base.po
+++ b/modules/luci-base/po/zh-tw/base.po
@@ -147,6 +147,11 @@ msgstr "<abbr title=\"maximal\">最大</abbr>並發查詢數"
msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
+msgid ""
+"<br/>Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -165,9 +170,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "AR支æ´"
-
msgid "ARP retry threshold"
msgstr "ARPé‡è©¦é–€æª»"
@@ -405,9 +407,6 @@ msgstr ""
msgid "Associated Stations"
msgstr "已連接站點"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s 無線控制器"
-
msgid "Auth Group"
msgstr ""
@@ -486,9 +485,6 @@ msgstr "返回至總覽"
msgid "Back to scan results"
msgstr "返回至掃æçµæžœ"
-msgid "Background Scan"
-msgstr "背景æœå°‹"
-
msgid "Backup / Flash Firmware"
msgstr "備份/å‡ç´šéŸŒé«”"
@@ -651,9 +647,6 @@ msgstr "指令"
msgid "Common Configuration"
msgstr "一般設定"
-msgid "Compression"
-msgstr "壓縮"
-
msgid "Configuration"
msgstr "設定"
@@ -872,9 +865,6 @@ msgstr "關閉DNS設置"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "關閉硬體燈號計時器"
-
msgid "Disabled"
msgstr "關閉"
@@ -918,9 +908,6 @@ msgstr "å°ä¸è¢«å…¬ç”¨å稱伺æœå™¨å›žæ‡‰çš„請求ä¸è½‰ç™¼"
msgid "Do not forward reverse lookups for local networks"
msgstr "å°æœ¬åœ°ç¶²åŸŸä¸è½‰ç™¼å解æžéŽ–定"
-msgid "Do not send probe responses"
-msgstr "ä¸å‚³é€æŽ¢æ¸¬å›žæ‡‰"
-
msgid "Domain required"
msgstr "網域必è¦çš„"
@@ -1117,9 +1104,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "快速迅框群"
-
msgid "File"
msgstr "檔案"
@@ -1155,6 +1139,9 @@ msgstr "完æˆ"
msgid "Firewall"
msgstr "防ç«ç‰†"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "防ç«ç‰†è¨­å®š"
@@ -1200,6 +1187,9 @@ msgstr "強制TKIP加密"
msgid "Force TKIP and CCMP (AES)"
msgstr "強制TKIP+CCMP (AES)加密"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1592,13 +1582,16 @@ msgstr "打入的是ä¸æ­£ç¢ºçš„VLAN ID!僅有ç¨ä¸€ç„¡äºŒçš„IDs被å…許"
msgid "Invalid username and/or password! Please try again."
msgstr "ä¸æ­£ç¢ºçš„用戶å稱和/或者密碼!è«‹å†è©¦ä¸€æ¬¡."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
msgstr "它顯示你正嘗試更新ä¸é©ç”¨æ–¼é€™å€‹flash記憶體的映åƒæª”,請檢查確èªé€™å€‹æ˜ åƒæª”"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr "需è¦Java腳本"
msgid "Join Network"
@@ -1860,9 +1853,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "最快速度"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "å…許啟用DHCP釋放的最大數é‡"
@@ -1898,9 +1888,6 @@ msgstr "記憶體使用 (%)"
msgid "Metric"
msgstr "公測單ä½"
-msgid "Minimum Rate"
-msgstr "最低速度"
-
msgid "Minimum hold time"
msgstr "å¯æŒæœ‰çš„最低時間"
@@ -1972,9 +1959,6 @@ msgstr "往下移"
msgid "Move up"
msgstr "往上移"
-msgid "Multicast Rate"
-msgstr "多點群播速度"
-
msgid "Multicast address"
msgstr "多點群播ä½å€"
@@ -1987,6 +1971,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2178,8 +2165,13 @@ msgid "Optional."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with <code>0x</code>."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2216,9 +2208,6 @@ msgstr "出"
msgid "Outbound:"
msgstr "外連:"
-msgid "Outdoor Channels"
-msgstr "室外通é“"
-
msgid "Output Interface"
msgstr ""
@@ -2398,6 +2387,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2595,9 +2590,6 @@ msgstr "é‡é€£é€™å€‹ä»‹é¢ä¸­"
msgid "References"
msgstr "引用"
-msgid "Regulatory Domain"
-msgstr "監管網域"
-
msgid "Relay"
msgstr "延é²"
@@ -2646,15 +2638,15 @@ msgstr "å°ç‰¹å®šçš„ISP需è¦,例如.DOCSIS 3 加速有線電視寬頻網路"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2797,9 +2789,6 @@ msgstr "傳é€LCP呼å«è«‹æ±‚在這個給予的秒數間隔內, 僅影響關è¯å
msgid "Separate Clients"
msgstr "分隔用戶端"
-msgid "Separate WDS"
-msgstr "分隔WDS中繼"
-
msgid "Server Settings"
msgstr "伺æœå™¨è¨­å®šå€¼"
@@ -2823,6 +2812,11 @@ msgstr "æœå‹™åž‹æ…‹"
msgid "Services"
msgstr "å„æœå‹™"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "安è£æ ¡æ™‚åŒæ­¥"
@@ -2960,9 +2954,6 @@ msgstr "éœæ…‹ç§Ÿç´„"
msgid "Static Routes"
msgstr "éœæ…‹è·¯ç”±"
-msgid "Static WDS"
-msgstr "éœæ…‹WDS"
-
msgid "Static address"
msgstr "éœæ…‹ä½å€"
@@ -3358,9 +3349,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "渦輪爆è¡æ¨¡å¼"
-
msgid "Tx-Power"
msgstr "傳é€-功率"
@@ -3645,9 +3633,6 @@ msgstr "寫入已接收的DNS請求到系統日誌中"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "支æ´XR無線陣列"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.<br /><strong>Warning: If you disable essential init "
@@ -3657,8 +3642,8 @@ msgstr ""
"å‘Š: å‡å¦‚你關閉必è¦çš„åˆå§‹åŒ–腳本åƒ\"網路\", 你的設備將å¯èƒ½ç„¡æ³•å­˜å–!</strong>"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
-msgstr "在ç€è¦½å™¨ä½ å¿…須啟用Java Scriptå¦å‰‡LuCI無法正常é‹ä½œ."
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr "在ç€è¦½å™¨ä½ å¿…須啟用JavaScriptå¦å‰‡LuCI無法正常é‹ä½œ."
msgid ""
"Your Internet Explorer is too old to display this page correctly. Please "
@@ -3829,6 +3814,54 @@ msgstr "是的"
msgid "« Back"
msgstr "« 倒退"
+#~ msgid "AR Support"
+#~ msgstr "AR支æ´"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s 無線控制器"
+
+#~ msgid "Background Scan"
+#~ msgstr "背景æœå°‹"
+
+#~ msgid "Compression"
+#~ msgstr "壓縮"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "關閉硬體燈號計時器"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "ä¸å‚³é€æŽ¢æ¸¬å›žæ‡‰"
+
+#~ msgid "Fast Frames"
+#~ msgstr "快速迅框群"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "最快速度"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "最低速度"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "多點群播速度"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "室外通é“"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "監管網域"
+
+#~ msgid "Separate WDS"
+#~ msgstr "分隔WDS中繼"
+
+#~ msgid "Static WDS"
+#~ msgstr "éœæ…‹WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "渦輪爆è¡æ¨¡å¼"
+
+#~ msgid "XR Support"
+#~ msgstr "支æ´XR無線陣列"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "å–消é¸å–將會å¦å¤–建立一個新網路,而ä¸æœƒè¦†è“‹ç›®å‰çš„網路設定"
diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
index 10636a491a..f418ecb40f 100644
--- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
+++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
@@ -68,9 +68,10 @@ se = s:taboption("advanced", Flag, "sequential_ip",
translate("Allocate IP addresses sequentially, starting from the lowest available address"))
se.optional = true
-s:taboption("advanced", Flag, "boguspriv",
+bp = s:taboption("advanced", Flag, "boguspriv",
translate("Filter private"),
translate("Do not forward reverse lookups for local networks"))
+bp.default = bp.enabled
s:taboption("advanced", Flag, "filterwin2k",
translate("Filter useless"),
diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua
index 16a104494a..0318522281 100644
--- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua
+++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua
@@ -220,6 +220,12 @@ auto.default = (net:proto() == "none") and auto.disabled or auto.enabled
delegate = s:taboption("advanced", Flag, "delegate", translate("Use builtin IPv6-management"))
delegate.default = delegate.enabled
+force_link = s:taboption("advanced", Flag, "force_link",
+ translate("Force link"),
+ translate("Set interface properties regardless of the link carrier (If set, carrier sense events do not invoke hotplug handlers)."))
+
+force_link.default = (net:proto() == "static") and force_link.enabled or force_link.disabled
+
if not net:is_virtual() then
br = s:taboption("physical", Flag, "type", translate("Bridge interfaces"), translate("creates a bridge over specified interface(s)"))
diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua
index 33a8892ece..3a08d81d0a 100644
--- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua
+++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua
@@ -248,64 +248,6 @@ if hwtype == "mac80211" then
end
-------------------- Madwifi Device ------------------
-
-if hwtype == "atheros" then
- tp = s:taboption("general",
- (#tx_power_list > 0) and ListValue or Value,
- "txpower", translate("Transmit Power"), "dBm")
-
- tp.rmempty = true
- tp.default = tx_power_cur
-
- function tp.cfgvalue(...)
- return txpower_current(Value.cfgvalue(...), tx_power_list)
- end
-
- tp:value("", translate("auto"))
- for _, p in ipairs(tx_power_list) do
- tp:value(p.driver_dbm, "%i dBm (%i mW)"
- %{ p.display_dbm, p.display_mw })
- end
-
- s:taboption("advanced", Flag, "diversity", translate("Diversity")).rmempty = false
-
- if not nsantenna then
- ant1 = s:taboption("advanced", ListValue, "txantenna", translate("Transmitter Antenna"))
- ant1.widget = "radio"
- ant1.orientation = "horizontal"
- ant1:depends("diversity", "")
- ant1:value("0", translate("auto"))
- ant1:value("1", translate("Antenna 1"))
- ant1:value("2", translate("Antenna 2"))
-
- ant2 = s:taboption("advanced", ListValue, "rxantenna", translate("Receiver Antenna"))
- ant2.widget = "radio"
- ant2.orientation = "horizontal"
- ant2:depends("diversity", "")
- ant2:value("0", translate("auto"))
- ant2:value("1", translate("Antenna 1"))
- ant2:value("2", translate("Antenna 2"))
-
- else -- NanoFoo
- local ant = s:taboption("advanced", ListValue, "antenna", translate("Transmitter Antenna"))
- ant:value("auto")
- ant:value("vertical")
- ant:value("horizontal")
- ant:value("external")
- end
-
- s:taboption("advanced", Value, "distance", translate("Distance Optimization"),
- translate("Distance to farthest network member in meters."))
- s:taboption("advanced", Value, "regdomain", translate("Regulatory Domain"))
- s:taboption("advanced", Value, "country", translate("Country Code"))
- s:taboption("advanced", Flag, "outdoor", translate("Outdoor Channels"))
-
- --s:option(Flag, "nosbeacon", translate("Disable HW-Beacon timer"))
-end
-
-
-
------------------- Broadcom Device ------------------
if hwtype == "broadcom" then
@@ -519,102 +461,13 @@ if hwtype == "mac80211" then
wmm:depends({mode="ap-wds"})
wmm.default = wmm.enabled
- ifname = s:taboption("advanced", Value, "ifname", translate("Interface name"), translate("Override default interface name"))
- ifname.optional = true
-end
-
-
-
--------------------- Madwifi Interface ----------------------
-
-if hwtype == "atheros" then
- mode:value("ahdemo", translate("Pseudo Ad-Hoc (ahdemo)"))
- mode:value("monitor", translate("Monitor"))
- mode:value("ap-wds", "%s (%s)" % {translate("Access Point"), translate("WDS")})
- mode:value("sta-wds", "%s (%s)" % {translate("Client"), translate("WDS")})
- mode:value("wds", translate("Static WDS"))
-
- function mode.write(self, section, value)
- if value == "ap-wds" then
- ListValue.write(self, section, "ap")
- m.uci:set("wireless", section, "wds", 1)
- elseif value == "sta-wds" then
- ListValue.write(self, section, "sta")
- m.uci:set("wireless", section, "wds", 1)
- else
- ListValue.write(self, section, value)
- m.uci:delete("wireless", section, "wds")
- end
- end
-
- function mode.cfgvalue(self, section)
- local mode = ListValue.cfgvalue(self, section)
- local wds = m.uci:get("wireless", section, "wds") == "1"
-
- if mode == "ap" and wds then
- return "ap-wds"
- elseif mode == "sta" and wds then
- return "sta-wds"
- else
- return mode
- end
- end
-
- bssid:depends({mode="adhoc"})
- bssid:depends({mode="ahdemo"})
- bssid:depends({mode="wds"})
-
- wdssep = s:taboption("advanced", Flag, "wdssep", translate("Separate WDS"))
- wdssep:depends({mode="ap-wds"})
-
- s:taboption("advanced", Flag, "doth", "802.11h")
- hidden = s:taboption("general", Flag, "hidden", translate("Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"))
- hidden:depends({mode="ap"})
- hidden:depends({mode="adhoc"})
- hidden:depends({mode="ap-wds"})
- hidden:depends({mode="sta-wds"})
- isolate = s:taboption("advanced", Flag, "isolate", translate("Separate Clients"),
+ isolate = s:taboption("advanced", Flag, "isolate", translate("Isolate Clients"),
translate("Prevents client-to-client communication"))
isolate:depends({mode="ap"})
- s:taboption("advanced", Flag, "bgscan", translate("Background Scan"))
-
- mp = s:taboption("macfilter", ListValue, "macpolicy", translate("MAC-Address Filter"))
- mp:value("", translate("disable"))
- mp:value("allow", translate("Allow listed only"))
- mp:value("deny", translate("Allow all except listed"))
-
- ml = s:taboption("macfilter", DynamicList, "maclist", translate("MAC-List"))
- ml.datatype = "macaddr"
- ml:depends({macpolicy="allow"})
- ml:depends({macpolicy="deny"})
- nt.mac_hints(function(mac, name) ml:value(mac, "%s (%s)" %{ mac, name }) end)
+ isolate:depends({mode="ap-wds"})
- s:taboption("advanced", Value, "rate", translate("Transmission Rate"))
- s:taboption("advanced", Value, "mcast_rate", translate("Multicast Rate"))
- s:taboption("advanced", Value, "frag", translate("Fragmentation Threshold"))
- s:taboption("advanced", Value, "rts", translate("RTS/CTS Threshold"))
- s:taboption("advanced", Value, "minrate", translate("Minimum Rate"))
- s:taboption("advanced", Value, "maxrate", translate("Maximum Rate"))
- s:taboption("advanced", Flag, "compression", translate("Compression"))
-
- s:taboption("advanced", Flag, "bursting", translate("Frame Bursting"))
- s:taboption("advanced", Flag, "turbo", translate("Turbo Mode"))
- s:taboption("advanced", Flag, "ff", translate("Fast Frames"))
-
- s:taboption("advanced", Flag, "wmm", translate("WMM Mode"))
- s:taboption("advanced", Flag, "xr", translate("XR Support"))
- s:taboption("advanced", Flag, "ar", translate("AR Support"))
-
- local swm = s:taboption("advanced", Flag, "sw_merge", translate("Disable HW-Beacon timer"))
- swm:depends({mode="adhoc"})
-
- local nos = s:taboption("advanced", Flag, "nosbeacon", translate("Disable HW-Beacon timer"))
- nos:depends({mode="sta"})
- nos:depends({mode="sta-wds"})
-
- local probereq = s:taboption("advanced", Flag, "probereq", translate("Do not send probe responses"))
- probereq.enabled = "0"
- probereq.disabled = "1"
+ ifname = s:taboption("advanced", Value, "ifname", translate("Interface name"), translate("Override default interface name"))
+ ifname.optional = true
end
@@ -738,7 +591,7 @@ encr:value("none", "No Encryption")
encr:value("wep-open", translate("WEP Open System"), {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}, {mode="ahdemo"}, {mode="wds"})
encr:value("wep-shared", translate("WEP Shared Key"), {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}, {mode="ahdemo"}, {mode="wds"})
-if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
+if hwtype == "mac80211" or hwtype == "prism2" then
local supplicant = fs.access("/usr/sbin/wpa_supplicant")
local hostapd = fs.access("/usr/sbin/hostapd")
@@ -899,10 +752,10 @@ for slot=1,4 do
end
-if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
+if hwtype == "mac80211" or hwtype == "prism2" then
- -- Probe EAP support as a proxy for determining if 802.11r support is present
- local has_ap_eap = (os.execute("hostapd -veap >/dev/null 2>/dev/null") == 0)
+ -- Probe 802.11r support (and EAP support as a proxy for Openwrt)
+ local has_80211r = (os.execute("hostapd -v11r 2>/dev/null || hostapd -veap 2>/dev/null") == 0)
ieee80211r = s:taboption("encryption", Flag, "ieee80211r",
translate("802.11r Fast Transition"),
@@ -912,7 +765,7 @@ if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
ieee80211r:depends({mode="ap", encryption="wpa2"})
ieee80211r:depends({mode="ap-wds", encryption="wpa"})
ieee80211r:depends({mode="ap-wds", encryption="wpa2"})
- if has_ap_eap then
+ if has_80211r then
ieee80211r:depends({mode="ap", encryption="psk"})
ieee80211r:depends({mode="ap", encryption="psk2"})
ieee80211r:depends({mode="ap", encryption="psk-mixed"})
@@ -1125,16 +978,16 @@ end
-- ieee802.11w options
if hwtype == "mac80211" then
- local has_ap_eap = (os.execute("hostapd -veap >/dev/null 2>/dev/null") == 0)
- if has_ap_eap then
+ local has_80211w = (os.execute("hostapd -v11w 2>/dev/null || hostapd -veap 2>/dev/null") == 0)
+ if has_80211w then
ieee80211w = s:taboption("encryption", ListValue, "ieee80211w",
translate("802.11w Management Frame Protection"),
translate("Requires the 'full' version of wpad/hostapd " ..
"and support from the wifi driver <br />(as of Feb 2017: " ..
"ath9k and ath10k, in LEDE also mwlwifi and mt76)"))
- ieee80211w.default = "0"
+ ieee80211w.default = ""
ieee80211w.rmempty = true
- ieee80211w:value("0", translate("Disabled (default)"))
+ ieee80211w:value("", translate("Disabled (default)"))
ieee80211w:value("1", translate("Optional"))
ieee80211w:value("2", translate("Required"))
ieee80211w:depends({mode="ap", encryption="wpa2"})
@@ -1164,7 +1017,7 @@ if hwtype == "mac80211" then
end
end
-if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
+if hwtype == "mac80211" or hwtype == "prism2" then
local wpasupplicant = fs.access("/usr/sbin/wpa_supplicant")
local hostcli = fs.access("/usr/sbin/hostapd_cli")
if hostcli and wpasupplicant then
diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua
index ea92eb98de..016a6199aa 100644
--- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua
+++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua
@@ -5,7 +5,10 @@
local fs = require "nixio.fs"
local cronfile = "/etc/crontabs/root"
-f = SimpleForm("crontab", translate("Scheduled Tasks"), translate("This is the system crontab in which scheduled tasks can be defined."))
+f = SimpleForm("crontab", translate("Scheduled Tasks"),
+ translate("This is the system crontab in which scheduled tasks can be defined.") ..
+ translate("<br/>Note: you need to manually restart the cron service if the " ..
+ "crontab file was empty before editing."))
t = f:field(TextValue, "crons")
t.rmempty = true
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm
index 9c351d3933..4465095ff2 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm
@@ -66,10 +66,6 @@
return name
- -- madwifi
- elseif name == "ath" or name == "wifi" then
- return translatef("Atheros 802.11%s Wireless Controller", bands)
-
-- ralink
elseif name == "ra" then
return translatef("RaLink 802.11%s Wireless Controller", bands)
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm b/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
index 206f9ef82a..d29a894276 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
@@ -37,10 +37,8 @@
local wan = ntm:get_wannet()
local wan6 = ntm:get_wan6net()
- local conn_count = tonumber((
- luci.sys.exec("wc -l /proc/net/nf_conntrack") or
- luci.sys.exec("wc -l /proc/net/ip_conntrack") or
- ""):match("%d+")) or 0
+ local conn_count = tonumber(
+ fs.readfile("/proc/sys/net/netfilter/nf_conntrack_count")) or 0
local conn_max = tonumber((
luci.sys.exec("sysctl net.nf_conntrack_max") or
diff --git a/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua b/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua
index 19952cd5dc..ec929f1ed9 100644
--- a/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua
+++ b/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua
@@ -156,18 +156,6 @@ end
local hwtype = m:get(wifidevs[1], "type")
-if hwtype == "atheros" then
- mode = s:option(ListValue, "hwmode", translate("Mode"))
- mode.override_values = true
- mode:value("", "auto")
- mode:value("11b", "802.11b")
- mode:value("11g", "802.11g")
- mode:value("11a", "802.11a")
- mode:value("11bg", "802.11b+g")
- mode.rmempty = true
-end
-
-
ch = s:option(Value, "channel", translate("Channel"))
for i=1, 14 do
ch:value(i, i .. " (2.4 GHz)")
@@ -224,7 +212,7 @@ encr.override_values = true
encr:value("none", "No Encryption")
encr:value("wep", "WEP")
-if hwtype == "atheros" or hwtype == "mac80211" then
+if hwtype == "mac80211" then
local supplicant = fs.access("/usr/sbin/wpa_supplicant")
local hostapd = fs.access("/usr/sbin/hostapd")
@@ -288,7 +276,7 @@ port:depends({mode="ap", encryption="wpa2"})
port.rmempty = true
-if hwtype == "atheros" or hwtype == "mac80211" then
+if hwtype == "mac80211" then
nasid = s:option(Value, "nasid", translate("NAS ID"))
nasid:depends({mode="ap", encryption="wpa"})
nasid:depends({mode="ap", encryption="wpa2"})
@@ -339,7 +327,7 @@ if hwtype == "atheros" or hwtype == "mac80211" then
end
-if hwtype == "atheros" or hwtype == "broadcom" then
+if hwtype == "broadcom" then
iso = s:option(Flag, "isolate", translate("AP-Isolation"), translate("Prevents Client to Client communication"))
iso.rmempty = true
iso:depends("mode", "ap")
@@ -349,7 +337,7 @@ if hwtype == "atheros" or hwtype == "broadcom" then
hide:depends("mode", "ap")
end
-if hwtype == "mac80211" or hwtype == "atheros" then
+if hwtype == "mac80211" then
bssid:depends({mode="adhoc"})
end
diff --git a/protocols/luci-proto-ncm/Makefile b/protocols/luci-proto-ncm/Makefile
new file mode 100644
index 0000000000..5fd9c9a266
--- /dev/null
+++ b/protocols/luci-proto-ncm/Makefile
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Support for NCM
+LUCI_DEPENDS:=+comgt-ncm
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua b/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua
new file mode 100644
index 0000000000..917c88c92c
--- /dev/null
+++ b/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua
@@ -0,0 +1,157 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2015 Cezary Jackiewicz <cezary.jackiewicz@gmail.com>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+]]--
+
+local map, section, net = ...
+
+local device, apn, service, pincode, username, password, dialnumber
+local ipv6, maxwait, defaultroute, metric, peerdns, dns,
+ keepalive_failure, keepalive_interval, demand
+
+
+device = section:taboption("general", Value, "device", translate("Modem device"))
+device.rmempty = false
+
+local device_suggestions = nixio.fs.glob("/dev/cdc-wdm*")
+ or nixio.fs.glob("/dev/ttyUSB*")
+
+if device_suggestions then
+ local node
+ for node in device_suggestions do
+ device:value(node)
+ end
+end
+
+
+mode = section:taboption("general", Value, "mode", translate("Service Type"))
+mode.default = "auto"
+mode:value("preferlte", translate("Prefer LTE"))
+mode:value("preferumts", translate("Prefer UMTS"))
+mode:value("lte", "LTE")
+mode:value("umts", "UMTS/GPRS")
+mode:value("gsm", translate("GPRS only"))
+mode:value("auto", translate("auto"))
+
+
+apn = section:taboption("general", Value, "apn", translate("APN"))
+
+
+pincode = section:taboption("general", Value, "pincode", translate("PIN"))
+
+
+username = section:taboption("general", Value, "username", translate("PAP/CHAP username"))
+
+
+password = section:taboption("general", Value, "password", translate("PAP/CHAP password"))
+password.password = true
+
+dialnumber = section:taboption("general", Value, "dialnumber", translate("Dial number"))
+dialnumber.placeholder = "*99***1#"
+
+if luci.model.network:has_ipv6() then
+
+ ipv6 = section:taboption("advanced", ListValue, "ipv6")
+ ipv6:value("auto", translate("Automatic"))
+ ipv6:value("0", translate("Disabled"))
+ ipv6:value("1", translate("Manual"))
+ ipv6.default = "auto"
+
+end
+
+
+maxwait = section:taboption("advanced", Value, "maxwait",
+ translate("Modem init timeout"),
+ translate("Maximum amount of seconds to wait for the modem to become ready"))
+
+maxwait.placeholder = "20"
+maxwait.datatype = "min(1)"
+
+
+defaultroute = section:taboption("advanced", Flag, "defaultroute",
+ translate("Use default gateway"),
+ translate("If unchecked, no default route is configured"))
+
+defaultroute.default = defaultroute.enabled
+
+metric = section:taboption("advanced", Value, "metric",
+ translate("Use gateway metric"))
+
+metric.placeholder = "0"
+metric.datatype = "uinteger"
+metric:depends("defaultroute", defaultroute.enabled)
+
+
+peerdns = section:taboption("advanced", Flag, "peerdns",
+ translate("Use DNS servers advertised by peer"),
+ translate("If unchecked, the advertised DNS server addresses are ignored"))
+
+peerdns.default = peerdns.enabled
+
+
+dns = section:taboption("advanced", DynamicList, "dns",
+ translate("Use custom DNS servers"))
+
+dns:depends("peerdns", "")
+dns.datatype = "ipaddr"
+dns.cast = "string"
+
+
+keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure",
+ translate("LCP echo failure threshold"),
+ translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures"))
+
+function keepalive_failure.cfgvalue(self, section)
+ local v = m:get(section, "keepalive")
+ if v and #v > 0 then
+ return tonumber(v:match("^(%d+)[ ,]+%d+") or v)
+ end
+end
+
+function keepalive_failure.write() end
+function keepalive_failure.remove() end
+
+keepalive_failure.placeholder = "0"
+keepalive_failure.datatype = "uinteger"
+
+
+keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval",
+ translate("LCP echo interval"),
+ translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold"))
+
+function keepalive_interval.cfgvalue(self, section)
+ local v = m:get(section, "keepalive")
+ if v and #v > 0 then
+ return tonumber(v:match("^%d+[ ,]+(%d+)"))
+ end
+end
+
+function keepalive_interval.write(self, section, value)
+ local f = tonumber(keepalive_failure:formvalue(section)) or 0
+ local i = tonumber(value) or 5
+ if i < 1 then i = 1 end
+ if f > 0 then
+ m:set(section, "keepalive", "%d %d" %{ f, i })
+ else
+ m:del(section, "keepalive")
+ end
+end
+
+keepalive_interval.remove = keepalive_interval.write
+keepalive_interval.placeholder = "5"
+keepalive_interval.datatype = "min(1)"
+
+
+demand = section:taboption("advanced", Value, "demand",
+ translate("Inactivity timeout"),
+ translate("Close inactive connection after the given amount of seconds, use 0 to persist connection"))
+
+demand.placeholder = "0"
+demand.datatype = "uinteger"
diff --git a/protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua b/protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua
new file mode 100644
index 0000000000..6c5b34e083
--- /dev/null
+++ b/protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua
@@ -0,0 +1,61 @@
+--[[
+LuCI - Network model - NCM protocol extension
+
+Copyright 2015 Cezary Jackiewicz <cezary.jackiewicz@gmail.com>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+]]--
+
+local netmod = luci.model.network
+
+local proto = netmod:register_protocol("ncm")
+local interface = luci.model.network.interface
+
+function proto.get_i18n(self)
+ return luci.i18n.translate("NCM")
+end
+
+function proto.opkg_package(self)
+ return "comgt-ncm"
+end
+
+function proto.is_installed(self)
+ return nixio.fs.access("/lib/netifd/proto/ncm.sh")
+end
+
+function proto.is_floating(self)
+ return true
+end
+
+function proto.is_virtual(self)
+ return true
+end
+
+function proto.get_interface(self)
+ local _ifname=netmod.protocol.ifname(self)
+ if not _ifname then
+ _ifname = "wan"
+ end
+ return interface(_ifname, self)
+end
+
+function proto.get_interfaces(self)
+ return nil
+end
+
+function proto.contains_interface(self, ifc)
+ return (netmod:ifnameof(ifc) == self:ifname())
+end
+
+netmod:register_pattern_virtual("^ncm-%%w")
diff --git a/protocols/luci-proto-vpnc/Makefile b/protocols/luci-proto-vpnc/Makefile
index 9c77e67a5c..0800e279fe 100644
--- a/protocols/luci-proto-vpnc/Makefile
+++ b/protocols/luci-proto-vpnc/Makefile
@@ -10,9 +10,6 @@ LUCI_TITLE:=Support for VPNC VPN
LUCI_DEPENDS:=+vpnc
LUCI_PKGARCH:=all
-PKG_NAME:=luci-proto-vpnc
-PKG_RELEASE=1
-PKG_VERSION:=1.0.0
PKG_MAINTAINER:=Daniel Dickinson <openwrt@daniel.thecshore.com>
PKG_LICENSE:=Apache-2.0
@@ -20,4 +17,4 @@ LUA_TARGET:=source
include ../../luci.mk
-# call BuildPackage - OpenWrt buildroot signature \ No newline at end of file
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/protocols/luci-proto-wireguard/Makefile b/protocols/luci-proto-wireguard/Makefile
index ed94a557b6..0dc70cf31e 100644
--- a/protocols/luci-proto-wireguard/Makefile
+++ b/protocols/luci-proto-wireguard/Makefile
@@ -8,6 +8,7 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Support for WireGuard VPN
LUCI_DEPENDS:=+kmod-wireguard +wireguard-tools
+LUCI_PKGARCH:=all
PKG_MAINTAINER:=Dan Luedtke <mail@danrl.com>
diff --git a/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua b/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua
index d950081197..11ef10b5a7 100644
--- a/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua
+++ b/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua
@@ -19,7 +19,7 @@ private_key = section:taboption(
translate("Required. Base64-encoded private key for this interface.")
)
private_key.password = true
-private_key.datatype = "and(base64,rangelength(44, 44))"
+private_key.datatype = "and(base64,rangelength(44,44))"
private_key.optional = false
@@ -81,10 +81,22 @@ preshared_key = section:taboption(
"cryptography for post-quantum resistance.")
)
preshared_key.password = true
-preshared_key.datatype = "and(base64,rangelength(44, 44))"
+preshared_key.datatype = "and(base64,rangelength(44,44))"
preshared_key.optional = true
+fwmark = section:taboption(
+ "advanced",
+ Value,
+ "fwmark",
+ translate("Firewall Mark"),
+ translate("Optional. 32-bit mark for outgoing encrypted packets. " ..
+ "Enter value in hex, starting with <code>0x</code>.")
+)
+fwmark.datatype = "hex(4)"
+fwmark.optional = true
+
+
-- peers -----------------------------------------------------------------------
peers = map:section(
@@ -105,7 +117,7 @@ public_key = peers:option(
translate("Public Key"),
translate("Required. Base64-encoded public key of peer.")
)
-public_key.datatype = "and(base64,rangelength(44, 44))"
+public_key.datatype = "and(base64,rangelength(44,44))"
public_key.optional = false
@@ -155,5 +167,5 @@ persistent_keepalive = peers:option(
translate("Optional. Seconds between keep alive messages. " ..
"Default is 0 (disabled). Recommended value if " ..
"this device is behind a NAT is 25."))
-persistent_keepalive.datatype = "range(0, 65535)"
+persistent_keepalive.datatype = "range(0,65535)"
persistent_keepalive.placeholder = "0"
diff --git a/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm b/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm
index 6f09bfcdfa..78b98e0355 100644
--- a/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm
+++ b/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm
@@ -201,5 +201,12 @@
</div>
<%- end -%>
+ <noscript>
+ <div class="alert-message warning">
+ <strong><%:JavaScript required!%></strong><br />
+ <%:You must enable JavaScript in your browser or LuCI will not work properly.%>
+ </div>
+ </noscript>
+
<div id="maincontent" class="container">
<% if category then render_tabmenu(category, cattree) end %>
diff --git a/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm b/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm
index 20a41be855..b4534090fb 100644
--- a/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm
+++ b/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm
@@ -216,8 +216,8 @@ if tree.nodes[category] and tree.nodes[category].ucidata then
<% if category ~= "freifunk" and category ~= "splash" then %>
<noscript>
<div class="errorbox">
- <strong><%:Java Script required!%></strong><br />
- <%:You must enable Java Script in your browser or LuCI will not work properly.%>
+ <strong><%:JavaScript required!%></strong><br />
+ <%:You must enable JavaScript in your browser or LuCI will not work properly.%>
</div>
</noscript>
<% end %>
diff --git a/themes/luci-theme-material/luasrc/view/themes/material/header.htm b/themes/luci-theme-material/luasrc/view/themes/material/header.htm
index 8419ade76d..d84fd278a2 100755..100644
--- a/themes/luci-theme-material/luasrc/view/themes/material/header.htm
+++ b/themes/luci-theme-material/luasrc/view/themes/material/header.htm
@@ -2,14 +2,14 @@
Material is a clean HTML5 theme for LuCI. It is based on luci-theme-bootstrap and MUI
luci-theme-material
- Copyright 2015 Lutty Yang <lutty@wcan.in>
+ Copyright 2015-2017 Lutty Yang <lutty@wcan.in>
Have a bug? Please create an issue here on GitHub!
https://github.com/LuttyYang/luci-theme-material/issues
luci-theme-bootstrap:
Copyright 2008 Steven Barth <steven@midlink.org>
- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Copyright 2008-2016 Jo-Philipp Wich <jow@openwrt.org>
Copyright 2012 David Menting <david@nut-bolt.nl>
MUI:
@@ -19,7 +19,6 @@
-%>
<%
- local ver = require "luci.version"
local sys = require "luci.sys"
local util = require "luci.util"
local http = require "luci.http"
@@ -51,30 +50,27 @@
end
end
- -- send as HTML5
+ -- send as HTML5
http.prepare_content("text/html")
local function nodeurl(prefix, name, query)
- local url = controller .. prefix .. name .. "/"
+ local u = url(prefix, name)
if query then
- url = url .. http.build_querystring(query)
+ u = u .. http.build_querystring(query)
end
- return pcdata(url)
+ return pcdata(u)
end
- local function subtree(prefix, node, level)
+ local function render_tabmenu(prefix, node, level)
if not level then
level = 1
end
local childs = disp.node_childs(node)
if #childs > 0 then
-
- if level > 2 then
-%>
- <ul class="tabs">
- <%
- end
+ if level > 2 then
+ write('<ul class="tabs">')
+ end
local selected_node
local selected_name
@@ -86,21 +82,100 @@
selected_node = nnode
selected_name = v
end
- if level > 2 then
- %>
- <li class="tabmenu-item-<%=v%><%- if nnode._menu_selected or (node.leaf and v == leaf) then %> active<% end %>">
- <a href="<%=nodeurl(prefix, v, nnode.query)%>"><%=striptags(translate(nnode.title))%></a>
- </li>
- <% end
+
+ if level > 2 then
+ write('<li class="tabmenu-item-%s %s"><a href="%s">%s</a></li>' %{
+ v, (nnode._menu_selected or (node.leaf and v == leaf)) and 'active' or '',
+ nodeurl(prefix, v, nnode.query),
+ striptags(translate(nnode.title))
+ })
+ end
end
- if level > 2 then
- %>
- </ul>
-<% end
+ if level > 2 then
+ write('</ul>')
+ end
if selected_node then
- subtree(prefix .. selected_name .. "/", selected_node, level + 1)
+ render_tabmenu(prefix .. "/" .. selected_name, selected_node, level + 1)
+ end
+ end
+ end
+
+ local function render_submenu(prefix, node)
+ local childs = disp.node_childs(node)
+ if #childs > 0 then
+ write('<ul class="slide-menu">')
+
+ for i, r in ipairs(childs) do
+ local nnode = node.nodes[r]
+ local title = pcdata(striptags(translate(nnode.title)))
+
+ write('<li><a data-title="%s" href="%s">%s</a></li>' %{
+ title,
+ nodeurl(prefix, r, nnode.query),
+ title
+ })
+ end
+
+ write('</ul>')
+ end
+ end
+
+ local function render_topmenu()
+ local childs = disp.node_childs(cattree)
+ if #childs > 0 then
+ write('<ul class="nav">')
+
+ for i, r in ipairs(childs) do
+ local nnode = cattree.nodes[r]
+ local grandchildren = disp.node_childs(nnode)
+
+ if #grandchildren > 0 then
+ local title = pcdata(striptags(translate(nnode.title)))
+
+ write('<li class="slide"><a class="menu" data-title="%s" href="#">%s</a>' %{
+ title,
+ title
+ })
+
+ render_submenu(category .. "/" .. r, nnode)
+ write('</li>')
+ else
+ local title = pcdata(striptags(translate(nnode.title)))
+
+ write('<li><a data-title="%s" href="%s">%s</a></li>' %{
+ title,
+ nodeurl(category, r, nnode.query),
+ title
+ })
+ end
+ end
+
+ write('</ul>')
+ end
+ end
+
+ local function render_changes()
+ -- calculate the number of unsaved changes
+ if tree.nodes[category] and tree.nodes[category].ucidata then
+ local ucichanges = 0
+
+ for i, j in pairs(require("luci.model.uci").cursor():changes()) do
+ for k, l in pairs(j) do
+ for m, n in pairs(l) do
+ ucichanges = ucichanges + 1;
+ end
+ end
+ end
+
+ if ucichanges > 0 then
+ write('<a class="label notice" href="%s?redir=%s">%s: %d</a>' %{
+ url(category, 'uci/changes'),
+ http.urlencode(http.formvalue('redir') or REQUEST_URI),
+ translate('Unsaved Changes'),
+ ucichanges
+ })
end
end
end
@@ -134,96 +209,30 @@
<link rel="stylesheet" href="<%=resource%>/<%=node.css%>">
<% end -%>
<% if css then %>
- <style title="text/css">
- <%-= css %>
- </style>
+ <style title="text/css"><%= css %></style>
<% end -%>
<script src="<%=resource%>/xhr.js"></script>
</head>
-
<body class="lang_<%=luci.i18n.context.lang%> <%- if node then %><%= striptags( node.title ) %><%- end %> <% if luci.dispatcher.context.authsession then %>logged-in<% end %>">
-
<header>
<div class="container">
<span class="showSide"></span>
<a class="brand" href="#"><%=boardinfo.hostname or "?"%></a>
<div class="pull-right">
- <%
- -- calculate the number of unsaved changes
- if tree.nodes[category] and tree.nodes[category].ucidata then
- local ucichanges = 0
- for i, j in pairs(require("luci.model.uci").cursor():changes()) do
- for k, l in pairs(j) do
- for m, n in pairs(l) do
- ucichanges = ucichanges + 1;
- end
- end
- end
- %>
- <% if ucichanges > 0 then %>
- <a class="label notice" href="<%=controller%>/<%=category%>/uci/changes?redir=<%=http.urlencode(http.formvalue("redir") or REQUEST_URI)%>"><span class="mobile-hide"><%:Unsaved Changes%>: </span><%=ucichanges%></a>
- <% end %>
+ <% render_changes() %>
<span id="xhr_poll_status" style="display:none" onclick="XHR.running() ? XHR.halt() : XHR.run()">
- <span class="label success" id="xhr_poll_status_on"><span class="mobile-hide"><%:Auto Refresh%> </span><%:on%></span>
- <span class="label" id="xhr_poll_status_off" style="display:none"><span class="mobile-hide"><%:Auto Refresh%> </span><%:off%></span>
+ <span class="label success" id="xhr_poll_status_on"><span class="mobile-hide"><%:Auto Refresh%></span> <%:on%></span>
+ <span class="label" id="xhr_poll_status_off" style="display:none"><span class="mobile-hide"><%:Auto Refresh%></span> <%:off%></span>
</span>
- <% end %>
</div>
</div>
</header>
-
- <div class="main">
+<div class="main">
<div style="" class="loading"><span><div class="loading-img"></div>Loading...</span></div>
<div class="main-left">
- <ul class="nav">
- <%-
- local function submenu(prefix, node)
- local childs = disp.node_childs(node)
- if #childs > 0 then
- %>
- <ul class="slide-menu">
- <%-
- for i, r in ipairs(childs) do
- local nnode = node.nodes[r]
- local href = controller .. prefix .. r ..
- (nnode.query and http.build_querystring(nnode.query) or "")
- %>
- <li><a data-title="<%=pcdata(striptags(nnode.title))%>" href="<%=pcdata(href)%>"><%=pcdata(striptags(translate(nnode.title)))%></a></li>
- <%-
- end
- %>
- </ul>
- <%-
- end
- end
-
- childs = disp.node_childs(cattree)
-
- if #childs > 0 then
- for i, r in ipairs(childs) do
- local nnode = cattree.nodes[r]
- local href = controller .. "/" .. category .. "/" .. r ..
- (nnode.query and http.build_querystring(k.query) or "")
- local grandchildren = disp.node_childs(nnode)
-
- if #grandchildren > 0 then
- %>
- <li class="slide">
- <a class="menu" data-title="<%=pcdata(striptags(nnode.title))%>" href="#"><%=pcdata(striptags(translate(nnode.title)))%></a>
- <%- submenu(category .. "/" .. r .. "/", nnode) %>
- </li>
- <% else %>
- <li>
- <a data-title="<%=pcdata(striptags(nnode.title))%>" href="<%=pcdata(href)%>"><%=pcdata(striptags(translate(nnode.title)))%></a>
- </li>
- <%
- end
- end
- end
- %>
- </ul>
+ <% render_topmenu() %>
</div>
- <div class="main-right">
+ <div class="main-right">
<div class="darkMask"></div>
<div id="maincontent">
<div class="container">
@@ -234,5 +243,11 @@
<a href="<%=pcdata(luci.dispatcher.build_url("admin/system/admin"))%>"><%:Go to password configuration...%></a>
</div>
<%- end -%>
- <% if category then subtree("/" .. category .. "/", cattree) end %>
-
+ <% if category then render_tabmenu(category, cattree) end %>
+
+ <noscript>
+ <div class="alert-message warning">
+ <strong><%:JavaScript required!%></strong><br />
+ <%:You must enable JavaScript in your browser or LuCI will not work properly.%>
+ </div>
+ </noscript>
diff --git a/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm b/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm
index 505e64b958..ae348f3856 100644
--- a/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm
+++ b/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm
@@ -179,8 +179,8 @@
<div id="maincontent">
<noscript>
<div class="errorbox">
- <strong><%:Java Script required!%></strong><br />
- <%:You must enable Java Script in your browser or LuCI will not work properly.%>
+ <strong><%:JavaScript required!%></strong><br />
+ <%:You must enable JavaScript in your browser or LuCI will not work properly.%>
</div>
</noscript>